<?xml version = '1.0' encoding = 'ISO-8859-1' ?>
<!-- <!DOCTYPE XMI SYSTEM 'Model1311.DTD' > -->
<XMI xmi.version = '1.1' xmlns:Model='omg.org/mof.Model/1.3' timestamp = 'Mon May 06 16:42:16 2002' >
 <XMI.header>
  <XMI.documentation>
   <XMI.exporter>Unisys.JCR.1</XMI.exporter>
   <XMI.exporterVersion>1.3.2</XMI.exporterVersion>
  </XMI.documentation>
  <XMI.metamodel xmi.name = 'org.omg.mof.Model' xmi.version = '1.3'/>
 </XMI.header>
<XMI.content>
<!-- ==================== Core    [Package] ==================== -->
<Model:Package xmi.id = 'a3A6600C5031F' 
  name = 'Core' 
  isRoot = 'false' isLeaf = 'false' isAbstract = 'false' visibility = 'public_vis' >
  <Model:ModelElement.annotation>The Core metamodel depends on no other packages.

The ObjectModel Core metamodel contains basic metamodel classes and associations used by all other CWM metamodel packages, including other ObjectModel packages

OCL Representation of Core Constraints

Operations

The operation allFeatures results in a Set containing all Features of the Classifier itself and all its inherited Features.
   allFeatures : Set(Feature);
   allFeatures = self.feature-&gt;union(self.parent.oclAsType(Classifier).allFeatures)

The operation allAttributes results in a Set containing all Attributes of the Classifier itself and all its inherited Attributes.
   allAttributes : set(Attribute);
   allAttributes = self.allFeatures-&gt;select(f | f.oclIsKindOf(Attribute))

The operation specification yields the set of Classifiers that the current Classifier realizes.
   specification: Set(Classifier)
   specification = self.clientDependency-&gt;
   select(d | d.stereotype.name = "realization"
      and d.supplier.oclIsKindOf(Classifier)).supplier.oclAsType(Classifier)

The operation parent returns a Set containing all direct parents of a Classifier.
   parent : Set(Classifier);
   parent = self.generalization.parent

The operation allParents returns a Set containing all the Classifiers inherited by this Classifier (the transitive closure), excluding the Classifier itself.
   allParents : Set(Classifier);
   allParents = self.parent-&gt;union(self.parent.allParents)

The operation allContents returns a Set containing all ModelElements contained in the Classifier together with the contents inherited from its parents.
   allContents : Set(ModelElement);
   allContents = self.contents-&gt;union(self.parent.allContents-&gt;
   select(e | e.elementOwnership.visibility = #public or 
      e.elementOwnership.visibility = #protected))

The operation supplier results in a Set containing all direct suppliers of the ModelElement.
   supplier : Set(ModelElement);
   supplier = self.clientDependency.supplier

The operation allSuppliers results in a Set containing all the ModelElements that are suppliers of this ModelElement, including the suppliers of these Model Elements. This is the transitive closure.
   allSuppliers : Set(ModelElement);
   allSuppliers = self.supplier-&gt;union(self.supplier.allSuppliers)

The operation contents results in a Set containing all ModelElements contained by the Namespace.
   contents : Set(ModelElement)
   contents = self.ownedElement -&gt; union(self.namespace.contents)

The operation allContents results in a Set containing all ModelElements contained by the Namespace.
   allContents : Set(ModelElement);
   allContents = self.contents

The operation allVisibleElements results in a Set containing all ModelElements visible outside of the Namespace.
   allVisibleElements : Set(ModelElement)
   allVisibleElements = self.allContents -&gt; select(e |
      e.elementOwnership.visibility = #public)

The operation allSurroundingNamespaces results in a Set containing all surrounding Namespaces.
   allSurroundingNamespaces : Set(Namespace)
   allSurroundingNamespaces =
      self.namespace-&gt;union(self.namespace.allSurroundingNamespaces)

The operation contents results in a Set containing the ModelElements owned by or imported by the Package.
   contents : Set(ModelElement)
   contents = self.ownedElement-&gt;union(self.importedElement)

The operation allImportedElements results in a Set containing the ModelElements imported by the Package.
   allImportedElements : Set(ModelElement)
   allImportedElements = self.importedElement

The operation allContents results in a Set containing the ModelElements owned by or imported by the Package.
   allContents : Set(ModelElement)
   allContents = self.contents

Constraints

[C-3-1] A Constraint cannot be applied to itself.
context Constraint inv:
not self.constrainedElement-&gt;includes (self)

[C-3-2] A DataType cannot contain any other ModelElements.
context DataType inv:
self.ownedElement-&gt;isEmpty

[C-3-3] Tags associated with a model element (directly via a property list or indirectly via a stereotype) must not clash with any meta attributes associated with the model element.
context ModelElement inv:
-- cannot be specified with OCL</Model:ModelElement.annotation>
  <Model:Namespace.contents>
    <!-- ==================== Core.org.omg.mof.idl_prefix=org.omg.cwm.objectmodel    [Tag] ==================== -->
    <Model:Tag xmi.id = 'G.837' 
      name = 'org.omg.mof.idl_prefix=org.omg.cwm.objectmodel' annotation = '' 
      tagId = 'org.omg.mof.idl_prefix' 
      elements = 'a3A6600C5031F' >
      <Model:Tag.values>
        <XMI.any xmi.type = 'string' xmi.name = ''>org.omg.cwm.objectmodel</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Core.org.omg.xmi.namespace=CWM    [Tag] ==================== -->
    <Model:Tag xmi.id = 'G.838' 
      name = 'org.omg.xmi.namespace=CWM' annotation = '' 
      tagId = 'org.omg.xmi.namespace' 
      elements = 'a3A6600C5031F' >
      <Model:Tag.values>
        <XMI.any xmi.type = 'string' xmi.name = ''>CWM</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Core.org.omg.mof.idl_substitute_name=CoreModule    [Tag] ==================== -->
    <Model:Tag xmi.id = 'G.839' 
      name = 'org.omg.mof.idl_substitute_name=CoreModule' annotation = '' 
      tagId = 'org.omg.mof.idl_substitute_name' 
      elements = 'a3A6600C5031F' >
      <Model:Tag.values>
        <XMI.any xmi.type = 'string' xmi.name = ''>CoreModule</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Core.com.urep.jcr.java_prefix=org.omg.java.cwm.objectmodel    [Tag] ==================== -->
    <Model:Tag xmi.id = 'G.840' 
      name = 'com.urep.jcr.java_prefix=org.omg.java.cwm.objectmodel' annotation = '' 
      tagId = 'com.urep.jcr.java_prefix' 
      elements = 'a3A6600C5031F' >
      <Model:Tag.values>
        <XMI.any xmi.type = 'string' xmi.name = ''>org.omg.java.cwm.objectmodel</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Core.Element    [Class] ==================== -->
    <Model:Class xmi.id = 'a327A5C330208' 
      name = 'Element' 
      isRoot = 'false' isLeaf = 'false' isAbstract = 'true' visibility = 'public_vis' 
      isSingleton = 'false' >
      <Model:ModelElement.annotation>An element is an atomic constituent of a model. In the metamodel, an Element is the top metaclass in the metaclass hierarchy. Element is an abstract metaclass.
</Model:ModelElement.annotation>
    </Model:Class>
    <!-- ==================== Core.ModelElement    [Class] ==================== -->
    <Model:Class xmi.id = 'a327A5C7301CC' 
      name = 'ModelElement' 
      isRoot = 'false' isLeaf = 'false' isAbstract = 'true' visibility = 'public_vis' 
      isSingleton = 'false' 
      supertypes = 'a327A5C330208' >
      <Model:ModelElement.annotation>A model element is an element that is an abstraction drawn from the system being modeled.

In the metamodel, a ModelElement is a named entity in a Model. It is the base for all modeling metaclasses in the CWM. All other modeling metaclasses are either direct or indirect subclasses of ModelElement.</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== Core.ModelElement.name    [Attribute] ==================== -->
        <Model:Attribute xmi.id = 'a335D4BA70064' 
          name = 'name' annotation = 'An identifier for the ModelElement within its containing Namespace.' 
          scope = 'instance_level' visibility = 'public_vis' 
          isChangeable = 'true' 
          isDerived = 'false' 
          type = 'a33DD6FCF03C0' >
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower = '1' upper = '1' is_ordered = 'false' is_unique = 'false' />
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Core.ModelElement.visibility    [Attribute] ==================== -->
        <Model:Attribute xmi.id = 'a3717C111037E' 
          name = 'visibility' annotation = 'Specifies extent of the visibility of the ModelElement within its owning Namespace.' 
          scope = 'instance_level' visibility = 'public_vis' 
          isChangeable = 'true' 
          isDerived = 'false' 
          type = 'a3A705EFD0201' >
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower = '1' upper = '1' is_ordered = 'false' is_unique = 'false' />
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Core.ModelElement.clientDependency    [Reference] ==================== -->
        <Model:Reference xmi.id = 'a3A6722070063' 
          name = 'clientDependency' annotation = '' 
          scope = 'instance_level' visibility = 'public_vis' 
          isChangeable = 'true' 
          type = 'a327A646F00E6' 
          referencedEnd = 'a33FFE57B03B3' >
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower = '0' upper = '-1' is_ordered = 'false' is_unique = 'true' />
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Core.ModelElement.constraint    [Reference] ==================== -->
        <Model:Reference xmi.id = 'a3A6722040380' 
          name = 'constraint' annotation = '' 
          scope = 'instance_level' visibility = 'public_vis' 
          isChangeable = 'true' 
          type = 'a327A649B000A' 
          referencedEnd = 'a33EA67BB010F' >
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower = '0' upper = '-1' is_ordered = 'false' is_unique = 'true' />
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Core.ModelElement.importer    [Reference] ==================== -->
        <Model:Reference xmi.id = 'a3A4247EA0376' 
          name = 'importer' annotation = '' 
          scope = 'instance_level' visibility = 'public_vis' 
          isChangeable = 'true' 
          type = 'a327A5D19033E' 
          referencedEnd = 'a3A423EFE02DA' >
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower = '0' upper = '-1' is_ordered = 'false' is_unique = 'true' />
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Core.ModelElement.namespace    [Reference] ==================== -->
        <Model:Reference xmi.id = 'a396A41850138' 
          name = 'namespace' annotation = '' 
          scope = 'instance_level' visibility = 'public_vis' 
          isChangeable = 'true' 
          type = 'a32B69F3A0118' 
          referencedEnd = 'a3A2C18630036' >
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower = '0' upper = '1' is_ordered = 'false' is_unique = 'false' />
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Core.ModelElement.taggedValue    [Reference] ==================== -->
        <Model:Reference xmi.id = 'a3BB4EC020043' 
          name = 'taggedValue' annotation = '' 
          scope = 'instance_level' visibility = 'public_vis' 
          isChangeable = 'true' 
          type = 'a337A4EF7002C' 
          referencedEnd = 'a33E901E10028' >
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower = '0' upper = '-1' is_ordered = 'false' is_unique = 'true' />
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Core.com.urep.jcr.mof.object_name=true    [Tag] ==================== -->
    <Model:Tag xmi.id = 'G.841' 
      name = 'com.urep.jcr.mof.object_name=true' annotation = '' 
      tagId = 'com.urep.jcr.mof.object_name' 
      elements = 'a335D4BA70064 a33E901140334' >
      <Model:Tag.values>
        <XMI.any xmi.type = 'string' xmi.name = ''>true</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Core.Namespace    [Class] ==================== -->
    <Model:Class xmi.id = 'a32B69F3A0118' 
      name = 'Namespace' 
      isRoot = 'false' isLeaf = 'false' isAbstract = 'true' visibility = 'public_vis' 
      isSingleton = 'false' 
      supertypes = 'a327A5C7301CC' >
      <Model:ModelElement.annotation>A namespace is a part of a model that contains a set of ModelElements each of whose
names designates a unique element within the namespace. 

In the metamodel, a Namespace is a ModelElement that can own other ModelElements, such as Classifiers. The name of each owned ModelElement must be unique within the Namespace. Moreover, each contained ModelElement is owned by at most one Namespace. The concrete subclasses of Namespace may have additional constraints on which kind of elements may be contained. 

Namespace is an abstract metaclass.

Note that explicit parts of a model element, such as the features of a Classifier, are not modeled as owned elements in a namespace. A namespace is used for unstructured contents such as the contents of a  package, or a class declared inside the scope of another class.</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== Core.Namespace.ownedElement    [Reference] ==================== -->
        <Model:Reference xmi.id = 'a396A44E502DE' 
          name = 'ownedElement' annotation = '' 
          scope = 'instance_level' visibility = 'public_vis' 
          isChangeable = 'true' 
          type = 'a327A5C7301CC' 
          referencedEnd = 'a3A2C186203A1' >
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower = '0' upper = '-1' is_ordered = 'false' is_unique = 'true' />
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Core.Classifier    [Class] ==================== -->
    <Model:Class xmi.id = 'a32989FB2023D' 
      name = 'Classifier' 
      isRoot = 'false' isLeaf = 'false' isAbstract = 'true' visibility = 'public_vis' 
      isSingleton = 'false' 
      supertypes = 'a32B69F3A0118' >
      <Model:ModelElement.annotation>A classifier is an element that describes structural and behavioral features; it comes in several specific forms, including class, data type, interface, component, and others that are defined in other metamodel packages.

Classifier is often used as a type.

In the metamodel, a Classifier may declare a collection of Features, such as Attributes, Operations and Methods. It has a name, which is unique in the Namespace enclosing the Classifier. Classifier is an abstract metaclass.

Classifier is a child of Namespace. As a Namespace, a Classifier may declare other Classifiers nested in its scope. Nested Classifiers may be accessed by other Classifiers only if the nested Classifiers have adequate visibility. There are no data value or state consequences of nested Classifiers, i.e., it is not an aggregation or composition.</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== Core.Classifier.isAbstract    [Attribute] ==================== -->
        <Model:Attribute xmi.id = 'a3A6CAF830372' 
          name = 'isAbstract' annotation = 'An abstract Classifier is not instantiable.' 
          scope = 'instance_level' visibility = 'public_vis' 
          isChangeable = 'true' 
          isDerived = 'false' 
          type = 'a33DD6F650276' >
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower = '1' upper = '1' is_ordered = 'false' is_unique = 'false' />
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Core.Classifier.feature    [Reference] ==================== -->
        <Model:Reference xmi.id = 'a396A45340213' 
          name = 'feature' annotation = '' 
          scope = 'instance_level' visibility = 'public_vis' 
          isChangeable = 'true' 
          type = 'a32989F9700FE' 
          referencedEnd = 'a32B5D7EF03DD' >
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower = '0' upper = '-1' is_ordered = 'true' is_unique = 'true' />
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Core.Class    [Class] ==================== -->
    <Model:Class xmi.id = 'a3298A02900FE' 
      name = 'Class' 
      isRoot = 'false' isLeaf = 'false' isAbstract = 'false' visibility = 'public_vis' 
      isSingleton = 'false' 
      supertypes = 'a32989FB2023D' >
      <Model:ModelElement.annotation>A class is a description of a set of objects that share the same attributes, operations, methods, relationships, and semantics. A class may use a set of interfaces to specify collections of operations it provides to its environment. In the metamodel, a Class describes a set of objects sharing a collection of Features that are common to the set of objects.

The purpose of a Class is to declare a collection of Features that fully describe the structure and behavior of objects. Some Classes may not be directly instantiated. These Classes are said to be abstract and exist only for other Classes to inherit and reuse the Features declared by them. No object may be a direct instance of an abstract Class, although an object may be an indirect instance of one through a subclass that is non-abstract.

A Class acts as the namespace for various kinds of contained elements defined within its scope, including classes, interfaces and associations (note that this is purely a scoping construction and does not imply anything about aggregation). The contained classes can be used as ordinary classes in the container class. If a class inherits another class, the contents of the ancestor are available to its descendents if the visibility of an element is public or protected; however, if the visibility is private, then the element is not visible and therefore not available in the descendant.</Model:ModelElement.annotation>
    </Model:Class>
    <!-- ==================== Core.DataType    [Class] ==================== -->
    <Model:Class xmi.id = 'a3298A036025B' 
      name = 'DataType' 
      isRoot = 'false' isLeaf = 'false' isAbstract = 'false' visibility = 'public_vis' 
      isSingleton = 'false' 
      supertypes = 'a32989FB2023D' >
      <Model:ModelElement.annotation>A data type is a type whose values have no identity (i.e., they are pure values). Data types include primitive built-in types (such as integer and string) as well as definable enumeration types.

In the metamodel, a DataType defines a special kind of Classifier in which operations are all pure functions (i.e., they can return data values but they cannot change data values, because they have no identity). For example, an "add" operation on a number with another number as an argument yields a third number as a result; the target and argument are unchanged.

A DataType is a special kind of Classifier whose instances are primitive values, not objects. For example, integers and strings are usually treated as primitive values. A primitive value does not have an identity, so two occurrences of the same value cannot be differentiated. Usually, DataTypes are used for specification of the type of an attribute or parameter.</Model:ModelElement.annotation>
    </Model:Class>
    <!-- ==================== Core.Package    [Class] ==================== -->
    <Model:Class xmi.id = 'a327A5D19033E' 
      name = 'Package' 
      isRoot = 'false' isLeaf = 'false' isAbstract = 'false' visibility = 'public_vis' 
      isSingleton = 'false' 
      supertypes = 'a32B69F3A0118' >
      <Model:ModelElement.annotation>A package is a grouping of model elements.

In the metamodel, Package is a subclass of Namespace. A Package contains ModelElements such as Packages and Classifiers. A Package may also contain Constraints and Dependencies between ModelElements of the Package.

The purpose of the package construct is to provide a general grouping mechanism. In fact, its only semantics is to define a namespace for its contents. The package construct can be used for organizing elements for any purpose; the criteria to use for grouping elements together into one package are not defined.

A package owns a set of model elements, with the implication that if the package is removed from the model, so are the elements owned by the package. Elements with names, such as classifiers, that are owned by the same package must have unique names within the package, although elements in different packages may have the same name.

There may be relationships between elements contained in the same package, and between an element in one package and an element in a surrounding package at any level. In other words, elements &#x0093;see&#x0094; all the way out through nested levels of packages.

Elements in peer packages, however, are encapsulated and are not a priori visible to each other. The same goes for elements in contained packages, i.e. packages do not see "inwards".

Elements owned by a Package can be made available to other Packages by importing
them. Although any ModelElement may be imported by a Package, imported
ModelElements are typically other Packages. When an element is imported by a
package it extends the namespace of that package. Thus the elements available in a
Package consists of its owned and imported ModelElements.</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== Core.Package.importedElement    [Reference] ==================== -->
        <Model:Reference xmi.id = 'a3A24439702FF' 
          name = 'importedElement' annotation = '' 
          scope = 'instance_level' visibility = 'public_vis' 
          isChangeable = 'true' 
          type = 'a327A5C7301CC' 
          referencedEnd = 'a3A423EFE025D' >
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower = '0' upper = '-1' is_ordered = 'false' is_unique = 'true' />
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Core.Subsystem    [Class] ==================== -->
    <Model:Class xmi.id = 'a33CD6DE5030C' 
      name = 'Subsystem' 
      isRoot = 'false' isLeaf = 'false' isAbstract = 'false' visibility = 'public_vis' 
      isSingleton = 'false' 
      supertypes = 'a327A5D19033E a32989FB2023D' >
      <Model:ModelElement.annotation>A subsystem is a grouping of model elements that represents a behavioral unit in a physical system. A subsystem offers interfaces and has operations.

In the metamodel, Subsystem is a subclass of both Package and Classifier. As such it may have a set of Features.

The purpose of the subsystem construct is to provide a grouping mechanism for specifying a behavioral unit of a physical system. Apart from defining a namespace for its contents, a subsystem serves as a specification unit for the behavior of its contained model elements.

The contents of a subsystem is defined in the same way as for a package, thus it
consists of owned elements and imported elements, with unique names within the
subsystem.</Model:ModelElement.annotation>
    </Model:Class>
    <!-- ==================== Core.Model    [Class] ==================== -->
    <Model:Class xmi.id = 'a327A5D1E0032' 
      name = 'Model' 
      isRoot = 'false' isLeaf = 'false' isAbstract = 'false' visibility = 'public_vis' 
      isSingleton = 'false' 
      supertypes = 'a327A5D19033E' >
      <Model:ModelElement.annotation>A model captures a view of a physical system. It is an abstraction of the physical system, with a certain purpose. The model completely describes those aspects of the physical system that are relevant to the purpose of the model, at the appropriate level of detail.

In the metamodel, Model is a subclass of Package. It contains a containment hierarchy of ModelElements that together describe the physical system. A Model also contains a set of ModelElements that represents the environment of the system. 

Different Models can be defined for the same physical system, where each model represents a view of the physical system defined by its purpose and abstraction level, e.g. an analysis model, a design model, an implementation model. Typically different models are complementary and defined from the perspectives (viewpoints) of different system stakeholders.</Model:ModelElement.annotation>
    </Model:Class>
    <!-- ==================== Core.Feature    [Class] ==================== -->
    <Model:Class xmi.id = 'a32989F9700FE' 
      name = 'Feature' 
      isRoot = 'false' isLeaf = 'false' isAbstract = 'true' visibility = 'public_vis' 
      isSingleton = 'false' 
      supertypes = 'a327A5C7301CC' >
      <Model:ModelElement.annotation>A feature is a property, like attribute or operation, which is encapsulated within a Classifier.

In the metamodel, a Feature declares a structural or behavioral characteristic of an instance of a Classifier or of the Classifier itself. Feature is an abstract metaclass.</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== Core.Feature.ownerScope    [Attribute] ==================== -->
        <Model:Attribute xmi.id = 'a31653E23032A' 
          name = 'ownerScope' annotation = 'Specifies whether the Feature appears in every instance of the Classifier or whether it appears only once for the entire Classifier.' 
          scope = 'instance_level' visibility = 'public_vis' 
          isChangeable = 'true' 
          isDerived = 'false' 
          type = 'a33DD7020032A' >
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower = '0' upper = '1' is_ordered = 'false' is_unique = 'false' />
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Core.Feature.owner    [Reference] ==================== -->
        <Model:Reference xmi.id = 'a396A45E803C8' 
          name = 'owner' annotation = '' 
          scope = 'instance_level' visibility = 'public_vis' 
          isChangeable = 'true' 
          type = 'a32989FB2023D' 
          referencedEnd = 'a32B5D7EF03D3' >
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower = '0' upper = '1' is_ordered = 'false' is_unique = 'false' />
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Core.StructuralFeature    [Class] ==================== -->
    <Model:Class xmi.id = 'a3298F1A403BF' 
      name = 'StructuralFeature' 
      isRoot = 'false' isLeaf = 'false' isAbstract = 'true' visibility = 'public_vis' 
      isSingleton = 'false' 
      supertypes = 'a32989F9700FE' >
      <Model:ModelElement.annotation>A structural feature refers to a static feature of a model element.

In the metamodel, a StructuralFeature declares a structural aspect of a Classifier that is typed, such as an attribute. For example, it specifies the multiplicity and changeability of the StructuralFeature. StructuralFeature is an abstract metaclass.</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== Core.StructuralFeature.changeability    [Attribute] ==================== -->
        <Model:Attribute xmi.id = 'a3163DE07014A' 
          name = 'changeability' annotation = 'Specifies whether the value may be modified after the object is created.' 
          scope = 'instance_level' visibility = 'public_vis' 
          isChangeable = 'true' 
          isDerived = 'false' 
          type = 'a33DD6F820208' >
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower = '1' upper = '1' is_ordered = 'false' is_unique = 'false' />
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Core.StructuralFeature.multiplicity    [Attribute] ==================== -->
        <Model:Attribute xmi.id = 'a32B6AEA8032B' 
          name = 'multiplicity' annotation = 'The possible number of data values for the feature that may be held by an instance. The cardinality of the set of values is an implicit part of the feature. In the common case in which the multiplicity is 1..1, then the feature is a scalar (i.e., it holds exactly one value).' 
          scope = 'instance_level' visibility = 'public_vis' 
          isChangeable = 'true' 
          isDerived = 'false' 
          type = 'a33DD6FC5001E' >
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower = '0' upper = '1' is_ordered = 'false' is_unique = 'false' />
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Core.StructuralFeature.ordering    [Attribute] ==================== -->
        <Model:Attribute xmi.id = 'a3A6F5A180348' 
          name = 'ordering' annotation = 'Specifies whether the set of instances is ordered. The ordering must be determined and maintained by Operations that add values to the feature. This property is only relevant if the multiplicity is greater than one.' 
          scope = 'instance_level' visibility = 'public_vis' 
          isChangeable = 'true' 
          isDerived = 'false' 
          type = 'a36619BC301D6' >
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower = '0' upper = '1' is_ordered = 'false' is_unique = 'false' />
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Core.StructuralFeature.targetScope    [Attribute] ==================== -->
        <Model:Attribute xmi.id = 'a335A35E5028A' 
          name = 'targetScope' annotation = 'Specifies whether the targets are ordinary Instances or are Classifiers.' 
          scope = 'instance_level' visibility = 'public_vis' 
          isChangeable = 'true' 
          isDerived = 'false' 
          type = 'a33DD7020032A' >
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower = '0' upper = '1' is_ordered = 'false' is_unique = 'false' />
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Core.StructuralFeature.type    [Reference] ==================== -->
        <Model:Reference xmi.id = 'a396A463C0232' 
          name = 'type' annotation = '' 
          scope = 'instance_level' visibility = 'public_vis' 
          isChangeable = 'true' 
          type = 'a32989FB2023D' 
          referencedEnd = 'a316437C003B6' >
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower = '1' upper = '1' is_ordered = 'false' is_unique = 'false' />
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Core.Attribute    [Class] ==================== -->
    <Model:Class xmi.id = 'a3A6F62780143' 
      name = 'Attribute' annotation = 'An Attribute describes a named slot within a classifier that may hold a value.' 
      isRoot = 'false' isLeaf = 'false' isAbstract = 'false' visibility = 'public_vis' 
      isSingleton = 'false' 
      supertypes = 'a3298F1A403BF' >
      <Model:Namespace.contents>
        <!-- ==================== Core.Attribute.initialValue    [Attribute] ==================== -->
        <Model:Attribute xmi.id = 'a3A6F62980289' 
          name = 'initialValue' annotation = 'An Expression specifying the value of the attribute upon initialization. It is meant to be evaluated at the time the object is initialized. (Note that an explicit constructor may supersede an initial value.)' 
          scope = 'instance_level' visibility = 'public_vis' 
          isChangeable = 'true' 
          isDerived = 'false' 
          type = 'a33CFA00203A2' >
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower = '0' upper = '1' is_ordered = 'false' is_unique = 'false' />
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Core.org.omg.mof.idl_substitute_name=UmlAttribute    [Tag] ==================== -->
    <Model:Tag xmi.id = 'G.842' 
      name = 'org.omg.mof.idl_substitute_name=UmlAttribute' annotation = '' 
      tagId = 'org.omg.mof.idl_substitute_name' 
      elements = 'a3A6F62780143' >
      <Model:Tag.values>
        <XMI.any xmi.type = 'string' xmi.name = ''>UmlAttribute</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Core.Constraint    [Class] ==================== -->
    <Model:Class xmi.id = 'a327A649B000A' 
      name = 'Constraint' 
      isRoot = 'false' isLeaf = 'false' isAbstract = 'false' visibility = 'public_vis' 
      isSingleton = 'false' 
      supertypes = 'a327A5C7301CC' >
      <Model:ModelElement.annotation>A constraint is a semantic condition or restriction expressed in text.

In the metamodel, a Constraint is a BooleanExpression on an associated ModelElement(s) which must be true for the model to be well formed. This restriction can be stated in natural language, or in different kinds of languages with well-defined semantics. Certain Constraints are predefined, others may be user defined. Note that a Constraint is an assertion, not an executable mechanism.

The specification is written as an expression in a designated constraint language. The language can be specially designed for writing constraints (such as OCL), a programming language, mathematical notation, or natural language. If constraints are to be enforced by a model editor tool, then the tool must understand the syntax and semantics of the constraint language. Because the choice of language is arbitrary, constraints can be used as an extension mechanism.

The constraint concept allows new semantics to be specified linguistically for a model element. In the metamodel a Constraint directly attached to a ModelElement describes semantic restrictions that this ModelElement must obey.
</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== Core.Constraint.body    [Attribute] ==================== -->
        <Model:Attribute xmi.id = 'a32866F630244' 
          name = 'body' annotation = 'A BooleanExpression that must be true when evaluated for an instance of a system to be well-formed. A boolean expression defining the constraint. Expressions are written as strings in a designated language. For the model to be well formed, the expression must always yield a true value when evaluated for instances of the constrained elements at any time when the system is stable (i.e., not during the execution of an atomic operation).' 
          scope = 'instance_level' visibility = 'public_vis' 
          isChangeable = 'true' 
          isDerived = 'false' 
          type = 'a33CFA9DA01D6' >
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower = '1' upper = '1' is_ordered = 'false' is_unique = 'false' />
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Core.Constraint.constrainedElement    [Reference] ==================== -->
        <Model:Reference xmi.id = 'a396A47950000' 
          name = 'constrainedElement' annotation = '' 
          scope = 'instance_level' visibility = 'public_vis' 
          isChangeable = 'true' 
          type = 'a327A5C7301CC' 
          referencedEnd = 'a33EA67BB010E' >
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower = '0' upper = '-1' is_ordered = 'true' is_unique = 'true' />
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Core.org.omg.mof.idl_substitute_name=UmlConstraint    [Tag] ==================== -->
    <Model:Tag xmi.id = 'G.843' 
      name = 'org.omg.mof.idl_substitute_name=UmlConstraint' annotation = '' 
      tagId = 'org.omg.mof.idl_substitute_name' 
      elements = 'a327A649B000A' >
      <Model:Tag.values>
        <XMI.any xmi.type = 'string' xmi.name = ''>UmlConstraint</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Core.Dependency    [Class] ==================== -->
    <Model:Class xmi.id = 'a327A646F00E6' 
      name = 'Dependency' 
      isRoot = 'false' isLeaf = 'false' isAbstract = 'false' visibility = 'public_vis' 
      isSingleton = 'false' 
      supertypes = 'a327A5C7301CC' >
      <Model:ModelElement.annotation>A dependency states that the implementation or functioning of one or more elements requires the presence of one or more other elements.

In the metamodel, a Dependency is a directed relationship from a client (or clients) to a supplier (or suppliers) stating that the client is dependent on the supplier (i.e., the client element requires the presence and knowledge of the supplier element).

A dependency specifies that the semantics of a set of model elements requires the presence of another set of model elements. This implies that if the source is somehow modified, the dependents probably must be modified. The reason for the dependency can be specified in several different ways (e.g., using natural language or an algorithm) but is often implicit.

Whenever the supplier element of a dependency changes, the client element is potentially invalidated. After such invalidation, a check should be performed followed by possible changes to the derived client element. Such a check should be performed after which action can be taken to change the derived element to validate it again.</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== Core.Dependency.kind    [Attribute] ==================== -->
        <Model:Attribute xmi.id = 'a3A6C9FD2027C' 
          name = 'kind' annotation = 'Contains a description of the nature of the dependency relationship between the client and supplier. The list of possible values is open-ended. However, CWM predefines the values "Abstraction" and "Usage".' 
          scope = 'instance_level' visibility = 'public_vis' 
          isChangeable = 'true' 
          isDerived = 'false' 
          type = 'a33DD702401B8' >
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower = '0' upper = '1' is_ordered = 'false' is_unique = 'false' />
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Core.Dependency.client    [Reference] ==================== -->
        <Model:Reference xmi.id = 'a396A4B0D0213' 
          name = 'client' annotation = '' 
          scope = 'instance_level' visibility = 'public_vis' 
          isChangeable = 'true' 
          type = 'a327A5C7301CC' 
          referencedEnd = 'a33FFE57B0395' >
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower = '1' upper = '-1' is_ordered = 'false' is_unique = 'true' />
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Core.Dependency.supplier    [Reference] ==================== -->
        <Model:Reference xmi.id = 'a396A4B10002E' 
          name = 'supplier' annotation = '' 
          scope = 'instance_level' visibility = 'public_vis' 
          isChangeable = 'true' 
          type = 'a327A5C7301CC' 
          referencedEnd = 'a335C0D7A02A8' >
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower = '1' upper = '-1' is_ordered = 'false' is_unique = 'true' />
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Core.Expression    [Class] ==================== -->
    <Model:Class xmi.id = 'a33CFA00203A2' 
      name = 'Expression' annotation = 'In the metamodel an Expression defines a statement which will evaluate to a (possibly empty) set of instances when executed in a context. An Expression does not modify the environment in which it is evaluated. An expression contains an expression string and the name of an interpretation language with which to evaluate the string.' 
      isRoot = 'false' isLeaf = 'false' isAbstract = 'false' visibility = 'public_vis' 
      isSingleton = 'false' 
      supertypes = 'a327A5C330208' >
      <Model:Namespace.contents>
        <!-- ==================== Core.Expression.body    [Attribute] ==================== -->
        <Model:Attribute xmi.id = 'a33E12E870203' 
          name = 'body' annotation = 'The text of the expression expressed in the given language.' 
          scope = 'instance_level' visibility = 'public_vis' 
          isChangeable = 'true' 
          isDerived = 'false' 
          type = 'a33DD702401B8' >
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower = '1' upper = '1' is_ordered = 'false' is_unique = 'false' />
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Core.Expression.language    [Attribute] ==================== -->
        <Model:Attribute xmi.id = 'a33E12E5F01CA' 
          name = 'language' annotation = 'Names the language in which the expression body is represented. The interpretation of the expression depends on the language. If the language name is omitted, no interpretation for the expression can be assumed. In general, a language name should be spelled and capitalized exactly as it appears in the document defining the language. For example, use COBOL, not Cobol; use Ada, not ADA; use PostScript, not Postscript.' 
          scope = 'instance_level' visibility = 'public_vis' 
          isChangeable = 'true' 
          isDerived = 'false' 
          type = 'a33DD6FCF03C0' >
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower = '0' upper = '1' is_ordered = 'false' is_unique = 'false' />
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Core.BooleanExpression    [Class] ==================== -->
    <Model:Class xmi.id = 'a33CFA9DA01D6' 
      name = 'BooleanExpression' annotation = 'In the metamodel BooleanExpression defines a statement which will evaluate to an instance of Boolean when it is evaluated.' 
      isRoot = 'false' isLeaf = 'false' isAbstract = 'false' visibility = 'public_vis' 
      isSingleton = 'false' 
      supertypes = 'a33CFA00203A2' />
    <!-- ==================== Core.ProcedureExpression    [Class] ==================== -->
    <Model:Class xmi.id = 'a363559050190' 
      name = 'ProcedureExpression' annotation = 'In the metamodel ProcedureExpression defines a statement which will result in a change to the values of its environment when it is evaluated.' 
      isRoot = 'false' isLeaf = 'false' isAbstract = 'false' visibility = 'public_vis' 
      isSingleton = 'false' 
      supertypes = 'a33CFA00203A2' />
    <!-- ==================== Core.Multiplicity    [Class] ==================== -->
    <Model:Class xmi.id = 'a33DD6FC5001E' 
      name = 'Multiplicity' 
      isRoot = 'false' isLeaf = 'false' isAbstract = 'false' visibility = 'public_vis' 
      isSingleton = 'false' 
      supertypes = 'a327A5C330208' >
      <Model:ModelElement.annotation>In the metamodel a Multiplicity defines a non-empty set of non-negative integers. A set which only contains zero ({0}) is not considered a valid Multiplicity. Every Multiplicity has at least one corresponding String  representation.
</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== Core.Multiplicity.range    [Reference] ==================== -->
        <Model:Reference xmi.id = 'a396A3FA7038A' 
          name = 'range' annotation = '' 
          scope = 'instance_level' visibility = 'public_vis' 
          isChangeable = 'true' 
          type = 'a33E93BD00075' 
          referencedEnd = 'a33FF95B90378' >
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower = '1' upper = '-1' is_ordered = 'false' is_unique = 'true' />
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Core.MultiplicityRange    [Class] ==================== -->
    <Model:Class xmi.id = 'a33E93BD00075' 
      name = 'MultiplicityRange' 
      isRoot = 'false' isLeaf = 'false' isAbstract = 'false' visibility = 'public_vis' 
      isSingleton = 'false' 
      supertypes = 'a327A5C330208' >
      <Model:ModelElement.annotation>In the metamodel a MultiplicityRange defines a range of integers. The upper bound of the range cannot be below the lower bound. The lower bound must be a nonnegative integer. The upper bound must be a nonnegative integer or the special value unlimited, which indicates there is no upper bound on the range. 
</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== Core.MultiplicityRange.lower    [Attribute] ==================== -->
        <Model:Attribute xmi.id = 'a33E93BE902E8' 
          name = 'lower' annotation = 'Specifies the positive integer lower bound of the range.' 
          scope = 'instance_level' visibility = 'public_vis' 
          isChangeable = 'true' 
          isDerived = 'false' 
          type = 'a33DD6FD7021C' >
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower = '1' upper = '1' is_ordered = 'false' is_unique = 'false' />
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Core.MultiplicityRange.upper    [Attribute] ==================== -->
        <Model:Attribute xmi.id = 'a33E93BFA0329' 
          name = 'upper' annotation = 'Specifies the upper bound of the range, which is a positive integer or the special value &#x0092;unlimited&#x0092; indicating no upper bound is defined.' 
          scope = 'instance_level' visibility = 'public_vis' 
          isChangeable = 'true' 
          isDerived = 'false' 
          type = 'a3635582D03D4' >
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower = '1' upper = '1' is_ordered = 'false' is_unique = 'false' />
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Core.MultiplicityRange.multiplicity    [Reference] ==================== -->
        <Model:Reference xmi.id = 'a396A403D006D' 
          name = 'multiplicity' annotation = '' 
          scope = 'instance_level' visibility = 'public_vis' 
          isChangeable = 'true' 
          type = 'a33DD6FC5001E' 
          referencedEnd = 'a33FF95B90300' >
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower = '1' upper = '1' is_ordered = 'false' is_unique = 'false' />
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Core.Stereotype    [Class] ==================== -->
    <Model:Class xmi.id = 'a3A24417902EF' 
      name = 'Stereotype' 
      isRoot = 'false' isLeaf = 'false' isAbstract = 'false' visibility = 'public_vis' 
      isSingleton = 'false' 
      supertypes = 'a327A5C7301CC' >
      <Model:ModelElement.annotation>The stereotype concept provides a way of branding (classifying) model elements so that they behave as if they were instances of new virtual metamodel constructs. These model elements have the same structure (attributes, associations, operations) as similar non-stereotyped model elements of the same kind. The stereotype may specify additional constraints and required tagged values that apply to model elements. In addition, a stereotype may be used to indicate a difference in meaning or usage between two model elements with identical structure.

In the metamodel the Stereotype metaclass is a subclass of ModelElement. Tagged Values and Constraints attached to a Stereotype apply to all ModelElements branded by that Stereotype.

A stereotype keeps track of the base class to which it may be applied. The base class is a class in the metamodel (not a user-level modeling element) such as Class, Association, etc. If a model element is branded by an attached stereotype, then the CWM base class of the model element must be the base class specified by the stereotype or one of the subclasses of that base class.</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== Core.Stereotype.baseClass    [Attribute] ==================== -->
        <Model:Attribute xmi.id = 'a3A24427E031E' 
          name = 'baseClass' annotation = 'Specifies the name of a modeling element to which the stereotype applies, such as Class, Association, Constraint, etc. This is the name of a metaclass, that is, a class from the metamodel itself rather than a user model class.' 
          scope = 'instance_level' visibility = 'public_vis' 
          isChangeable = 'true' 
          isDerived = 'false' 
          type = 'a33DD6FCF03C0' >
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower = '1' upper = '1' is_ordered = 'false' is_unique = 'false' />
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Core.Stereotype.extendedElement    [Reference] ==================== -->
        <Model:Reference xmi.id = 'a3A2444AD00AD' 
          name = 'extendedElement' annotation = '' 
          scope = 'instance_level' visibility = 'public_vis' 
          isChangeable = 'true' 
          type = 'a327A5C7301CC' 
          referencedEnd = 'a3A2442F90292' >
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower = '0' upper = '-1' is_ordered = 'false' is_unique = 'true' />
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Core.Stereotype.requiredTag    [Reference] ==================== -->
        <Model:Reference xmi.id = 'a3A2444AB0234' 
          name = 'requiredTag' annotation = '' 
          scope = 'instance_level' visibility = 'public_vis' 
          isChangeable = 'true' 
          type = 'a337A4EF7002C' 
          referencedEnd = 'a3A2446850021' >
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower = '0' upper = '-1' is_ordered = 'false' is_unique = 'true' />
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Core.Stereotype.stereotypeConstraint    [Reference] ==================== -->
        <Model:Reference xmi.id = 'a3A244510011B' 
          name = 'stereotypeConstraint' annotation = '' 
          scope = 'instance_level' visibility = 'public_vis' 
          isChangeable = 'true' 
          type = 'a327A649B000A' 
          referencedEnd = 'a3A2D210E0353' >
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower = '0' upper = '-1' is_ordered = 'false' is_unique = 'true' />
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Core.TaggedValue    [Class] ==================== -->
    <Model:Class xmi.id = 'a337A4EF7002C' 
      name = 'TaggedValue' 
      isRoot = 'false' isLeaf = 'false' isAbstract = 'false' visibility = 'public_vis' 
      isSingleton = 'false' 
      supertypes = 'a327A5C330208' >
      <Model:ModelElement.annotation>A tagged value allows information to be attached to any model element in the form of a "tagged value" pair (i.e., name = value). The interpretation of tagged value semantics is intentionally beyond the scope of CWM. It must be determined by user or tool conventions. It is expected that tools will define tags to supply information needed for their operations beyond the basic semantics of CWM. Such information could include code generation options, model management information, or user-specified semantics.

Even though TaggedValues are a simple and straightforward extension technique, their use restricts semantic interchange of metadata to only those tools that share a common understanding of the specific tagged value names.</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== Core.TaggedValue.tag    [Attribute] ==================== -->
        <Model:Attribute xmi.id = 'a33E901140334' 
          name = 'tag' annotation = 'Contains the name of the TaggedValue. This name determines the semantics that are applicable to the contents of the value attribute.' 
          scope = 'instance_level' visibility = 'public_vis' 
          isChangeable = 'true' 
          isDerived = 'false' 
          type = 'a33DD6FCF03C0' >
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower = '1' upper = '1' is_ordered = 'false' is_unique = 'false' />
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Core.TaggedValue.value    [Attribute] ==================== -->
        <Model:Attribute xmi.id = 'a337A50700273' 
          name = 'value' annotation = 'Contains the current value of the TaggedValue.' 
          scope = 'instance_level' visibility = 'public_vis' 
          isChangeable = 'true' 
          isDerived = 'false' 
          type = 'a33DD702401B8' >
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower = '1' upper = '1' is_ordered = 'false' is_unique = 'false' />
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Core.TaggedValue.modelElement    [Reference] ==================== -->
        <Model:Reference xmi.id = 'a396A5262037A' 
          name = 'modelElement' annotation = '' 
          scope = 'instance_level' visibility = 'public_vis' 
          isChangeable = 'true' 
          type = 'a327A5C7301CC' 
          referencedEnd = 'a33E901E003D4' >
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower = '0' upper = '1' is_ordered = 'false' is_unique = 'false' />
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Core.TaggedValue.stereotype    [Reference] ==================== -->
        <Model:Reference xmi.id = 'a3A24459D01C7' 
          name = 'stereotype' annotation = '' 
          scope = 'instance_level' visibility = 'public_vis' 
          isChangeable = 'true' 
          type = 'a3A24417902EF' 
          referencedEnd = 'a3A2446850030' >
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower = '0' upper = '1' is_ordered = 'false' is_unique = 'false' />
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Core.org.omg.mof.idl_substitute_name=umlValue    [Tag] ==================== -->
    <Model:Tag xmi.id = 'G.844' 
      name = 'org.omg.mof.idl_substitute_name=umlValue' annotation = '' 
      tagId = 'org.omg.mof.idl_substitute_name' 
      elements = 'a337A50700273' >
      <Model:Tag.values>
        <XMI.any xmi.type = 'string' xmi.name = ''>umlValue</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Core.Any    [DataType] ==================== -->
    <Model:DataType xmi.id = 'a37AB1FF90221' 
      name = 'Any' 
      isRoot = 'true' isLeaf = 'true' isAbstract = 'false' visibility = 'public_vis' >
      <Model:ModelElement.annotation>The Any data type is used to indicate that an attribute or parameter may take values from any of the available data types. In CWM, the set of data types an Any attribute or parameter may assume includes the data types and enumerations described in this chapter plus any available instances of the Classifier class. 

There is no default value for data type Any.</Model:ModelElement.annotation>
      <Model:DataType.typeCode>
        <XMI.CorbaTypeCode>
          <XMI.CorbaTcAny/>
        </XMI.CorbaTypeCode>
      </Model:DataType.typeCode>
    </Model:DataType>
    <!-- ==================== Core.Boolean    [DataType] ==================== -->
    <Model:DataType xmi.id = 'a33DD6F650276' 
      name = 'Boolean' 
      isRoot = 'true' isLeaf = 'true' isAbstract = 'false' visibility = 'public_vis' >
      <Model:ModelElement.annotation>Boolean defines an enumeration that denotes a logical condition.

The default for data type Boolean is false.</Model:ModelElement.annotation>
      <Model:DataType.typeCode>
        <XMI.CorbaTypeCode>
          <XMI.CorbaTcBoolean/>
        </XMI.CorbaTypeCode>
      </Model:DataType.typeCode>
    </Model:DataType>
    <!-- ==================== Core.Float    [DataType] ==================== -->
    <Model:DataType xmi.id = 'a384FE9DE02A2' 
      name = 'Float' 
      isRoot = 'true' isLeaf = 'true' isAbstract = 'false' visibility = 'public_vis' >
      <Model:ModelElement.annotation>The Float data type is used to indicate that an attribute or parameter may take on floating point numeric values. The number of significant digits and other representational details are implementation defined. 

The default for the Float data type is the value 0.0.</Model:ModelElement.annotation>
      <Model:DataType.typeCode>
        <XMI.CorbaTypeCode>
          <XMI.CorbaTcFloat/>
        </XMI.CorbaTypeCode>
      </Model:DataType.typeCode>
    </Model:DataType>
    <!-- ==================== Core.Integer    [DataType] ==================== -->
    <Model:DataType xmi.id = 'a33DD6FD7021C' 
      name = 'Integer' 
      isRoot = 'true' isLeaf = 'true' isAbstract = 'false' visibility = 'public_vis' >
      <Model:ModelElement.annotation>Integer represents the predefined type of integers. An instance of Integer is an element in the (infinite) set of integers (..., -2, -1, 0, 1, 2, ...). 

The default for Integer is 0.</Model:ModelElement.annotation>
      <Model:DataType.typeCode>
        <XMI.CorbaTypeCode>
          <XMI.CorbaTcLong/>
        </XMI.CorbaTypeCode>
      </Model:DataType.typeCode>
    </Model:DataType>
    <!-- ==================== Core.Name    [DataType] ==================== -->
    <Model:DataType xmi.id = 'a33DD6FCF03C0' 
      name = 'Name' 
      isRoot = 'true' isLeaf = 'true' isAbstract = 'false' visibility = 'public_vis' >
      <Model:ModelElement.annotation>Name defines a token which is used for naming ModelElements and similar usages. Each Name has a corresponding String representation. For purposes of exchange a name should be represented as a String.

The default for the Name data type is an empty string.</Model:ModelElement.annotation>
      <Model:DataType.typeCode>
        <XMI.CorbaTypeCode>
          <XMI.CorbaTcAlias xmi.tcName = 'Name'>
          <XMI.CorbaTypeCode>
            <XMI.CorbaTcString xmi.tcLength = '0'/>
          </XMI.CorbaTypeCode>
          </XMI.CorbaTcAlias>
        </XMI.CorbaTypeCode>
      </Model:DataType.typeCode>
    </Model:DataType>
    <!-- ==================== Core.String    [DataType] ==================== -->
    <Model:DataType xmi.id = 'a33DD702401B8' 
      name = 'String' 
      isRoot = 'true' isLeaf = 'true' isAbstract = 'false' visibility = 'public_vis' >
      <Model:ModelElement.annotation>String defines a piece of text. Strings do not normally have a defined length; rather, they are considered to be arbitrarily long (practical limits on the length of Strings exist, but are implementation dependent). When String is used as the type of an Attribute, string length sometimes can be specified (see the Relational and Record packages for examples).

The default for the String data type is an empty string.</Model:ModelElement.annotation>
      <Model:DataType.typeCode>
        <XMI.CorbaTypeCode>
          <XMI.CorbaTcString xmi.tcLength = '0'/>
        </XMI.CorbaTypeCode>
      </Model:DataType.typeCode>
    </Model:DataType>
    <!-- ==================== Core.Time    [DataType] ==================== -->
    <Model:DataType xmi.id = 'a3A09E1C0001E' 
      name = 'Time' 
      isRoot = 'true' isLeaf = 'true' isAbstract = 'false' visibility = 'public_vis' >
      <Model:ModelElement.annotation>Time defines a statement which will define the time of occurrence of an event. The specific format of time expressions is not specified here and is subject to implementation considerations.

There is no default for the Time data type.</Model:ModelElement.annotation>
      <Model:DataType.typeCode>
        <XMI.CorbaTypeCode>
          <XMI.CorbaTcAlias xmi.tcName = 'Time'>
          <XMI.CorbaTypeCode>
            <XMI.CorbaTcString xmi.tcLength = '0'/>
          </XMI.CorbaTypeCode>
          </XMI.CorbaTcAlias>
        </XMI.CorbaTypeCode>
      </Model:DataType.typeCode>
    </Model:DataType>
    <!-- ==================== Core.UnlimitedInteger    [DataType] ==================== -->
    <Model:DataType xmi.id = 'a3635582D03D4' 
      name = 'UnlimitedInteger' 
      isRoot = 'true' isLeaf = 'true' isAbstract = 'false' visibility = 'public_vis' >
      <Model:ModelElement.annotation>UnlimitedInteger defines a data type whose range is the nonnegative integers augmented by the special value "unlimited". It is used for the upper bound of multiplicities.

The default for an UnlimitedInteger is the special value "unlimited".</Model:ModelElement.annotation>
      <Model:DataType.typeCode>
        <XMI.CorbaTypeCode>
          <XMI.CorbaTcAlias xmi.tcName = 'UnlimitedInteger'>
          <XMI.CorbaTypeCode>
            <XMI.CorbaTcLong/>
          </XMI.CorbaTypeCode>
          </XMI.CorbaTcAlias>
        </XMI.CorbaTypeCode>
      </Model:DataType.typeCode>
    </Model:DataType>
    <!-- ==================== Core.ChangeableKind    [DataType] ==================== -->
    <Model:DataType xmi.id = 'a33DD6F820208' 
      name = 'ChangeableKind' annotation = '' 
      isRoot = 'true' isLeaf = 'true' isAbstract = 'false' visibility = 'public_vis' >
      <Model:DataType.typeCode>
        <XMI.CorbaTypeCode>
          <XMI.CorbaTcEnum xmi.tcName = 'ChangeableKind'>
          <XMI.CorbaTcEnumLabel xmi.tcName = 'ck_changeable'/>
          <XMI.CorbaTcEnumLabel xmi.tcName = 'ck_frozen'/>
          <XMI.CorbaTcEnumLabel xmi.tcName = 'ck_addOnly'/>
          </XMI.CorbaTcEnum>
        </XMI.CorbaTypeCode>
      </Model:DataType.typeCode>
    </Model:DataType>
    <!-- ==================== Core.org.omg.xmi.enumerationUnprefix=ck_    [Tag] ==================== -->
    <Model:Tag xmi.id = 'G.845' 
      name = 'org.omg.xmi.enumerationUnprefix=ck_' annotation = '' 
      tagId = 'org.omg.xmi.enumerationUnprefix' 
      elements = 'a33DD6F820208' >
      <Model:Tag.values>
        <XMI.any xmi.type = 'string' xmi.name = ''>ck_</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Core.OrderingKind    [DataType] ==================== -->
    <Model:DataType xmi.id = 'a36619BC301D6' 
      name = 'OrderingKind' 
      isRoot = 'true' isLeaf = 'true' isAbstract = 'false' visibility = 'public_vis' >
      <Model:ModelElement.annotation>In the metamodel OrderingKind defines an enumeration that specifies how the elements of a set are arranged. Used in conjunction with elements that have a multiplicity in cases when the multiplicity value is greater than one. The ordering must be determined and maintained by operations that modify the set.

The default value is ok_unordered.</Model:ModelElement.annotation>
      <Model:DataType.typeCode>
        <XMI.CorbaTypeCode>
          <XMI.CorbaTcEnum xmi.tcName = 'OrderingKind'>
          <XMI.CorbaTcEnumLabel xmi.tcName = 'ok_unordered'/>
          <XMI.CorbaTcEnumLabel xmi.tcName = 'ok_ordered'/>
          </XMI.CorbaTcEnum>
        </XMI.CorbaTypeCode>
      </Model:DataType.typeCode>
    </Model:DataType>
    <!-- ==================== Core.org.omg.xmi.enumerationUnprefix=ok_    [Tag] ==================== -->
    <Model:Tag xmi.id = 'G.846' 
      name = 'org.omg.xmi.enumerationUnprefix=ok_' annotation = '' 
      tagId = 'org.omg.xmi.enumerationUnprefix' 
      elements = 'a36619BC301D6' >
      <Model:Tag.values>
        <XMI.any xmi.type = 'string' xmi.name = ''>ok_</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Core.ScopeKind    [DataType] ==================== -->
    <Model:DataType xmi.id = 'a33DD7020032A' 
      name = 'ScopeKind' 
      isRoot = 'true' isLeaf = 'true' isAbstract = 'false' visibility = 'public_vis' >
      <Model:ModelElement.annotation>In the metamodel ScopeKind defines an enumeration that denotes whether a feature belongs to individual instances or an entire classifier.

The default value is sk_instance.</Model:ModelElement.annotation>
      <Model:DataType.typeCode>
        <XMI.CorbaTypeCode>
          <XMI.CorbaTcEnum xmi.tcName = 'ScopeKind'>
          <XMI.CorbaTcEnumLabel xmi.tcName = 'sk_instance'/>
          <XMI.CorbaTcEnumLabel xmi.tcName = 'sk_classifier'/>
          </XMI.CorbaTcEnum>
        </XMI.CorbaTypeCode>
      </Model:DataType.typeCode>
    </Model:DataType>
    <!-- ==================== Core.org.omg.xmi.enumerationUnprefix=sk_    [Tag] ==================== -->
    <Model:Tag xmi.id = 'G.847' 
      name = 'org.omg.xmi.enumerationUnprefix=sk_' annotation = '' 
      tagId = 'org.omg.xmi.enumerationUnprefix' 
      elements = 'a33DD7020032A' >
      <Model:Tag.values>
        <XMI.any xmi.type = 'string' xmi.name = ''>sk_</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Core.VisibilityKind    [DataType] ==================== -->
    <Model:DataType xmi.id = 'a3A705EFD0201' 
      name = 'VisibilityKind' 
      isRoot = 'true' isLeaf = 'true' isAbstract = 'false' visibility = 'public_vis' >
      <Model:ModelElement.annotation>In the metamodel VisibilityKind defines an enumeration that denotes how the element to which it refers is seen outside the enclosing name space.

The default value is vk_public.</Model:ModelElement.annotation>
      <Model:DataType.typeCode>
        <XMI.CorbaTypeCode>
          <XMI.CorbaTcEnum xmi.tcName = 'VisibilityKind'>
          <XMI.CorbaTcEnumLabel xmi.tcName = 'vk_public'/>
          <XMI.CorbaTcEnumLabel xmi.tcName = 'vk_protected'/>
          <XMI.CorbaTcEnumLabel xmi.tcName = 'vk_private'/>
          <XMI.CorbaTcEnumLabel xmi.tcName = 'vk_package'/>
          <XMI.CorbaTcEnumLabel xmi.tcName = 'vk_notapplicable'/>
          </XMI.CorbaTcEnum>
        </XMI.CorbaTypeCode>
      </Model:DataType.typeCode>
    </Model:DataType>
    <!-- ==================== Core.org.omg.xmi.enumerationUnprefix=vk_    [Tag] ==================== -->
    <Model:Tag xmi.id = 'G.848' 
      name = 'org.omg.xmi.enumerationUnprefix=vk_' annotation = '' 
      tagId = 'org.omg.xmi.enumerationUnprefix' 
      elements = 'a3A705EFD0201' >
      <Model:Tag.values>
        <XMI.any xmi.type = 'string' xmi.name = ''>vk_</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Core.ClassifierFeature    [Association] ==================== -->
    <Model:Association xmi.id = 'a32B5D7EE02FF' 
      name = 'ClassifierFeature' annotation = 'The ClassifierFeature association provides a composite aggregation containment relationship between Classifiers and the Features they own. The feature end of the association is ordered allowing preservation of the ordering of Features within their owning Classifier. A Feature can be owned by at most one Classifier. The optional character of ownership is intended as a convenience to tools, allowing them to create Features prior to linking them to their owning Classifier.' 
      isRoot = 'true' isLeaf = 'true' isAbstract = 'false' visibility = 'protected_vis' 
      isDerived = 'false' >
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id = 'a32B5D7EF03D3' 
          name = 'owner' annotation = '' 
          isNavigable = 'true' aggregation = 'composite' isChangeable = 'true' 
          type = 'a32989FB2023D' >
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower = '0' upper = '1' is_ordered = 'false' is_unique = 'false' />
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id = 'a32B5D7EF03DD' 
          name = 'feature' annotation = '' 
          isNavigable = 'true' aggregation = 'none' isChangeable = 'true' 
          type = 'a32989F9700FE' >
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower = '0' upper = '-1' is_ordered = 'true' is_unique = 'true' />
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Core.DependencyClient    [Association] ==================== -->
    <Model:Association xmi.id = 'a33FFE57902A2' 
      name = 'DependencyClient' annotation = 'The DependencyClient association links Dependency instances with ModelElements that act as clients in the represented dependency relationship.' 
      isRoot = 'true' isLeaf = 'true' isAbstract = 'false' visibility = 'protected_vis' 
      isDerived = 'false' >
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id = 'a33FFE57B0395' 
          name = 'client' annotation = '' 
          isNavigable = 'true' aggregation = 'none' isChangeable = 'true' 
          type = 'a327A5C7301CC' >
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower = '1' upper = '-1' is_ordered = 'false' is_unique = 'true' />
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id = 'a33FFE57B03B3' 
          name = 'clientDependency' annotation = '' 
          isNavigable = 'true' aggregation = 'none' isChangeable = 'true' 
          type = 'a327A646F00E6' >
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower = '0' upper = '-1' is_ordered = 'false' is_unique = 'true' />
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Core.DependencySupplier    [Association] ==================== -->
    <Model:Association xmi.id = 'a335C0D770302' 
      name = 'DependencySupplier' annotation = 'The DependencySupplier association links Dependency instances with ModelElements that act as suppliers in the represented dependency relationship.' 
      isRoot = 'true' isLeaf = 'true' isAbstract = 'false' visibility = 'public_vis' 
      isDerived = 'false' >
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id = 'a335C0D7A02A8' 
          name = 'supplier' annotation = '' 
          isNavigable = 'true' aggregation = 'none' isChangeable = 'true' 
          type = 'a327A5C7301CC' >
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower = '1' upper = '-1' is_ordered = 'false' is_unique = 'true' />
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id = 'a335C0D7A02E4' 
          name = 'supplierDependency' annotation = '' 
          isNavigable = 'true' aggregation = 'none' isChangeable = 'true' 
          type = 'a327A646F00E6' >
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower = '0' upper = '-1' is_ordered = 'false' is_unique = 'true' />
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Core.ElementConstraint    [Association] ==================== -->
    <Model:Association xmi.id = 'a33EA67B702EE' 
      name = 'ElementConstraint' annotation = 'The ElementConstraint association provides linkages between ModelElements and the Constraint instances that constrain their state. Note that a Constraint instance may not simultaneously participate in both the ElementConstraint and the StereotypeConstraint associations.' 
      isRoot = 'true' isLeaf = 'true' isAbstract = 'false' visibility = 'protected_vis' 
      isDerived = 'false' >
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id = 'a33EA67BB010E' 
          name = 'constrainedElement' annotation = '' 
          isNavigable = 'true' aggregation = 'none' isChangeable = 'true' 
          type = 'a327A5C7301CC' >
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower = '0' upper = '-1' is_ordered = 'true' is_unique = 'true' />
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id = 'a33EA67BB010F' 
          name = 'constraint' annotation = '' 
          isNavigable = 'true' aggregation = 'none' isChangeable = 'true' 
          type = 'a327A649B000A' >
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower = '0' upper = '-1' is_ordered = 'false' is_unique = 'true' />
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Core.org.omg.mof.idl_substitute_name=umlConstraint    [Tag] ==================== -->
    <Model:Tag xmi.id = 'G.849' 
      name = 'org.omg.mof.idl_substitute_name=umlConstraint' annotation = '' 
      tagId = 'org.omg.mof.idl_substitute_name' 
      elements = 'a33EA67BB010F' >
      <Model:Tag.values>
        <XMI.any xmi.type = 'string' xmi.name = ''>umlConstraint</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Core.ElementOwnership    [Association] ==================== -->
    <Model:Association xmi.id = 'a3A2C18610353' 
      name = 'ElementOwnership' annotation = 'The ElementOwnership association identifies ModelElements owned by Namespaces. ModelElements may be owned by at most one Namespace. Refer to the above discussion of the Namespace class for more information on the nature of the ownership relationship between Namespaces and ModelElements.' 
      isRoot = 'true' isLeaf = 'true' isAbstract = 'false' visibility = 'protected_vis' 
      isDerived = 'false' >
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id = 'a3A2C186203A1' 
          name = 'ownedElement' annotation = '' 
          isNavigable = 'true' aggregation = 'none' isChangeable = 'true' 
          type = 'a327A5C7301CC' >
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower = '0' upper = '-1' is_ordered = 'false' is_unique = 'true' />
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id = 'a3A2C18630036' 
          name = 'namespace' annotation = '' 
          isNavigable = 'true' aggregation = 'composite' isChangeable = 'true' 
          type = 'a32B69F3A0118' >
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower = '0' upper = '1' is_ordered = 'false' is_unique = 'false' />
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Core.ImportedElements    [Association] ==================== -->
    <Model:Association xmi.id = 'a3A423EFD02DA' 
      name = 'ImportedElements' annotation = 'The ImportedElements association identifies ModelElements that a Package instance imports from other Namespaces. Although any ModelElement may be imported by a Package, imported ModelElements are typically other Packages or aggregate Classifiers, such as Class instances.' 
      isRoot = 'true' isLeaf = 'true' isAbstract = 'false' visibility = 'protected_vis' 
      isDerived = 'false' >
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id = 'a3A423EFE025D' 
          name = 'importedElement' annotation = '' 
          isNavigable = 'true' aggregation = 'none' isChangeable = 'true' 
          type = 'a327A5C7301CC' >
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower = '0' upper = '-1' is_ordered = 'false' is_unique = 'true' />
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id = 'a3A423EFE02DA' 
          name = 'importer' annotation = '' 
          isNavigable = 'true' aggregation = 'none' isChangeable = 'true' 
          type = 'a327A5D19033E' >
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower = '0' upper = '-1' is_ordered = 'false' is_unique = 'true' />
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Core.RangeMultiplicity    [Association] ==================== -->
    <Model:Association xmi.id = 'a33FF95B90061' 
      name = 'RangeMultiplicity' annotation = 'The RangeMultiplicity association identifies the set of MultiplicityRange instances that specify the lower and upper bounds of individual cardinality ranges defined by a Multiplicity instance. A MultiplicityRange instance must be owned by a single Multiplicity instance.' 
      isRoot = 'true' isLeaf = 'true' isAbstract = 'false' visibility = 'protected_vis' 
      isDerived = 'false' >
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id = 'a33FF95B90300' 
          name = 'multiplicity' annotation = '' 
          isNavigable = 'true' aggregation = 'composite' isChangeable = 'true' 
          type = 'a33DD6FC5001E' >
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower = '1' upper = '1' is_ordered = 'false' is_unique = 'false' />
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id = 'a33FF95B90378' 
          name = 'range' annotation = '' 
          isNavigable = 'true' aggregation = 'none' isChangeable = 'true' 
          type = 'a33E93BD00075' >
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower = '1' upper = '-1' is_ordered = 'false' is_unique = 'true' />
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Core.StereotypeConstraints    [Association] ==================== -->
    <Model:Association xmi.id = 'a3A2D210D02D6' 
      name = 'StereotypeConstraints' annotation = 'The StereotypeConstraints association links Stereotypes with Constraints that further restrict the states that a stereotyped ModelElement may assume. A Constraint instance may not simultaneously participate in both the StereotypeContraints association and the ElementConstraint association.' 
      isRoot = 'true' isLeaf = 'true' isAbstract = 'false' visibility = 'public_vis' 
      isDerived = 'false' >
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id = 'a3A2D210E0353' 
          name = 'stereotypeConstraint' annotation = '' 
          isNavigable = 'true' aggregation = 'none' isChangeable = 'true' 
          type = 'a327A649B000A' >
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower = '0' upper = '-1' is_ordered = 'false' is_unique = 'true' />
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id = 'a3A2D210E0372' 
          name = 'constrainedStereotype' annotation = '' 
          isNavigable = 'true' aggregation = 'composite' isChangeable = 'true' 
          type = 'a3A24417902EF' >
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower = '0' upper = '1' is_ordered = 'false' is_unique = 'false' />
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Core.StereotypedElement    [Association] ==================== -->
    <Model:Association xmi.id = 'a3A2442F80244' 
      name = 'StereotypedElement' annotation = 'The StereotypedElement association links Stereotypes with the ModelElements to which they apply. ' 
      isRoot = 'true' isLeaf = 'true' isAbstract = 'false' visibility = 'public_vis' 
      isDerived = 'false' >
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id = 'a3A2442F90292' 
          name = 'extendedElement' annotation = '' 
          isNavigable = 'true' aggregation = 'none' isChangeable = 'true' 
          type = 'a327A5C7301CC' >
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower = '0' upper = '-1' is_ordered = 'false' is_unique = 'true' />
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id = 'a3A2442F902FF' 
          name = 'stereotype' annotation = '' 
          isNavigable = 'true' aggregation = 'none' isChangeable = 'true' 
          type = 'a3A24417902EF' >
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower = '0' upper = '1' is_ordered = 'false' is_unique = 'false' />
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Core.StereotypeTaggedValues    [Association] ==================== -->
    <Model:Association xmi.id = 'a3A24468302EF' 
      name = 'StereotypeTaggedValues' 
      isRoot = 'true' isLeaf = 'true' isAbstract = 'false' visibility = 'protected_vis' 
      isDerived = 'false' >
      <Model:ModelElement.annotation>The StereotypeTaggedValues association links Stereotypes with the set of TaggedValues they require.

TaggedValues cannot simultaneously participate in both the TaggedElement and StereotypeTaggedValues associations.</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id = 'a3A2446850021' 
          name = 'requiredTag' annotation = '' 
          isNavigable = 'true' aggregation = 'none' isChangeable = 'true' 
          type = 'a337A4EF7002C' >
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower = '0' upper = '-1' is_ordered = 'false' is_unique = 'true' />
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id = 'a3A2446850030' 
          name = 'stereotype' annotation = '' 
          isNavigable = 'true' aggregation = 'composite' isChangeable = 'true' 
          type = 'a3A24417902EF' >
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower = '0' upper = '1' is_ordered = 'false' is_unique = 'false' />
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Core.StructuralFeatureType    [Association] ==================== -->
    <Model:Association xmi.id = 'a316437BF0352' 
      name = 'StructuralFeatureType' annotation = 'The StructuralFeatureType association identifies the Classifier instance that defines the type of particular StructuralFeatures. A StructuralFeature instance must have a Classifier instance that defines its type.' 
      isRoot = 'true' isLeaf = 'true' isAbstract = 'false' visibility = 'public_vis' 
      isDerived = 'false' >
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id = 'a316437C002DA' 
          name = 'structuralFeature' annotation = '' 
          isNavigable = 'true' aggregation = 'none' isChangeable = 'true' 
          type = 'a3298F1A403BF' >
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower = '0' upper = '-1' is_ordered = 'false' is_unique = 'true' />
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id = 'a316437C003B6' 
          name = 'type' annotation = '' 
          isNavigable = 'true' aggregation = 'none' isChangeable = 'true' 
          type = 'a32989FB2023D' >
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower = '1' upper = '1' is_ordered = 'false' is_unique = 'false' />
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Core.TaggedElement    [Association] ==================== -->
    <Model:Association xmi.id = 'a33E901DD001E' 
      name = 'TaggedElement' 
      isRoot = 'true' isLeaf = 'true' isAbstract = 'false' visibility = 'public_vis' 
      isDerived = 'false' >
      <Model:ModelElement.annotation>The TaggedElement association links TaggedValues with the ModelElements that own them.

TaggedValues cannot simultaneously participate in both the TaggedElement and StereotypeTaggedValues associations.

</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id = 'a33E901E003D4' 
          name = 'modelElement' annotation = '' 
          isNavigable = 'true' aggregation = 'composite' isChangeable = 'true' 
          type = 'a327A5C7301CC' >
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower = '0' upper = '1' is_ordered = 'false' is_unique = 'false' />
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id = 'a33E901E10028' 
          name = 'taggedValue' annotation = '' 
          isNavigable = 'true' aggregation = 'none' isChangeable = 'true' 
          type = 'a337A4EF7002C' >
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower = '0' upper = '-1' is_ordered = 'false' is_unique = 'true' />
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
  </Model:Namespace.contents>
</Model:Package>
<!-- ==================== Behavioral    [Package] ==================== -->
<Model:Package xmi.id = 'a3A6342A4000B' 
  name = 'Behavioral' 
  isRoot = 'false' isLeaf = 'false' isAbstract = 'false' visibility = 'public_vis' >
  <Model:ModelElement.annotation>The Behavioral metamodel depends on the following package:

   org.omg::CWM::ObjectModel::Core

The Behavioral metamodel collects together classes and associations that describe the behavior of CWM types and provides a foundation for recording the invocations of defined behaviors. The elements of the Behavioral metamodel are shown in the following figure.

OCL Representation of Behavioral Constraints

Operations

The operation hasSameSignature checks if the argument has the same signature as the instance itself.
   hasSameSignature ( b : BehavioralFeature ) : Boolean;
   hasSameSignature (b) =
   (self.name = b.name) and
   (self.parameter-&gt;size = b.parameter-&gt;size) and
   Sequence{ 1..(self.parameter-&gt;size) }-&gt;forAll( index : Integer |
   b.parameter-&gt;at(index).type =
   self.parameter-&gt;at(index).type and
   b.parameter-&gt;at(index).kind =
   self.parameter-&gt;at(index).kind   )

The operation allOperations results in a Set containing all Operations of the Classifier itself and all its inherited Operations.
   allOperations : Set(Operation);
   allOperations = self.allFeatures-&gt;select(f | f.ockIsKindOf(Operations))

The operation allMethods results in a Set containing all Methods of the Classifier itself and all its inherited Methods.
   allOperations : Set(Method);
   allMethods = self.allFeatures-&gt;select(f | f.ockIsKindOf(Method))

Constraints

[C-4-1] All Parameters should have a unique name.
context BehavioralFeature inv:
self.parameter-&gt;forAll(p1, p2 | p1.name = p2.name implies p1 = p2)

[C-4-2] The type of the Parameters should be included in the Namespace of the Classifier.
context BehavioralFeature inv:
self.parameter-&gt;forAll( p | self.owner.namespace.allContents-&gt;includes (p.type) )

[C-4-3] The number of arguments must be the same as the number of parameters of the Operation.
context CallAction inv:
self.actualArgument-&gt;size = self.operation.parameter-&gt;size

[C-4-4] An Interface can only contain Operations.
context Interface inv:
self.allFeatures-&gt;forAll( f | f.oclIsKindOf( Operation ) )

[C-4-5] An Interface cannot contain any ModelElements.
context Interface inv:
self.allContents-&gt;isEmpty

[C-4-6] All Features defined in an Interface are public.
context Interface inv:
self.allFeatures-&gt;forAll( f | f.visibility = #public )

[C-4-7] If the realized Operation is a query, then so is the Method.
context Method inv:
self.specification-&gt;isQuery implies self.isQuery</Model:ModelElement.annotation>
  <Model:Namespace.contents>
    <!-- ==================== Behavioral.org.omg.mof.idl_prefix=org.omg.cwm.objectmodel    [Tag] ==================== -->
    <Model:Tag xmi.id = 'G.850' 
      name = 'org.omg.mof.idl_prefix=org.omg.cwm.objectmodel' annotation = '' 
      tagId = 'org.omg.mof.idl_prefix' 
      elements = 'a3A6342A4000B' >
      <Model:Tag.values>
        <XMI.any xmi.type = 'string' xmi.name = ''>org.omg.cwm.objectmodel</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Behavioral.org.omg.xmi.namespace=CWM    [Tag] ==================== -->
    <Model:Tag xmi.id = 'G.851' 
      name = 'org.omg.xmi.namespace=CWM' annotation = '' 
      tagId = 'org.omg.xmi.namespace' 
      elements = 'a3A6342A4000B' >
      <Model:Tag.values>
        <XMI.any xmi.type = 'string' xmi.name = ''>CWM</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Behavioral.org.omg.mof.idl_substitute_name=BehavioralModule    [Tag] ==================== -->
    <Model:Tag xmi.id = 'G.852' 
      name = 'org.omg.mof.idl_substitute_name=BehavioralModule' annotation = '' 
      tagId = 'org.omg.mof.idl_substitute_name' 
      elements = 'a3A6342A4000B' >
      <Model:Tag.values>
        <XMI.any xmi.type = 'string' xmi.name = ''>BehavioralModule</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Behavioral.com.urep.jcr.java_prefix=org.omg.java.cwm.objectmodel    [Tag] ==================== -->
    <Model:Tag xmi.id = 'G.853' 
      name = 'com.urep.jcr.java_prefix=org.omg.java.cwm.objectmodel' annotation = '' 
      tagId = 'com.urep.jcr.java_prefix' 
      elements = 'a3A6342A4000B' >
      <Model:Tag.values>
        <XMI.any xmi.type = 'string' xmi.name = ''>org.omg.java.cwm.objectmodel</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <Model:Import xmi.id = 'G.854' 
      name = 'Core' annotation = '' 
      visibility = 'public_vis' isClustered = 'true' 
      importedNamespace = 'a3A6600C5031F' />
    <!-- ==================== Behavioral.Argument    [Class] ==================== -->
    <Model:Class xmi.id = 'a33D9073E03B6' 
      name = 'Argument' 
      isRoot = 'false' isLeaf = 'false' isAbstract = 'false' visibility = 'public_vis' 
      isSingleton = 'false' 
      supertypes = 'a327A5C7301CC' >
      <Model:ModelElement.annotation>Argument is an expression describing how to determine an actual value passed in a CallAction.

In the metamodel an Argument is a composite part of a CallAction and contains a meta-attribute, value, of type Expression. It states how the actual argument is determined when the owning CallAction is executed.</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== Behavioral.Argument.value    [Attribute] ==================== -->
        <Model:Attribute xmi.id = 'a33D9076D00FA' 
          name = 'value' annotation = 'An expression determining the actual Argument instance when executed.' 
          scope = 'instance_level' visibility = 'public_vis' 
          isChangeable = 'true' 
          isDerived = 'false' 
          type = 'a33CFA00203A2' >
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower = '1' upper = '1' is_ordered = 'false' is_unique = 'false' />
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Behavioral.Argument.callAction    [Reference] ==================== -->
        <Model:Reference xmi.id = 'a396A5DC6007D' 
          name = 'callAction' annotation = '' 
          scope = 'instance_level' visibility = 'public_vis' 
          isChangeable = 'true' 
          type = 'a3A638B7E0318' 
          referencedEnd = 'a3A638C300329' >
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower = '0' upper = '1' is_ordered = 'false' is_unique = 'false' />
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Behavioral.org.omg.mof.idl_substitute_name=umlValue    [Tag] ==================== -->
    <Model:Tag xmi.id = 'G.855' 
      name = 'org.omg.mof.idl_substitute_name=umlValue' annotation = '' 
      tagId = 'org.omg.mof.idl_substitute_name' 
      elements = 'a33D9076D00FA' >
      <Model:Tag.values>
        <XMI.any xmi.type = 'string' xmi.name = ''>umlValue</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Behavioral.BehavioralFeature    [Class] ==================== -->
    <Model:Class xmi.id = 'a3298BCF00260' 
      name = 'BehavioralFeature' 
      isRoot = 'false' isLeaf = 'false' isAbstract = 'true' visibility = 'public_vis' 
      isSingleton = 'false' 
      supertypes = 'a32989F9700FE' >
      <Model:ModelElement.annotation>A behavioral feature refers to a dynamic feature of a model element, such as an operation or method. In the metamodel, BehavioralFeature specifies a behavioral aspect of a Classifier. All different kinds of behavioral aspects of a Classifier, such as Operation and Method, are subclasses of BehavioralFeature.

BehavioralFeature is an abstract metaclass.
</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== Behavioral.BehavioralFeature.isQuery    [Attribute] ==================== -->
        <Model:Attribute xmi.id = 'a335A34A3012C' 
          name = 'isQuery' annotation = 'Specifies whether an execution of the BehavioralFeature leaves the state of the system unchanged. True indicates that the state is unchanged; false indicates that side-effects may occur.' 
          scope = 'instance_level' visibility = 'public_vis' 
          isChangeable = 'true' 
          isDerived = 'false' 
          type = 'a33DD6F650276' >
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower = '1' upper = '1' is_ordered = 'false' is_unique = 'false' />
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Behavioral.BehavioralFeature.parameter    [Reference] ==================== -->
        <Model:Reference xmi.id = 'a396A48A50213' 
          name = 'parameter' annotation = '' 
          scope = 'instance_level' visibility = 'public_vis' 
          isChangeable = 'true' 
          type = 'a327BBB9F02B2' 
          referencedEnd = 'a3359946401AE' >
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower = '0' upper = '-1' is_ordered = 'true' is_unique = 'true' />
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Behavioral.CallAction    [Class] ==================== -->
    <Model:Class xmi.id = 'a3A638B7E0318' 
      name = 'CallAction' 
      isRoot = 'false' isLeaf = 'false' isAbstract = 'false' visibility = 'public_vis' 
      isSingleton = 'false' 
      supertypes = 'a327A5C7301CC' >
      <Model:ModelElement.annotation>A call action is an action resulting in an invocation of an operation.

The purpose of a CallAction is to identify the actual Arguments used in a specific invocation of an Operation.</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== Behavioral.CallAction.operation    [Reference] ==================== -->
        <Model:Reference xmi.id = 'a3A660F1B00CD' 
          name = 'operation' annotation = '' 
          scope = 'instance_level' visibility = 'public_vis' 
          isChangeable = 'true' 
          type = 'a327BB68C0398' 
          referencedEnd = 'a3A638C3503D4' >
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower = '1' upper = '1' is_ordered = 'false' is_unique = 'false' />
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Behavioral.CallAction.actualArgument    [Reference] ==================== -->
        <Model:Reference xmi.id = 'a3A660F1E012B' 
          name = 'actualArgument' annotation = '' 
          scope = 'instance_level' visibility = 'public_vis' 
          isChangeable = 'true' 
          type = 'a33D9073E03B6' 
          referencedEnd = 'a3A638C300328' >
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower = '0' upper = '-1' is_ordered = 'true' is_unique = 'true' />
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Behavioral.Event    [Class] ==================== -->
    <Model:Class xmi.id = 'a3288E51203DE' 
      name = 'Event' annotation = 'Event is a specification of an observable occurrence. The occurrence that generates an event instance is assumed to take place at an instant in time.' 
      isRoot = 'false' isLeaf = 'false' isAbstract = 'false' visibility = 'public_vis' 
      isSingleton = 'false' 
      supertypes = 'a327A5C7301CC' >
      <Model:Namespace.contents>
        <!-- ==================== Behavioral.Event.parameter    [Reference] ==================== -->
        <Model:Reference xmi.id = 'a396A651802DE' 
          name = 'parameter' annotation = '' 
          scope = 'instance_level' visibility = 'public_vis' 
          isChangeable = 'true' 
          type = 'a327BBB9F02B2' 
          referencedEnd = 'a3337AF9D028B' >
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower = '0' upper = '-1' is_ordered = 'true' is_unique = 'true' />
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Behavioral.Interface    [Class] ==================== -->
    <Model:Class xmi.id = 'a3342A195014D' 
      name = 'Interface' 
      isRoot = 'false' isLeaf = 'false' isAbstract = 'false' visibility = 'public_vis' 
      isSingleton = 'false' 
      supertypes = 'a32989FB2023D' >
      <Model:ModelElement.annotation>Interface is a named set of operations that specify the behavior of an element.

In the metamodel, an Interface contains a set of Operations that together define a service offered by a Classifier realizing the Interface. A Classifier may offer several services, which means that it may realize several Interfaces, and several Classifiers may realize the same Interface.</Model:ModelElement.annotation>
    </Model:Class>
    <!-- ==================== Behavioral.org.omg.mof.idl_substitute_name=UmlInterface    [Tag] ==================== -->
    <Model:Tag xmi.id = 'G.856' 
      name = 'org.omg.mof.idl_substitute_name=UmlInterface' annotation = '' 
      tagId = 'org.omg.mof.idl_substitute_name' 
      elements = 'a3342A195014D' >
      <Model:Tag.values>
        <XMI.any xmi.type = 'string' xmi.name = ''>UmlInterface</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Behavioral.Method    [Class] ==================== -->
    <Model:Class xmi.id = 'a327BB67E0028' 
      name = 'Method' annotation = 'Method is the implementation of an Operation. It specifies the algorithm or procedure that effects the results of an Operation.' 
      isRoot = 'false' isLeaf = 'false' isAbstract = 'false' visibility = 'public_vis' 
      isSingleton = 'false' 
      supertypes = 'a3298BCF00260' >
      <Model:Namespace.contents>
        <!-- ==================== Behavioral.Method.body    [Attribute] ==================== -->
        <Model:Attribute xmi.id = 'a327BBD2A02D0' 
          name = 'body' annotation = 'A specification of the Method in some appropriate form (such as a programming language). The exact form of a Method&#x0092;s specification and knowledge of the language in which it is described is outside the scope of the CWM.' 
          scope = 'instance_level' visibility = 'public_vis' 
          isChangeable = 'true' 
          isDerived = 'false' 
          type = 'a363559050190' >
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower = '1' upper = '1' is_ordered = 'false' is_unique = 'false' />
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Behavioral.Method.specification    [Reference] ==================== -->
        <Model:Reference xmi.id = 'a396A49A50128' 
          name = 'specification' annotation = '' 
          scope = 'instance_level' visibility = 'public_vis' 
          isChangeable = 'true' 
          type = 'a327BB68C0398' 
          referencedEnd = 'a32B6D9BE00C8' >
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower = '1' upper = '1' is_ordered = 'false' is_unique = 'false' />
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Behavioral.Operation    [Class] ==================== -->
    <Model:Class xmi.id = 'a327BB68C0398' 
      name = 'Operation' 
      isRoot = 'false' isLeaf = 'false' isAbstract = 'false' visibility = 'public_vis' 
      isSingleton = 'false' 
      supertypes = 'a3298BCF00260' >
      <Model:ModelElement.annotation>Operation is a service that can be requested from an object to effect behavior. An Operation has a signature, which describes the parameters that are possible (including possible return values).

In the metamodel, an Operation is a BehavioralFeature that can be applied to instances of the Classifier that contains the Operation.

Operation is the specification, while Method is the implementation.</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== Behavioral.Operation.isAbstract    [Attribute] ==================== -->
        <Model:Attribute xmi.id = 'a3627CF2B030C' 
          name = 'isAbstract' annotation = 'If true, then the Operation does not have an implementation, and one must be supplied by a descendant. If false, the Operation must have an implementation in the class or inherited from an ancestor.' 
          scope = 'instance_level' visibility = 'public_vis' 
          isChangeable = 'true' 
          isDerived = 'false' 
          type = 'a33DD6F650276' >
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower = '1' upper = '1' is_ordered = 'false' is_unique = 'false' />
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Behavioral.Operation.method    [Reference] ==================== -->
        <Model:Reference xmi.id = 'a396A48F7030D' 
          name = 'method' annotation = '' 
          scope = 'instance_level' visibility = 'public_vis' 
          isChangeable = 'true' 
          type = 'a327BB67E0028' 
          referencedEnd = 'a32B6D9BE00C9' >
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower = '0' upper = '-1' is_ordered = 'false' is_unique = 'true' />
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Behavioral.Parameter    [Class] ==================== -->
    <Model:Class xmi.id = 'a327BBB9F02B2' 
      name = 'Parameter' annotation = 'Parameters are used in the specification of operations, methods and events. A Parameter may include a name, type, and direction of communication.' 
      isRoot = 'false' isLeaf = 'false' isAbstract = 'false' visibility = 'public_vis' 
      isSingleton = 'false' 
      supertypes = 'a327A5C7301CC' >
      <Model:Namespace.contents>
        <!-- ==================== Behavioral.Parameter.defaultValue    [Attribute] ==================== -->
        <Model:Attribute xmi.id = 'a327BE04D0096' 
          name = 'defaultValue' annotation = 'An Expression whose evaluation yields a value to be used when no argument is supplied for the Parameter.' 
          scope = 'instance_level' visibility = 'public_vis' 
          isChangeable = 'true' 
          isDerived = 'false' 
          type = 'a33CFA00203A2' >
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower = '0' upper = '1' is_ordered = 'false' is_unique = 'false' />
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Behavioral.Parameter.kind    [Attribute] ==================== -->
        <Model:Attribute xmi.id = 'a335BC753038E' 
          name = 'kind' annotation = 'Specifies what kind of a Parameter is required.' 
          scope = 'instance_level' visibility = 'public_vis' 
          isChangeable = 'true' 
          isDerived = 'false' 
          type = 'a33DD6FDC024E' >
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower = '1' upper = '1' is_ordered = 'false' is_unique = 'false' />
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Behavioral.Parameter.behavioralFeature    [Reference] ==================== -->
        <Model:Reference xmi.id = 'a396A4927004E' 
          name = 'behavioralFeature' annotation = '' 
          scope = 'instance_level' visibility = 'public_vis' 
          isChangeable = 'true' 
          type = 'a3298BCF00260' 
          referencedEnd = 'a33599464017C' >
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower = '0' upper = '1' is_ordered = 'false' is_unique = 'false' />
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Behavioral.Parameter.event    [Reference] ==================== -->
        <Model:Reference xmi.id = 'a3A6E38A1023A' 
          name = 'event' annotation = '' 
          scope = 'instance_level' visibility = 'public_vis' 
          isChangeable = 'true' 
          type = 'a3288E51203DE' 
          referencedEnd = 'a3337AF9D028A' >
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower = '0' upper = '1' is_ordered = 'false' is_unique = 'false' />
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Behavioral.Parameter.type    [Reference] ==================== -->
        <Model:Reference xmi.id = 'a396A496E01E4' 
          name = 'type' annotation = '' 
          scope = 'instance_level' visibility = 'public_vis' 
          isChangeable = 'true' 
          type = 'a32989FB2023D' 
          referencedEnd = 'a335BC7D503D4' >
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower = '1' upper = '1' is_ordered = 'false' is_unique = 'false' />
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Behavioral.ParameterDirectionKind    [DataType] ==================== -->
    <Model:DataType xmi.id = 'a33DD6FDC024E' 
      name = 'ParameterDirectionKind' 
      isRoot = 'true' isLeaf = 'true' isAbstract = 'false' visibility = 'public_vis' >
      <Model:ModelElement.annotation>In the metamodel ParameterDirectionKind defines an enumeration that denotes if a Parameter is used for supplying an argument and/or for returning a value. The enumeration values are:

The default value is pdk_in.</Model:ModelElement.annotation>
      <Model:DataType.typeCode>
        <XMI.CorbaTypeCode>
          <XMI.CorbaTcEnum xmi.tcName = 'ParameterDirectionKind'>
          <XMI.CorbaTcEnumLabel xmi.tcName = 'pdk_in'/>
          <XMI.CorbaTcEnumLabel xmi.tcName = 'pdk_inout'/>
          <XMI.CorbaTcEnumLabel xmi.tcName = 'pdk_out'/>
          <XMI.CorbaTcEnumLabel xmi.tcName = 'pdk_return'/>
          </XMI.CorbaTcEnum>
        </XMI.CorbaTypeCode>
      </Model:DataType.typeCode>
    </Model:DataType>
    <!-- ==================== Behavioral.org.omg.xmi.enumerationUnprefix=pdk_    [Tag] ==================== -->
    <Model:Tag xmi.id = 'G.857' 
      name = 'org.omg.xmi.enumerationUnprefix=pdk_' annotation = '' 
      tagId = 'org.omg.xmi.enumerationUnprefix' 
      elements = 'a33DD6FDC024E' >
      <Model:Tag.values>
        <XMI.any xmi.type = 'string' xmi.name = ''>pdk_</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Behavioral.BehavioralFeatureParameter    [Association] ==================== -->
    <Model:Association xmi.id = 'a3359946200F0' 
      name = 'BehavioralFeatureParameter' annotation = 'The BehavioralFeatureParameter association identifies and orders Parameter instances describing the parameters of a BehavioralFeature. Parameters may be owned by at most one BehavioralFeature instance. The set of parameters of a BehavioralFeature, together with its name and return value, are said to constitute the BehavioralFeature&#x0092;s "signature".' 
      isRoot = 'true' isLeaf = 'true' isAbstract = 'false' visibility = 'protected_vis' 
      isDerived = 'false' >
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id = 'a33599464017C' 
          name = 'behavioralFeature' annotation = '' 
          isNavigable = 'true' aggregation = 'composite' isChangeable = 'true' 
          type = 'a3298BCF00260' >
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower = '0' upper = '1' is_ordered = 'false' is_unique = 'false' />
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id = 'a3359946401AE' 
          name = 'parameter' annotation = '' 
          isNavigable = 'true' aggregation = 'none' isChangeable = 'true' 
          type = 'a327BBB9F02B2' >
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower = '0' upper = '-1' is_ordered = 'true' is_unique = 'true' />
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Behavioral.CallArguments    [Association] ==================== -->
    <Model:Association xmi.id = 'a3A638C3000B7' 
      name = 'CallArguments' annotation = 'Identifies the Argument instances representing the actual argument values passed to an Operation during the particular invocation indicated by the CallAction instance. The ordering of actual argument values is assumed to correspond to the ordering of the Operation&#x0092;s parameters as represented by the ordering of the BehavioralFeatureParameter association.' 
      isRoot = 'true' isLeaf = 'true' isAbstract = 'false' visibility = 'protected_vis' 
      isDerived = 'false' >
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id = 'a3A638C300328' 
          name = 'actualArgument' annotation = '' 
          isNavigable = 'true' aggregation = 'none' isChangeable = 'true' 
          type = 'a33D9073E03B6' >
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower = '0' upper = '-1' is_ordered = 'true' is_unique = 'true' />
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id = 'a3A638C300329' 
          name = 'callAction' annotation = '' 
          isNavigable = 'true' aggregation = 'composite' isChangeable = 'true' 
          type = 'a3A638B7E0318' >
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower = '0' upper = '1' is_ordered = 'false' is_unique = 'false' />
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Behavioral.EventParameter    [Association] ==================== -->
    <Model:Association xmi.id = 'a3337AF9B02A8' 
      name = 'EventParameter' annotation = 'The EventParameter association identifies the set of Parameter instances owned by an Event instance.' 
      isRoot = 'true' isLeaf = 'true' isAbstract = 'false' visibility = 'protected_vis' 
      isDerived = 'false' >
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id = 'a3337AF9D028A' 
          name = 'event' annotation = '' 
          isNavigable = 'true' aggregation = 'composite' isChangeable = 'true' 
          type = 'a3288E51203DE' >
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower = '0' upper = '1' is_ordered = 'false' is_unique = 'false' />
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id = 'a3337AF9D028B' 
          name = 'parameter' annotation = '' 
          isNavigable = 'true' aggregation = 'none' isChangeable = 'true' 
          type = 'a327BBB9F02B2' >
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower = '0' upper = '-1' is_ordered = 'true' is_unique = 'true' />
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Behavioral.CalledOperation    [Association] ==================== -->
    <Model:Association xmi.id = 'a3A638C3501D0' 
      name = 'CalledOperation' annotation = 'The CalledOperation association identifies the CallAction instance representing a particular invocation of an Operation.' 
      isRoot = 'true' isLeaf = 'true' isAbstract = 'false' visibility = 'public_vis' 
      isDerived = 'false' >
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id = 'a3A638C3503C4' 
          name = 'callAction' annotation = '' 
          isNavigable = 'true' aggregation = 'none' isChangeable = 'true' 
          type = 'a3A638B7E0318' >
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower = '0' upper = '-1' is_ordered = 'false' is_unique = 'true' />
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id = 'a3A638C3503D4' 
          name = 'operation' annotation = '' 
          isNavigable = 'true' aggregation = 'none' isChangeable = 'true' 
          type = 'a327BB68C0398' >
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower = '1' upper = '1' is_ordered = 'false' is_unique = 'false' />
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Behavioral.OperationMethod    [Association] ==================== -->
    <Model:Association xmi.id = 'a32B6D9B302FD' 
      name = 'OperationMethod' annotation = 'The OperationMethod association links an Operation with the Method instance(s) that realize it. The various Method instances represent alternative implementations (usually in different programming languages or environments) of the Operation.' 
      isRoot = 'true' isLeaf = 'true' isAbstract = 'false' visibility = 'protected_vis' 
      isDerived = 'false' >
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id = 'a32B6D9BE00C8' 
          name = 'specification' annotation = '' 
          isNavigable = 'true' aggregation = 'none' isChangeable = 'true' 
          type = 'a327BB68C0398' >
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower = '1' upper = '1' is_ordered = 'false' is_unique = 'false' />
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id = 'a32B6D9BE00C9' 
          name = 'method' annotation = '' 
          isNavigable = 'true' aggregation = 'none' isChangeable = 'true' 
          type = 'a327BB67E0028' >
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower = '0' upper = '-1' is_ordered = 'false' is_unique = 'true' />
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Behavioral.ParameterType    [Association] ==================== -->
    <Model:Association xmi.id = 'a335BC7D400A0' 
      name = 'ParameterType' annotation = 'The ParameterType association links a Parameter instance with the Classifier that defines the parameter&#x0092;s type.' 
      isRoot = 'true' isLeaf = 'true' isAbstract = 'false' visibility = 'public_vis' 
      isDerived = 'false' >
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id = 'a335BC7D50398' 
          name = 'parameter' annotation = '' 
          isNavigable = 'true' aggregation = 'none' isChangeable = 'true' 
          type = 'a327BBB9F02B2' >
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower = '0' upper = '-1' is_ordered = 'false' is_unique = 'true' />
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id = 'a335BC7D503D4' 
          name = 'type' annotation = '' 
          isNavigable = 'true' aggregation = 'none' isChangeable = 'true' 
          type = 'a32989FB2023D' >
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower = '1' upper = '1' is_ordered = 'false' is_unique = 'false' />
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
  </Model:Namespace.contents>
</Model:Package>
<!-- ==================== Relationships    [Package] ==================== -->
<Model:Package xmi.id = 'a3A63421F0357' 
  name = 'Relationships' 
  isRoot = 'false' isLeaf = 'false' isAbstract = 'false' visibility = 'public_vis' >
  <Model:ModelElement.annotation>The Relationships metamodel depends on the following package:

    org.omg::CWM::ObjectModel::Core

The Relationships metamodel collects together classes and associations that describe  the relationships between object within a CWM information store. The Relationships metamodel describes to types of relationships: association and generalization.

Association relationships record linkages between model elements. These linkages may represent simple linkages between model elements or aggregation ("is part of") relationships between model elements; aggregation relationships come in two forms -- shared and composite. Associations have two or more named ends that link them to instances of the classes connected by the association.

Generalization relationships record arrangements of model elements into type hierarchies in a parent/child (or "is type of") fashion. Child types are said to "specialize", "subclass" or "subtype" their parental  types, represent a subset of parental instances that fulfill the definition of the child type, and inherit the structural features
(Attributes, AssociationEnd) and behavioral features (Operations, Methods) of their parents. Parental types are said to "generalize" their child types or to be "superclasses" or "supertypes" of their children.

CWM generalization hierarchies support multiple inheritance; that is, child types may have more than one parental type and inherit the union of the features of all their parental types. Although called "hierarchies", multiple inheritance actually represents a directed acyclic graph of parental and child types.

OCL Representation of Relationships Constraints

Operations

The operation allConnections results in the set of all AssociationEnds of the Association.
   allConnections : Set(AssociationEnd);
   allConnections = self.feature.oclIsKindOf(AssociationEnd)

Constraints

[C-5-1] An Association must have at least 2 AssociationEnds.
context Association inv:
self.allConnections-&gt;size &gt; 1

[C-5-2] The AssociationEnds must have a unique name within the association.
context Association inv:
self.allConnections-&gt;forAll( r1, r2 | r1.name = r2.name implies r1 = r2)

[C-5-3] At most one AssociationEnd may be an aggregation or composition.
context Association inv:
self.allConnections-&gt;select(aggregation &lt;&gt; #ak_none)-&gt;size &lt;= 1

[C-5-4] If an Association has three or more AssociationEnds, then no AssociationEnd may be an aggregation or composition.
context Association inv:
self.allConnections-&gt;size &gt;=3 implies
self.allConnections-&gt;forall(aggregation = #ak_none)

[C-5-5] The connected Classifiers of the AssociationEnds should be included in the Namespace of the Association, or be Classifiers with public visibility in other Namespaces to which the Association has access.
context Association inv:
self.allConnections-&gt;forAll(r | self.namespace.allContents-&gt;includes (r.type) ) or
self.allConnections-&gt;forAll(r | self.namespace.allContents-&gt;excludes (r.type))
   implies
self.namespace.clientDependency-&gt;exists (d |
   d.supplier.oclAsType(Namespace).ownedElement-&gt;select (e |
      e.elementOwnership.visibility = #ak_public)-&gt;includes (r.type) or
   d.supplier.oclAsType(Classifier).allParents.
      oclAsType(Namespace).ownedElement-&gt;select (e |
         e.elementOwnership.visibility = #ak_public)-&gt;includes (r.type) or
         d.supplier.oclAsType(Package).allImportedElements-&gt;select (e |
            e.elementImport.visibility = #ak_public) -&gt;includes (r.type) ) )

[C-5-6] An AssociationEnd must have an owning Association.
context AssociationEnd inv:
self.owner.oclIsKindOf(Association)

[C-5-7] The Classifier of an AssociationEnd cannot be an Interface or a DataType if the association is navigable away from that end.
context AssociationEnd inv:
(self.type.oclIsKindOf (Interface) or
self.type.oclIsKindOf (DataType)) implies
self.owner-&gt;select (ae | ae &lt;self)-&gt;forAll(ae | ae.isNavigable = #false)

[C-5-8] An instance may not belong by composition to more than one composite Instance.
context AssociationEnd inv:
self.aggregation = #ak_composite implies self.multiplicity.max &lt;= 1

[C-5-9] An AssociationEnd with composite or shared aggregation semantics must be owned by an Association.
context AssociationEnd inv:
self.aggregation = #ak_composite or self.aggregation = #ak_shared implies
self.owner.oclIsKindOf(Association)
</Model:ModelElement.annotation>
  <Model:Namespace.contents>
    <!-- ==================== Relationships.org.omg.mof.idl_prefix=org.omg.cwm.objectmodel    [Tag] ==================== -->
    <Model:Tag xmi.id = 'G.858' 
      name = 'org.omg.mof.idl_prefix=org.omg.cwm.objectmodel' annotation = '' 
      tagId = 'org.omg.mof.idl_prefix' 
      elements = 'a3A63421F0357' >
      <Model:Tag.values>
        <XMI.any xmi.type = 'string' xmi.name = ''>org.omg.cwm.objectmodel</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Relationships.org.omg.xmi.namespace=CWM    [Tag] ==================== -->
    <Model:Tag xmi.id = 'G.859' 
      name = 'org.omg.xmi.namespace=CWM' annotation = '' 
      tagId = 'org.omg.xmi.namespace' 
      elements = 'a3A63421F0357' >
      <Model:Tag.values>
        <XMI.any xmi.type = 'string' xmi.name = ''>CWM</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Relationships.org.omg.mof.idl_substitute_name=RelationshipsModule    [Tag] ==================== -->
    <Model:Tag xmi.id = 'G.860' 
      name = 'org.omg.mof.idl_substitute_name=RelationshipsModule' annotation = '' 
      tagId = 'org.omg.mof.idl_substitute_name' 
      elements = 'a3A63421F0357' >
      <Model:Tag.values>
        <XMI.any xmi.type = 'string' xmi.name = ''>RelationshipsModule</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Relationships.com.urep.jcr.java_prefix=org.omg.java.cwm.objectmodel    [Tag] ==================== -->
    <Model:Tag xmi.id = 'G.861' 
      name = 'com.urep.jcr.java_prefix=org.omg.java.cwm.objectmodel' annotation = '' 
      tagId = 'com.urep.jcr.java_prefix' 
      elements = 'a3A63421F0357' >
      <Model:Tag.values>
        <XMI.any xmi.type = 'string' xmi.name = ''>org.omg.java.cwm.objectmodel</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <Model:Import xmi.id = 'G.862' 
      name = 'Core' annotation = '' 
      visibility = 'public_vis' isClustered = 'true' 
      importedNamespace = 'a3A6600C5031F' />
    <!-- ==================== Relationships.Association    [Class] ==================== -->
    <Model:Class xmi.id = 'a3A54CBFF0090' 
      name = 'Association' 
      isRoot = 'false' isLeaf = 'false' isAbstract = 'false' visibility = 'public_vis' 
      isSingleton = 'false' 
      supertypes = 'a3298A02900FE' >
      <Model:ModelElement.annotation>An association defines a semantic relationship between classifiers. Associations have two or more named ends. Associations with two or more ends are called "n-ary" whereas associations with exactly two ends are called "binary". Each end, depending
upon its multiplicity, connects to zero or more instances of some classifier.

In the metamodel, an Association is a declaration of a semantic relationship between Classifiers, such as Classes. Associations must have two, and may have more, association ends. Each end is connected to a Classifier; the same Classifier may be 
connected to more than one association end in the same association. (Refer to the ObjectModel&#x0092;s Instance package, below, for a description of how Associations are instantiated.)

Because Associations are classifiers, they own and order their association ends (which are Attributes) via the ClassifierFeature association. In addition, because Associations are Classes, they can also own more traditional StructuralFeatures such as Attributes. Consequently, they may act in a manner similar to "association classes" described by
some other object models.

An association may represent an aggregation (i.e., a whole/part relationship). In this case, the association end attached to the whole element is designated, and the other association end represents the parts of the aggregation.

Associations can be of three different kinds: (1) ordinary association, (2) composite aggregate, and (3) shareable aggregate. Since the aggregate construct can have several different meanings depending on the application area, CWM gives a more precise meaning to two of these constructs (i.e., association and composite aggregate) and leaves the shareable aggregate more loosely defined in between. Only binary Associations can have composite or sharable aggregation semantics.

Composite aggregation is a strong form of aggregation which requires that a part instance be included in at most one composite at a time and that the compos