<?xml version="1.0" encoding="UTF-8"?>
<xmi:XMI xmlns:xmi="http://www.omg.org/spec/XMI/20110701" xmlns:uml="http://www.omg.org/spec/UML/20110701" xmlns:mofext="http://www.omg.org/spec/MOF/20110701">
  <uml:Package xmi:type="uml:Package" xmi:id="_0" name="UML" URI="http://www.omg.org/spec/UML/20110701">
    <packageImport xmi:type="uml:PackageImport" xmi:id="_packageImport.0">
      <importedPackage href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#_0"/>
    </packageImport>
    <packagedElement xmi:type="uml:Association" xmi:id="A_action_actionExecutionSpecification" name="A_action_actionExecutionSpecification" memberEnd="ActionExecutionSpecification-action A_action_actionExecutionSpecification-actionExecutionSpecification">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_action_actionExecutionSpecification-actionExecutionSpecification" name="actionExecutionSpecification" visibility="public" type="ActionExecutionSpecification" association="A_action_actionExecutionSpecification">
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_action_actionExecutionSpecification-actionExecutionSpecification-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_action_actionExecutionSpecification-actionExecutionSpecification-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_action_interaction" name="A_action_interaction" memberEnd="Interaction-action A_action_interaction-interaction">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_action_interaction-interaction" name="interaction" visibility="public" type="Interaction" subsettedProperty="Element-owner" association="A_action_interaction">
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_action_interaction-interaction-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_addition_include" name="A_addition_include" memberEnd="Include-addition A_addition_include-include">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_addition_include-include" name="include" visibility="public" type="Include" subsettedProperty="A_target_directedRelationship-directedRelationship" association="A_addition_include">
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_addition_include-include-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_addition_include-include-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_annotatedElement_comment" name="A_annotatedElement_comment" memberEnd="Comment-annotatedElement A_annotatedElement_comment-comment">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_annotatedElement_comment-comment" name="comment" visibility="public" type="Comment" association="A_annotatedElement_comment">
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_annotatedElement_comment-comment-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_annotatedElement_comment-comment-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_argument_invocationAction" name="A_argument_invocationAction" memberEnd="InvocationAction-argument A_argument_invocationAction-invocationAction">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_argument_invocationAction-invocationAction" name="invocationAction" visibility="public" type="InvocationAction" subsettedProperty="A_input_action-action" association="A_argument_invocationAction">
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_argument_invocationAction-invocationAction-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_argument_message" name="A_argument_message" memberEnd="Message-argument A_argument_message-message">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_argument_message-message" name="message" visibility="public" type="Message" subsettedProperty="Element-owner" association="A_argument_message">
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_argument_message-message-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_attribute_classifier" name="A_attribute_classifier" memberEnd="Classifier-attribute A_attribute_classifier-classifier" isDerived="true">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_attribute_classifier-classifier" name="classifier" visibility="public" type="Classifier" subsettedProperty="RedefinableElement-redefinitionContext Feature-featuringClassifier" association="A_attribute_classifier">
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_attribute_classifier-classifier-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_before_toAfter" name="A_before_toAfter" memberEnd="GeneralOrdering-before OccurrenceSpecification-toAfter"/>
    <packagedElement xmi:type="uml:Association" xmi:id="A_behavior_behaviorExecutionSpecification" name="A_behavior_behaviorExecutionSpecification" memberEnd="BehaviorExecutionSpecification-behavior A_behavior_behaviorExecutionSpecification-behaviorExecutionSpecification">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_behavior_behaviorExecutionSpecification-behaviorExecutionSpecification" name="behaviorExecutionSpecification" visibility="public" type="BehaviorExecutionSpecification" association="A_behavior_behaviorExecutionSpecification">
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_behavior_behaviorExecutionSpecification-behaviorExecutionSpecification-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_behavior_behaviorExecutionSpecification-behaviorExecutionSpecification-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_behavior_callBehaviorAction" name="A_behavior_callBehaviorAction" memberEnd="CallBehaviorAction-behavior A_behavior_callBehaviorAction-callBehaviorAction">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_behavior_callBehaviorAction-callBehaviorAction" name="callBehaviorAction" visibility="public" type="CallBehaviorAction" association="A_behavior_callBehaviorAction">
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_behavior_callBehaviorAction-callBehaviorAction-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_behavior_callBehaviorAction-callBehaviorAction-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_behavior_opaqueExpression" name="A_behavior_opaqueExpression" memberEnd="OpaqueExpression-behavior A_behavior_opaqueExpression-opaqueExpression">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_behavior_opaqueExpression-opaqueExpression" name="opaqueExpression" visibility="public" type="OpaqueExpression" association="A_behavior_opaqueExpression">
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_behavior_opaqueExpression-opaqueExpression-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_behavior_opaqueExpression-opaqueExpression-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_bodyCondition_bodyContext" name="A_bodyCondition_bodyContext" memberEnd="Operation-bodyCondition A_bodyCondition_bodyContext-bodyContext">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_bodyCondition_bodyContext-bodyContext" name="bodyContext" visibility="public" type="Operation" subsettedProperty="Constraint-context" association="A_bodyCondition_bodyContext">
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_bodyCondition_bodyContext-bodyContext-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_changeExpression_changeEvent" name="A_changeExpression_changeEvent" memberEnd="ChangeEvent-changeExpression A_changeExpression_changeEvent-changeEvent">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_changeExpression_changeEvent-changeEvent" name="changeEvent" visibility="public" type="ChangeEvent" subsettedProperty="Element-owner" association="A_changeExpression_changeEvent">
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_changeExpression_changeEvent-changeEvent-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_classifierBehavior_behavioredClassifier" name="A_classifierBehavior_behavioredClassifier" memberEnd="BehavioredClassifier-classifierBehavior A_classifierBehavior_behavioredClassifier-behavioredClassifier">
      <generalization xmi:type="uml:Generalization" xmi:id="A_classifierBehavior_behavioredClassifier-_generalization.0" general="A_ownedBehavior_behavioredClassifier"/>
      <ownedEnd xmi:type="uml:Property" xmi:id="A_classifierBehavior_behavioredClassifier-behavioredClassifier" name="behavioredClassifier" visibility="public" type="BehavioredClassifier" redefinedProperty="A_ownedBehavior_behavioredClassifier-behavioredClassifier" association="A_classifierBehavior_behavioredClassifier">
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_classifierBehavior_behavioredClassifier-behavioredClassifier-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_classifier_enumerationLiteral" name="A_classifier_enumerationLiteral" memberEnd="EnumerationLiteral-classifier A_classifier_enumerationLiteral-enumerationLiteral" isDerived="true">
      <generalization xmi:type="uml:Generalization" xmi:id="A_classifier_enumerationLiteral-_generalization.0" general="A_classifier_instanceSpecification"/>
      <ownedEnd xmi:type="uml:Property" xmi:id="A_classifier_enumerationLiteral-enumerationLiteral" name="enumerationLiteral" visibility="public" type="EnumerationLiteral" redefinedProperty="A_classifier_instanceSpecification-instanceSpecification" association="A_classifier_enumerationLiteral">
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_classifier_enumerationLiteral-enumerationLiteral-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_classifier_enumerationLiteral-enumerationLiteral-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_classifier_instanceSpecification" name="A_classifier_instanceSpecification" memberEnd="InstanceSpecification-classifier A_classifier_instanceSpecification-instanceSpecification">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_classifier_instanceSpecification-instanceSpecification" name="instanceSpecification" visibility="public" type="InstanceSpecification" association="A_classifier_instanceSpecification">
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_classifier_instanceSpecification-instanceSpecification-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_classifier_instanceSpecification-instanceSpecification-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_clientDependency_client" name="A_clientDependency_client" memberEnd="NamedElement-clientDependency Dependency-client"/>
    <packagedElement xmi:type="uml:Association" xmi:id="A_condition_extend" name="A_condition_extend" memberEnd="Extend-condition A_condition_extend-extend">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_condition_extend-extend" name="extend" visibility="public" type="Extend" subsettedProperty="Element-owner" association="A_condition_extend">
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_condition_extend-extend-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_connector_message" name="A_connector_message" memberEnd="Message-connector A_connector_message-message">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_connector_message-message" name="message" visibility="public" type="Message" association="A_connector_message">
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_connector_message-message-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_connector_message-message-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_constrainedElement_constraint" name="A_constrainedElement_constraint" memberEnd="Constraint-constrainedElement A_constrainedElement_constraint-constraint">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_constrainedElement_constraint-constraint" name="constraint" visibility="public" type="Constraint" association="A_constrainedElement_constraint">
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_constrainedElement_constraint-constraint-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_constrainedElement_constraint-constraint-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_containedEdge_inGroup" name="A_containedEdge_inGroup" memberEnd="ActivityGroup-containedEdge ActivityEdge-inGroup" isDerived="true"/>
    <packagedElement xmi:type="uml:Association" xmi:id="A_containedNode_inGroup" name="A_containedNode_inGroup" memberEnd="ActivityGroup-containedNode ActivityNode-inGroup" isDerived="true"/>
    <packagedElement xmi:type="uml:Association" xmi:id="A_context_action" name="A_context_action" memberEnd="Action-context A_context_action-action" isDerived="true">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_context_action-action" name="action" visibility="public" type="Action" association="A_context_action">
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_context_action-action-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_context_action-action-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_context_behavior" name="A_context_behavior" memberEnd="Behavior-context A_context_behavior-behavior" isDerived="true">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_context_behavior-behavior" name="behavior" visibility="public" type="Behavior" subsettedProperty="A_redefinitionContext_redefinableElement-redefinableElement" association="A_context_behavior">
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_context_behavior-behavior-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_context_behavior-behavior-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_contract_interfaceRealization" name="A_contract_interfaceRealization" memberEnd="InterfaceRealization-contract A_contract_interfaceRealization-interfaceRealization">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_contract_interfaceRealization-interfaceRealization" name="interfaceRealization" visibility="public" type="InterfaceRealization" subsettedProperty="A_supplier_supplierDependency-supplierDependency" association="A_contract_interfaceRealization">
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_contract_interfaceRealization-interfaceRealization-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_contract_interfaceRealization-interfaceRealization-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_contract_substitution" name="A_contract_substitution" memberEnd="Substitution-contract A_contract_substitution-substitution">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_contract_substitution-substitution" name="substitution" visibility="public" type="Substitution" subsettedProperty="A_supplier_supplierDependency-supplierDependency" association="A_contract_substitution">
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_contract_substitution-substitution-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_contract_substitution-substitution-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_covered_coveredBy" name="A_covered_coveredBy" memberEnd="InteractionFragment-covered Lifeline-coveredBy">
      <ownedComment xmi:type="uml:Comment" xmi:id="A_covered_coveredBy-_ownedComment.0" annotatedElement="A_covered_coveredBy">
        <body>This association shows the lifelines that make up an interaction. A lifeline may be part of more than one interaction use.</body>
      </ownedComment>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_covered_events" name="A_covered_events" memberEnd="OccurrenceSpecification-covered A_covered_events-events">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_covered_events-events" name="events" visibility="public" type="OccurrenceSpecification" isOrdered="true" subsettedProperty="Lifeline-coveredBy" association="A_covered_events">
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_covered_events-events-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_covered_events-events-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_covered_stateInvariant" name="A_covered_stateInvariant" memberEnd="StateInvariant-covered A_covered_stateInvariant-stateInvariant">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_covered_stateInvariant-stateInvariant" name="stateInvariant" visibility="public" type="StateInvariant" subsettedProperty="Lifeline-coveredBy" association="A_covered_stateInvariant">
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_covered_stateInvariant-stateInvariant-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_covered_stateInvariant-stateInvariant-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_defaultValue_owningParameter" name="A_defaultValue_owningParameter" memberEnd="Parameter-defaultValue A_defaultValue_owningParameter-owningParameter">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_defaultValue_owningParameter-owningParameter" name="owningParameter" visibility="public" type="Parameter" subsettedProperty="Element-owner" association="A_defaultValue_owningParameter">
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_defaultValue_owningParameter-owningParameter-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_defaultValue_owningProperty" name="A_defaultValue_owningProperty" memberEnd="Property-defaultValue A_defaultValue_owningProperty-owningProperty">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_defaultValue_owningProperty-owningProperty" name="owningProperty" visibility="public" type="Property" subsettedProperty="Element-owner" association="A_defaultValue_owningProperty">
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_defaultValue_owningProperty-owningProperty-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_definingEnd_connectorEnd" name="A_definingEnd_connectorEnd" memberEnd="ConnectorEnd-definingEnd A_definingEnd_connectorEnd-connectorEnd" isDerived="true">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_definingEnd_connectorEnd-connectorEnd" name="connectorEnd" visibility="public" type="ConnectorEnd" association="A_definingEnd_connectorEnd">
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_definingEnd_connectorEnd-connectorEnd-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_definingEnd_connectorEnd-connectorEnd-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_definingFeature_slot" name="A_definingFeature_slot" memberEnd="Slot-definingFeature A_definingFeature_slot-slot">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_definingFeature_slot-slot" name="slot" visibility="public" type="Slot" association="A_definingFeature_slot">
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_definingFeature_slot-slot-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_definingFeature_slot-slot-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_edge_activity" name="A_edge_activity" memberEnd="Activity-edge ActivityEdge-activity"/>
    <packagedElement xmi:type="uml:Association" xmi:id="A_elementImport_importingNamespace" name="A_elementImport_importingNamespace" memberEnd="Namespace-elementImport ElementImport-importingNamespace"/>
    <packagedElement xmi:type="uml:Association" xmi:id="A_endType_association" name="A_endType_association" memberEnd="Association-endType A_endType_association-association" isDerived="true">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_endType_association-association" name="association" visibility="public" type="Association" subsettedProperty="A_relatedElement_relationship-relationship" association="A_endType_association">
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_endType_association-association-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_endType_association-association-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_end_connector" name="A_end_connector" memberEnd="Connector-end A_end_connector-connector">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_end_connector-connector" name="connector" visibility="public" type="Connector" subsettedProperty="Element-owner" association="A_end_connector"/>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_end_role" name="A_end_role" memberEnd="ConnectableElement-end ConnectorEnd-role"/>
    <packagedElement xmi:type="uml:Association" xmi:id="A_event_trigger" name="A_event_trigger" memberEnd="Trigger-event A_event_trigger-trigger">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_event_trigger-trigger" name="trigger" visibility="public" type="Trigger" association="A_event_trigger">
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_event_trigger-trigger-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_event_trigger-trigger-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_execution_executionOccurrenceSpecification" name="A_execution_executionOccurrenceSpecification" memberEnd="ExecutionOccurrenceSpecification-execution A_execution_executionOccurrenceSpecification-executionOccurrenceSpecification">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_execution_executionOccurrenceSpecification-executionOccurrenceSpecification" name="executionOccurrenceSpecification" visibility="public" type="ExecutionOccurrenceSpecification" association="A_execution_executionOccurrenceSpecification">
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_execution_executionOccurrenceSpecification-executionOccurrenceSpecification-_upperValue" value="2"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_execution_executionOccurrenceSpecification-executionOccurrenceSpecification-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_extend_extension" name="A_extend_extension" memberEnd="UseCase-extend Extend-extension"/>
    <packagedElement xmi:type="uml:Association" xmi:id="A_extendedCase_extend" name="A_extendedCase_extend" memberEnd="Extend-extendedCase A_extendedCase_extend-extend">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_extendedCase_extend-extend" name="extend" visibility="public" type="Extend" subsettedProperty="A_target_directedRelationship-directedRelationship" association="A_extendedCase_extend">
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_extendedCase_extend-extend-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_extendedCase_extend-extend-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_extensionLocation_extension" name="A_extensionLocation_extension" memberEnd="Extend-extensionLocation A_extensionLocation_extension-extension">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_extensionLocation_extension-extension" name="extension" visibility="public" type="Extend" association="A_extensionLocation_extension">
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_extensionLocation_extension-extension-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_extensionLocation_extension-extension-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_extensionPoint_useCase" name="A_extensionPoint_useCase" memberEnd="UseCase-extensionPoint ExtensionPoint-useCase"/>
    <packagedElement xmi:type="uml:Association" xmi:id="A_feature_featuringClassifier" name="A_feature_featuringClassifier" memberEnd="Classifier-feature Feature-featuringClassifier" isDerived="true"/>
    <packagedElement xmi:type="uml:Association" xmi:id="A_finish_executionSpecification" name="A_finish_executionSpecification" memberEnd="ExecutionSpecification-finish A_finish_executionSpecification-executionSpecification">
      <ownedComment xmi:type="uml:Comment" xmi:id="A_finish_executionSpecification-_ownedComment.0" annotatedElement="A_finish_executionSpecification">
        <body>The event shows the time point at which the action completes execution.</body>
      </ownedComment>
      <ownedEnd xmi:type="uml:Property" xmi:id="A_finish_executionSpecification-executionSpecification" name="executionSpecification" visibility="public" type="ExecutionSpecification" association="A_finish_executionSpecification">
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_finish_executionSpecification-executionSpecification-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_finish_executionSpecification-executionSpecification-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_fragment_enclosingInteraction" name="A_fragment_enclosingInteraction" memberEnd="Interaction-fragment InteractionFragment-enclosingInteraction"/>
    <packagedElement xmi:type="uml:Association" xmi:id="A_generalOrdering_interactionFragment" name="A_generalOrdering_interactionFragment" memberEnd="InteractionFragment-generalOrdering A_generalOrdering_interactionFragment-interactionFragment">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_generalOrdering_interactionFragment-interactionFragment" name="interactionFragment" visibility="public" type="InteractionFragment" subsettedProperty="Element-owner" association="A_generalOrdering_interactionFragment">
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_generalOrdering_interactionFragment-interactionFragment-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_general_classifier" name="A_general_classifier" memberEnd="Classifier-general A_general_classifier-classifier" isDerived="true">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_general_classifier-classifier" name="classifier" visibility="public" type="Classifier" association="A_general_classifier">
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_general_classifier-classifier-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_general_classifier-classifier-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_general_generalization" name="A_general_generalization" memberEnd="Generalization-general A_general_generalization-generalization">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_general_generalization-generalization" name="generalization" visibility="public" type="Generalization" subsettedProperty="A_target_directedRelationship-directedRelationship" association="A_general_generalization">
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_general_generalization-generalization-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_general_generalization-generalization-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_generalization_specific" name="A_generalization_specific" memberEnd="Classifier-generalization Generalization-specific"/>
    <packagedElement xmi:type="uml:Association" xmi:id="A_group_inActivity" name="A_group_inActivity" memberEnd="Activity-group ActivityGroup-inActivity"/>
    <packagedElement xmi:type="uml:Association" xmi:id="A_importedElement_elementImport" name="A_importedElement_elementImport" memberEnd="ElementImport-importedElement A_importedElement_elementImport-elementImport">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_importedElement_elementImport-elementImport" name="elementImport" visibility="public" type="ElementImport" subsettedProperty="A_target_directedRelationship-directedRelationship" association="A_importedElement_elementImport">
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_importedElement_elementImport-elementImport-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_importedElement_elementImport-elementImport-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_importedMember_namespace" name="A_importedMember_namespace" memberEnd="Namespace-importedMember A_importedMember_namespace-namespace" isDerived="true">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_importedMember_namespace-namespace" name="namespace" visibility="public" type="Namespace" subsettedProperty="A_member_memberNamespace-memberNamespace" association="A_importedMember_namespace">
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_importedMember_namespace-namespace-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_importedMember_namespace-namespace-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_importedPackage_packageImport" name="A_importedPackage_packageImport" memberEnd="PackageImport-importedPackage A_importedPackage_packageImport-packageImport">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_importedPackage_packageImport-packageImport" name="packageImport" visibility="public" type="PackageImport" subsettedProperty="A_target_directedRelationship-directedRelationship" association="A_importedPackage_packageImport">
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_importedPackage_packageImport-packageImport-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_importedPackage_packageImport-packageImport-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_include_includingCase" name="A_include_includingCase" memberEnd="UseCase-include Include-includingCase"/>
    <packagedElement xmi:type="uml:Association" xmi:id="A_incoming_target_node" name="A_incoming_target_node" memberEnd="ActivityNode-incoming ActivityEdge-target"/>
    <packagedElement xmi:type="uml:Association" xmi:id="A_inheritedMember_classifier" name="A_inheritedMember_classifier" memberEnd="Classifier-inheritedMember A_inheritedMember_classifier-classifier" isDerived="true">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_inheritedMember_classifier-classifier" name="classifier" visibility="public" type="Classifier" subsettedProperty="A_member_memberNamespace-memberNamespace" association="A_inheritedMember_classifier">
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_inheritedMember_classifier-classifier-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_inheritedMember_classifier-classifier-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_inputValue_opaqueAction" name="A_inputValue_opaqueAction" memberEnd="OpaqueAction-inputValue A_inputValue_opaqueAction-opaqueAction">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_inputValue_opaqueAction-opaqueAction" name="opaqueAction" visibility="public" type="OpaqueAction" subsettedProperty="A_input_action-action" association="A_inputValue_opaqueAction">
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_inputValue_opaqueAction-opaqueAction-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_input_action" name="A_input_action" memberEnd="Action-input A_input_action-action" isDerived="true">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_input_action-action" name="action" visibility="public" type="Action" subsettedProperty="Element-owner" association="A_input_action">
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_input_action-action-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_instance_instanceValue" name="A_instance_instanceValue" memberEnd="InstanceValue-instance A_instance_instanceValue-instanceValue">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_instance_instanceValue-instanceValue" name="instanceValue" visibility="public" type="InstanceValue" association="A_instance_instanceValue">
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_instance_instanceValue-instanceValue-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_instance_instanceValue-instanceValue-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_interfaceRealization_implementingClassifier" name="A_interfaceRealization_implementingClassifier" memberEnd="BehavioredClassifier-interfaceRealization InterfaceRealization-implementingClassifier"/>
    <packagedElement xmi:type="uml:Association" xmi:id="A_invariant_stateInvariant" name="A_invariant_stateInvariant" memberEnd="StateInvariant-invariant A_invariant_stateInvariant-stateInvariant">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_invariant_stateInvariant-stateInvariant" name="stateInvariant" visibility="public" type="StateInvariant" subsettedProperty="Element-owner" association="A_invariant_stateInvariant">
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_invariant_stateInvariant-stateInvariant-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_lifeline_interaction" name="A_lifeline_interaction" memberEnd="Interaction-lifeline Lifeline-interaction"/>
    <packagedElement xmi:type="uml:Association" xmi:id="A_lowerValue_owningLower" name="A_lowerValue_owningLower" memberEnd="MultiplicityElement-lowerValue A_lowerValue_owningLower-owningLower">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_lowerValue_owningLower-owningLower" name="owningLower" visibility="public" type="MultiplicityElement" subsettedProperty="Element-owner" association="A_lowerValue_owningLower">
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_lowerValue_owningLower-owningLower-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_mapping_abstraction" name="A_mapping_abstraction" memberEnd="Abstraction-mapping A_mapping_abstraction-abstraction">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_mapping_abstraction-abstraction" name="abstraction" visibility="public" type="Abstraction" subsettedProperty="Element-owner" association="A_mapping_abstraction">
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_mapping_abstraction-abstraction-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_memberEnd_association" name="A_memberEnd_association" memberEnd="Association-memberEnd Property-association"/>
    <packagedElement xmi:type="uml:Association" xmi:id="A_member_memberNamespace" name="A_member_memberNamespace" memberEnd="Namespace-member A_member_memberNamespace-memberNamespace" isDerived="true">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_member_memberNamespace-memberNamespace" name="memberNamespace" visibility="public" type="Namespace" association="A_member_memberNamespace">
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_member_memberNamespace-memberNamespace-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_member_memberNamespace-memberNamespace-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_mergedPackage_packageMerge" name="A_mergedPackage_packageMerge" memberEnd="PackageMerge-mergedPackage A_mergedPackage_packageMerge-packageMerge">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_mergedPackage_packageMerge-packageMerge" name="packageMerge" visibility="public" type="PackageMerge" subsettedProperty="A_target_directedRelationship-directedRelationship" association="A_mergedPackage_packageMerge">
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_mergedPackage_packageMerge-packageMerge-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_mergedPackage_packageMerge-packageMerge-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_message_interaction" name="A_message_interaction" memberEnd="Interaction-message Message-interaction"/>
    <packagedElement xmi:type="uml:Association" xmi:id="A_message_messageEnd" name="A_message_messageEnd" memberEnd="MessageEnd-message A_message_messageEnd-messageEnd">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_message_messageEnd-messageEnd" name="messageEnd" visibility="public" type="MessageEnd" association="A_message_messageEnd">
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_message_messageEnd-messageEnd-_upperValue" value="2"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_message_messageEnd-messageEnd-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_method_specification" name="A_method_specification" memberEnd="BehavioralFeature-method Behavior-specification"/>
    <packagedElement xmi:type="uml:Association" xmi:id="A_navigableOwnedEnd_association" name="A_navigableOwnedEnd_association" memberEnd="Association-navigableOwnedEnd A_navigableOwnedEnd_association-association">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_navigableOwnedEnd_association-association" name="association" visibility="public" type="Association" subsettedProperty="Property-owningAssociation" association="A_navigableOwnedEnd_association">
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_navigableOwnedEnd_association-association-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_nestedClassifier_class" name="A_nestedClassifier_class" memberEnd="Class-nestedClassifier A_nestedClassifier_class-class">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_nestedClassifier_class-class" name="class" visibility="public" type="Class" subsettedProperty="RedefinableElement-redefinitionContext NamedElement-namespace" association="A_nestedClassifier_class">
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_nestedClassifier_class-class-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_nestedClassifier_interface" name="A_nestedClassifier_interface" memberEnd="Interface-nestedClassifier A_nestedClassifier_interface-interface">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_nestedClassifier_interface-interface" name="interface" visibility="public" type="Interface" subsettedProperty="RedefinableElement-redefinitionContext NamedElement-namespace" association="A_nestedClassifier_interface">
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_nestedClassifier_interface-interface-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_nestedPackage_nestingPackage" name="A_nestedPackage_nestingPackage" memberEnd="Package-nestedPackage Package-nestingPackage"/>
    <packagedElement xmi:type="uml:Association" xmi:id="A_node_activity" name="A_node_activity" memberEnd="Activity-node ActivityNode-activity"/>
    <packagedElement xmi:type="uml:Association" xmi:id="A_operand_expression" name="A_operand_expression" memberEnd="Expression-operand A_operand_expression-expression">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_operand_expression-expression" name="expression" visibility="public" type="Expression" subsettedProperty="Element-owner" association="A_operand_expression">
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_operand_expression-expression-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_operation_callEvent" name="A_operation_callEvent" memberEnd="CallEvent-operation A_operation_callEvent-callEvent">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_operation_callEvent-callEvent" name="callEvent" visibility="public" type="CallEvent" association="A_operation_callEvent">
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_operation_callEvent-callEvent-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_operation_callEvent-callEvent-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_operation_callOperationAction" name="A_operation_callOperationAction" memberEnd="CallOperationAction-operation A_operation_callOperationAction-callOperationAction">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_operation_callOperationAction-callOperationAction" name="callOperationAction" visibility="public" type="CallOperationAction" association="A_operation_callOperationAction">
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_operation_callOperationAction-callOperationAction-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_operation_callOperationAction-callOperationAction-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_opposite_property" name="A_opposite_property" memberEnd="Property-opposite A_opposite_property-property" isDerived="true">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_opposite_property-property" name="property" visibility="public" type="Property" association="A_opposite_property">
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_opposite_property-property-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_outgoing_source_node" name="A_outgoing_source_node" memberEnd="ActivityNode-outgoing ActivityEdge-source"/>
    <packagedElement xmi:type="uml:Association" xmi:id="A_outputValue_opaqueAction" name="A_outputValue_opaqueAction" memberEnd="OpaqueAction-outputValue A_outputValue_opaqueAction-opaqueAction">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_outputValue_opaqueAction-opaqueAction" name="opaqueAction" visibility="public" type="OpaqueAction" subsettedProperty="A_output_action-action" association="A_outputValue_opaqueAction">
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_outputValue_opaqueAction-opaqueAction-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_output_action" name="A_output_action" memberEnd="Action-output A_output_action-action" isDerived="true">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_output_action-action" name="action" visibility="public" type="Action" subsettedProperty="Element-owner" association="A_output_action">
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_output_action-action-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_ownedAttribute_class" name="A_ownedAttribute_class" memberEnd="Class-ownedAttribute Property-class"/>
    <packagedElement xmi:type="uml:Association" xmi:id="A_ownedAttribute_datatype" name="A_ownedAttribute_datatype" memberEnd="DataType-ownedAttribute Property-datatype"/>
    <packagedElement xmi:type="uml:Association" xmi:id="A_ownedAttribute_interface" name="A_ownedAttribute_interface" memberEnd="Interface-ownedAttribute Property-interface"/>
    <packagedElement xmi:type="uml:Association" xmi:id="A_ownedAttribute_owningSignal" name="A_ownedAttribute_owningSignal" memberEnd="Signal-ownedAttribute A_ownedAttribute_owningSignal-owningSignal">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_ownedAttribute_owningSignal-owningSignal" name="owningSignal" visibility="public" type="Signal" subsettedProperty="A_attribute_classifier-classifier NamedElement-namespace" association="A_ownedAttribute_owningSignal">
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_ownedAttribute_owningSignal-owningSignal-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_ownedAttribute_structuredClassifier" name="A_ownedAttribute_structuredClassifier" memberEnd="StructuredClassifier-ownedAttribute A_ownedAttribute_structuredClassifier-structuredClassifier">
      <generalization xmi:type="uml:Generalization" xmi:id="A_ownedAttribute_structuredClassifier-_generalization.0" general="A_role_structuredClassifier"/>
      <ownedEnd xmi:type="uml:Property" xmi:id="A_ownedAttribute_structuredClassifier-structuredClassifier" name="structuredClassifier" visibility="public" type="StructuredClassifier" redefinedProperty="A_role_structuredClassifier-structuredClassifier" subsettedProperty="A_attribute_classifier-classifier NamedElement-namespace" association="A_ownedAttribute_structuredClassifier">
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_ownedAttribute_structuredClassifier-structuredClassifier-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_ownedBehavior_behavioredClassifier" name="A_ownedBehavior_behavioredClassifier" memberEnd="BehavioredClassifier-ownedBehavior A_ownedBehavior_behavioredClassifier-behavioredClassifier">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_ownedBehavior_behavioredClassifier-behavioredClassifier" name="behavioredClassifier" visibility="public" type="BehavioredClassifier" subsettedProperty="NamedElement-namespace" association="A_ownedBehavior_behavioredClassifier">
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_ownedBehavior_behavioredClassifier-behavioredClassifier-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_ownedComment_owningElement" name="A_ownedComment_owningElement" memberEnd="Element-ownedComment A_ownedComment_owningElement-owningElement">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_ownedComment_owningElement-owningElement" name="owningElement" visibility="public" type="Element" subsettedProperty="Element-owner" association="A_ownedComment_owningElement">
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_ownedComment_owningElement-owningElement-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_ownedConnector_structuredClassifier" name="A_ownedConnector_structuredClassifier" memberEnd="StructuredClassifier-ownedConnector A_ownedConnector_structuredClassifier-structuredClassifier">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_ownedConnector_structuredClassifier-structuredClassifier" name="structuredClassifier" visibility="public" type="StructuredClassifier" subsettedProperty="RedefinableElement-redefinitionContext Feature-featuringClassifier NamedElement-namespace" association="A_ownedConnector_structuredClassifier">
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_ownedConnector_structuredClassifier-structuredClassifier-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_ownedElement_owner" name="A_ownedElement_owner" memberEnd="Element-ownedElement Element-owner" isDerived="true"/>
    <packagedElement xmi:type="uml:Association" xmi:id="A_ownedEnd_owningAssociation" name="A_ownedEnd_owningAssociation" memberEnd="Association-ownedEnd Property-owningAssociation"/>
    <packagedElement xmi:type="uml:Association" xmi:id="A_ownedLiteral_enumeration" name="A_ownedLiteral_enumeration" memberEnd="Enumeration-ownedLiteral EnumerationLiteral-enumeration"/>
    <packagedElement xmi:type="uml:Association" xmi:id="A_ownedMember_namespace" name="A_ownedMember_namespace" memberEnd="Namespace-ownedMember NamedElement-namespace" isDerived="true"/>
    <packagedElement xmi:type="uml:Association" xmi:id="A_ownedOperation_class" name="A_ownedOperation_class" memberEnd="Class-ownedOperation Operation-class"/>
    <packagedElement xmi:type="uml:Association" xmi:id="A_ownedOperation_datatype" name="A_ownedOperation_datatype" memberEnd="DataType-ownedOperation Operation-datatype"/>
    <packagedElement xmi:type="uml:Association" xmi:id="A_ownedOperation_interface" name="A_ownedOperation_interface" memberEnd="Interface-ownedOperation Operation-interface"/>
    <packagedElement xmi:type="uml:Association" xmi:id="A_ownedParameter_behavior" name="A_ownedParameter_behavior" memberEnd="Behavior-ownedParameter A_ownedParameter_behavior-behavior">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_ownedParameter_behavior-behavior" name="behavior" visibility="public" type="Behavior" subsettedProperty="NamedElement-namespace" association="A_ownedParameter_behavior">
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_ownedParameter_behavior-behavior-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_ownedParameter_operation" name="A_ownedParameter_operation" memberEnd="Operation-ownedParameter Parameter-operation"/>
    <packagedElement xmi:type="uml:Association" xmi:id="A_ownedParameter_ownerFormalParam" name="A_ownedParameter_ownerFormalParam" memberEnd="BehavioralFeature-ownedParameter A_ownedParameter_ownerFormalParam-ownerFormalParam">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_ownedParameter_ownerFormalParam-ownerFormalParam" name="ownerFormalParam" visibility="public" type="BehavioralFeature" subsettedProperty="NamedElement-namespace" association="A_ownedParameter_ownerFormalParam">
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_ownedParameter_ownerFormalParam-ownerFormalParam-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_ownedReception_class" name="A_ownedReception_class" memberEnd="Class-ownedReception A_ownedReception_class-class">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_ownedReception_class-class" name="class" visibility="public" type="Class" subsettedProperty="Feature-featuringClassifier NamedElement-namespace" association="A_ownedReception_class">
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_ownedReception_class-class-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_ownedReception_interface" name="A_ownedReception_interface" memberEnd="Interface-ownedReception A_ownedReception_interface-interface">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_ownedReception_interface-interface" name="interface" visibility="public" type="Interface" subsettedProperty="Feature-featuringClassifier NamedElement-namespace" association="A_ownedReception_interface">
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_ownedReception_interface-interface-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_ownedRule_context" name="A_ownedRule_context" memberEnd="Namespace-ownedRule Constraint-context"/>
    <packagedElement xmi:type="uml:Association" xmi:id="A_ownedType_package" name="A_ownedType_package" memberEnd="Package-ownedType Type-package"/>
    <packagedElement xmi:type="uml:Association" xmi:id="A_ownedUseCase_classifier" name="A_ownedUseCase_classifier" memberEnd="Classifier-ownedUseCase A_ownedUseCase_classifier-classifier">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_ownedUseCase_classifier-classifier" name="classifier" visibility="public" type="Classifier" subsettedProperty="NamedElement-namespace" association="A_ownedUseCase_classifier">
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_ownedUseCase_classifier-classifier-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_packageImport_importingNamespace" name="A_packageImport_importingNamespace" memberEnd="Namespace-packageImport PackageImport-importingNamespace"/>
    <packagedElement xmi:type="uml:Association" xmi:id="A_packageMerge_receivingPackage" name="A_packageMerge_receivingPackage" memberEnd="Package-packageMerge PackageMerge-receivingPackage"/>
    <packagedElement xmi:type="uml:Association" xmi:id="A_packagedElement_owningPackage" name="A_packagedElement_owningPackage" memberEnd="Package-packagedElement A_packagedElement_owningPackage-owningPackage">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_packagedElement_owningPackage-owningPackage" name="owningPackage" visibility="public" type="Package" subsettedProperty="NamedElement-namespace" association="A_packagedElement_owningPackage">
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_packagedElement_owningPackage-owningPackage-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_parameter_activityParameterNode" name="A_parameter_activityParameterNode" memberEnd="ActivityParameterNode-parameter A_parameter_activityParameterNode-activityParameterNode">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_parameter_activityParameterNode-activityParameterNode" name="activityParameterNode" visibility="public" type="ActivityParameterNode" association="A_parameter_activityParameterNode">
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_parameter_activityParameterNode-activityParameterNode-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_parameter_activityParameterNode-activityParameterNode-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_part_structuredClassifier" name="A_part_structuredClassifier" memberEnd="StructuredClassifier-part A_part_structuredClassifier-structuredClassifier" isDerived="true">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_part_structuredClassifier-structuredClassifier" name="structuredClassifier" visibility="public" type="StructuredClassifier" association="A_part_structuredClassifier">
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_part_structuredClassifier-structuredClassifier-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_postcondition_behavior" name="A_postcondition_behavior" memberEnd="Behavior-postcondition A_postcondition_behavior-behavior">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_postcondition_behavior-behavior" name="behavior" visibility="public" type="Behavior" subsettedProperty="Constraint-context" association="A_postcondition_behavior">
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_postcondition_behavior-behavior-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_postcondition_postContext" name="A_postcondition_postContext" memberEnd="Operation-postcondition A_postcondition_postContext-postContext">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_postcondition_postContext-postContext" name="postContext" visibility="public" type="Operation" subsettedProperty="Constraint-context" association="A_postcondition_postContext">
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_postcondition_postContext-postContext-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_precondition_behavior" name="A_precondition_behavior" memberEnd="Behavior-precondition A_precondition_behavior-behavior">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_precondition_behavior-behavior" name="behavior" visibility="public" type="Behavior" subsettedProperty="Constraint-context" association="A_precondition_behavior">
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_precondition_behavior-behavior-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_precondition_preContext" name="A_precondition_preContext" memberEnd="Operation-precondition A_precondition_preContext-preContext">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_precondition_preContext-preContext" name="preContext" visibility="public" type="Operation" subsettedProperty="Constraint-context" association="A_precondition_preContext">
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_precondition_preContext-preContext-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_raisedException_behavioralFeature" name="A_raisedException_behavioralFeature" memberEnd="BehavioralFeature-raisedException A_raisedException_behavioralFeature-behavioralFeature">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_raisedException_behavioralFeature-behavioralFeature" name="behavioralFeature" visibility="public" type="BehavioralFeature" association="A_raisedException_behavioralFeature">
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_raisedException_behavioralFeature-behavioralFeature-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_raisedException_behavioralFeature-behavioralFeature-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_raisedException_operation" name="A_raisedException_operation" memberEnd="Operation-raisedException A_raisedException_operation-operation">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_raisedException_operation-operation" name="operation" visibility="public" type="Operation" subsettedProperty="A_raisedException_behavioralFeature-behavioralFeature" association="A_raisedException_operation">
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_raisedException_operation-operation-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_raisedException_operation-operation-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_receiveEvent_endMessage" name="A_receiveEvent_endMessage" memberEnd="Message-receiveEvent A_receiveEvent_endMessage-endMessage">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_receiveEvent_endMessage-endMessage" name="endMessage" visibility="public" type="Message" subsettedProperty="MessageEnd-message" association="A_receiveEvent_endMessage">
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_receiveEvent_endMessage-endMessage-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_redefinedBehavior_behavior" name="A_redefinedBehavior_behavior" memberEnd="Behavior-redefinedBehavior A_redefinedBehavior_behavior-behavior">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_redefinedBehavior_behavior-behavior" name="behavior" visibility="public" type="Behavior" subsettedProperty="A_redefinedClassifier_classifier-classifier" association="A_redefinedBehavior_behavior">
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_redefinedBehavior_behavior-behavior-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_redefinedBehavior_behavior-behavior-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_redefinedClassifier_classifier" name="A_redefinedClassifier_classifier" memberEnd="Classifier-redefinedClassifier A_redefinedClassifier_classifier-classifier">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_redefinedClassifier_classifier-classifier" name="classifier" visibility="public" type="Classifier" subsettedProperty="A_redefinedElement_redefinableElement-redefinableElement" association="A_redefinedClassifier_classifier">
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_redefinedClassifier_classifier-classifier-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_redefinedClassifier_classifier-classifier-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_redefinedConnector_connector" name="A_redefinedConnector_connector" memberEnd="Connector-redefinedConnector A_redefinedConnector_connector-connector">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_redefinedConnector_connector-connector" name="connector" visibility="public" type="Connector" subsettedProperty="A_redefinedElement_redefinableElement-redefinableElement" association="A_redefinedConnector_connector">
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_redefinedConnector_connector-connector-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_redefinedConnector_connector-connector-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_redefinedEdge_activityEdge" name="A_redefinedEdge_activityEdge" memberEnd="ActivityEdge-redefinedEdge A_redefinedEdge_activityEdge-activityEdge">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_redefinedEdge_activityEdge-activityEdge" name="activityEdge" visibility="public" type="ActivityEdge" subsettedProperty="A_redefinedElement_redefinableElement-redefinableElement" association="A_redefinedEdge_activityEdge">
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_redefinedEdge_activityEdge-activityEdge-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_redefinedEdge_activityEdge-activityEdge-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_redefinedElement_redefinableElement" name="A_redefinedElement_redefinableElement" memberEnd="RedefinableElement-redefinedElement A_redefinedElement_redefinableElement-redefinableElement" isDerived="true">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_redefinedElement_redefinableElement-redefinableElement" name="redefinableElement" visibility="public" type="RedefinableElement" association="A_redefinedElement_redefinableElement">
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_redefinedElement_redefinableElement-redefinableElement-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_redefinedElement_redefinableElement-redefinableElement-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_redefinedInterface_interface" name="A_redefinedInterface_interface" memberEnd="Interface-redefinedInterface A_redefinedInterface_interface-interface">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_redefinedInterface_interface-interface" name="interface" visibility="public" type="Interface" subsettedProperty="A_redefinedClassifier_classifier-classifier" association="A_redefinedInterface_interface">
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_redefinedInterface_interface-interface-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_redefinedInterface_interface-interface-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_redefinedNode_activityNode" name="A_redefinedNode_activityNode" memberEnd="ActivityNode-redefinedNode A_redefinedNode_activityNode-activityNode">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_redefinedNode_activityNode-activityNode" name="activityNode" visibility="public" type="ActivityNode" subsettedProperty="A_redefinedElement_redefinableElement-redefinableElement" association="A_redefinedNode_activityNode">
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_redefinedNode_activityNode-activityNode-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_redefinedNode_activityNode-activityNode-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_redefinedOperation_operation" name="A_redefinedOperation_operation" memberEnd="Operation-redefinedOperation A_redefinedOperation_operation-operation">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_redefinedOperation_operation-operation" name="operation" visibility="public" type="Operation" subsettedProperty="A_redefinedElement_redefinableElement-redefinableElement" association="A_redefinedOperation_operation">
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_redefinedOperation_operation-operation-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_redefinedOperation_operation-operation-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_redefinedProperty_property" name="A_redefinedProperty_property" memberEnd="Property-redefinedProperty A_redefinedProperty_property-property">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_redefinedProperty_property-property" name="property" visibility="public" type="Property" subsettedProperty="A_redefinedElement_redefinableElement-redefinableElement" association="A_redefinedProperty_property">
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_redefinedProperty_property-property-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_redefinedProperty_property-property-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_redefinitionContext_redefinableElement" name="A_redefinitionContext_redefinableElement" memberEnd="RedefinableElement-redefinitionContext A_redefinitionContext_redefinableElement-redefinableElement" isDerived="true">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_redefinitionContext_redefinableElement-redefinableElement" name="redefinableElement" visibility="public" type="RedefinableElement" association="A_redefinitionContext_redefinableElement">
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_redefinitionContext_redefinableElement-redefinableElement-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_redefinitionContext_redefinableElement-redefinableElement-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_relatedElement_relationship" name="A_relatedElement_relationship" memberEnd="Relationship-relatedElement A_relatedElement_relationship-relationship" isDerived="true">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_relatedElement_relationship-relationship" name="relationship" visibility="public" type="Relationship" association="A_relatedElement_relationship">
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_relatedElement_relationship-relationship-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_relatedElement_relationship-relationship-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_represents_lifeline" name="A_represents_lifeline" memberEnd="Lifeline-represents A_represents_lifeline-lifeline">
      <ownedComment xmi:type="uml:Comment" xmi:id="A_represents_lifeline-_ownedComment.0" annotatedElement="A_represents_lifeline">
        <body>If a Part has multiplicity, multiple lifelines might be used to show it.</body>
      </ownedComment>
      <ownedEnd xmi:type="uml:Property" xmi:id="A_represents_lifeline-lifeline" name="lifeline" visibility="public" type="Lifeline" association="A_represents_lifeline">
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_represents_lifeline-lifeline-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_represents_lifeline-lifeline-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_result_callAction" name="A_result_callAction" memberEnd="CallAction-result A_result_callAction-callAction">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_result_callAction-callAction" name="callAction" visibility="public" type="CallAction" subsettedProperty="A_output_action-action" association="A_result_callAction">
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_result_callAction-callAction-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_result_opaqueExpression" name="A_result_opaqueExpression" memberEnd="OpaqueExpression-result A_result_opaqueExpression-opaqueExpression" isDerived="true">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_result_opaqueExpression-opaqueExpression" name="opaqueExpression" visibility="public" type="OpaqueExpression" association="A_result_opaqueExpression">
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_result_opaqueExpression-opaqueExpression-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_result_opaqueExpression-opaqueExpression-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_role_structuredClassifier" name="A_role_structuredClassifier" memberEnd="StructuredClassifier-role A_role_structuredClassifier-structuredClassifier" isDerived="true">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_role_structuredClassifier-structuredClassifier" name="structuredClassifier" visibility="public" type="StructuredClassifier" subsettedProperty="A_member_memberNamespace-memberNamespace" association="A_role_structuredClassifier">
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_role_structuredClassifier-structuredClassifier-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_role_structuredClassifier-structuredClassifier-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_selector_lifeline" name="A_selector_lifeline" memberEnd="Lifeline-selector A_selector_lifeline-lifeline">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_selector_lifeline-lifeline" name="lifeline" visibility="public" type="Lifeline" subsettedProperty="Element-owner" association="A_selector_lifeline">
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_selector_lifeline-lifeline-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_sendEvent_endMessage" name="A_sendEvent_endMessage" memberEnd="Message-sendEvent A_sendEvent_endMessage-endMessage">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_sendEvent_endMessage-endMessage" name="endMessage" visibility="public" type="Message" subsettedProperty="MessageEnd-message" association="A_sendEvent_endMessage">
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_sendEvent_endMessage-endMessage-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_signal_reception" name="A_signal_reception" memberEnd="Reception-signal A_signal_reception-reception">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_signal_reception-reception" name="reception" visibility="public" type="Reception" association="A_signal_reception">
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_signal_reception-reception-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_signal_reception-reception-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_signal_sendSignalAction" name="A_signal_sendSignalAction" memberEnd="SendSignalAction-signal A_signal_sendSignalAction-sendSignalAction">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_signal_sendSignalAction-sendSignalAction" name="sendSignalAction" visibility="public" type="SendSignalAction" association="A_signal_sendSignalAction">
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_signal_sendSignalAction-sendSignalAction-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_signal_sendSignalAction-sendSignalAction-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_signal_signalEvent" name="A_signal_signalEvent" memberEnd="SignalEvent-signal A_signal_signalEvent-signalEvent">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_signal_signalEvent-signalEvent" name="signalEvent" visibility="public" type="SignalEvent" association="A_signal_signalEvent">
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_signal_signalEvent-signalEvent-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_signal_signalEvent-signalEvent-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_signature_message" name="A_signature_message" memberEnd="Message-signature A_signature_message-message">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_signature_message-message" name="message" visibility="public" type="Message" association="A_signature_message">
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_signature_message-message-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_signature_message-message-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_slot_owningInstance" name="A_slot_owningInstance" memberEnd="InstanceSpecification-slot Slot-owningInstance"/>
    <packagedElement xmi:type="uml:Association" xmi:id="A_source_directedRelationship" name="A_source_directedRelationship" memberEnd="DirectedRelationship-source A_source_directedRelationship-directedRelationship" isDerived="true">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_source_directedRelationship-directedRelationship" name="directedRelationship" visibility="public" type="DirectedRelationship" subsettedProperty="A_relatedElement_relationship-relationship" association="A_source_directedRelationship">
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_source_directedRelationship-directedRelationship-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_source_directedRelationship-directedRelationship-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_specification_owningConstraint" name="A_specification_owningConstraint" memberEnd="Constraint-specification A_specification_owningConstraint-owningConstraint">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_specification_owningConstraint-owningConstraint" name="owningConstraint" visibility="public" type="Constraint" subsettedProperty="Element-owner" association="A_specification_owningConstraint">
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_specification_owningConstraint-owningConstraint-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_specification_owningInstanceSpec" name="A_specification_owningInstanceSpec" memberEnd="InstanceSpecification-specification A_specification_owningInstanceSpec-owningInstanceSpec">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_specification_owningInstanceSpec-owningInstanceSpec" name="owningInstanceSpec" visibility="public" type="InstanceSpecification" subsettedProperty="Element-owner" association="A_specification_owningInstanceSpec">
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_specification_owningInstanceSpec-owningInstanceSpec-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_start_executionSpecification" name="A_start_executionSpecification" memberEnd="ExecutionSpecification-start A_start_executionSpecification-executionSpecification">
      <ownedComment xmi:type="uml:Comment" xmi:id="A_start_executionSpecification-_ownedComment.0" annotatedElement="A_start_executionSpecification">
        <body>The event shows the time point at which the action begins execution.</body>
      </ownedComment>
      <ownedEnd xmi:type="uml:Property" xmi:id="A_start_executionSpecification-executionSpecification" name="executionSpecification" visibility="public" type="ExecutionSpecification" association="A_start_executionSpecification">
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_start_executionSpecification-executionSpecification-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_start_executionSpecification-executionSpecification-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_subgroup_superGroup" name="A_subgroup_superGroup" memberEnd="ActivityGroup-subgroup ActivityGroup-superGroup" isDerived="true"/>
    <packagedElement xmi:type="uml:Association" xmi:id="A_subject_useCase" name="A_subject_useCase" memberEnd="UseCase-subject Classifier-useCase"/>
    <packagedElement xmi:type="uml:Association" xmi:id="A_subsettedProperty_property" name="A_subsettedProperty_property" memberEnd="Property-subsettedProperty A_subsettedProperty_property-property">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_subsettedProperty_property-property" name="property" visibility="public" type="Property" association="A_subsettedProperty_property">
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_subsettedProperty_property-property-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_subsettedProperty_property-property-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_substitution_substitutingClassifier" name="A_substitution_substitutingClassifier" memberEnd="Classifier-substitution Substitution-substitutingClassifier"/>
    <packagedElement xmi:type="uml:Association" xmi:id="A_superClass_class" name="A_superClass_class" memberEnd="Class-superClass A_superClass_class-class" isDerived="true">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_superClass_class-class" name="class" visibility="public" type="Class" subsettedProperty="A_general_classifier-classifier" association="A_superClass_class">
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_superClass_class-class-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_superClass_class-class-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_supplier_supplierDependency" name="A_supplier_supplierDependency" memberEnd="Dependency-supplier A_supplier_supplierDependency-supplierDependency">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_supplier_supplierDependency-supplierDependency" name="supplierDependency" visibility="public" type="Dependency" subsettedProperty="A_target_directedRelationship-directedRelationship" association="A_supplier_supplierDependency">
        <ownedComment xmi:type="uml:Comment" xmi:id="A_supplier_supplierDependency-supplierDependency-_ownedComment.0" annotatedElement="A_supplier_supplierDependency-supplierDependency">
          <body>Indicates the dependencies that reference the supplier.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_supplier_supplierDependency-supplierDependency-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_supplier_supplierDependency-supplierDependency-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_target_callOperationAction" name="A_target_callOperationAction" memberEnd="CallOperationAction-target A_target_callOperationAction-callOperationAction">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_target_callOperationAction-callOperationAction" name="callOperationAction" visibility="public" type="CallOperationAction" subsettedProperty="A_input_action-action" association="A_target_callOperationAction">
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_target_callOperationAction-callOperationAction-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_target_directedRelationship" name="A_target_directedRelationship" memberEnd="DirectedRelationship-target A_target_directedRelationship-directedRelationship" isDerived="true">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_target_directedRelationship-directedRelationship" name="directedRelationship" visibility="public" type="DirectedRelationship" subsettedProperty="A_relatedElement_relationship-relationship" association="A_target_directedRelationship">
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_target_directedRelationship-directedRelationship-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_target_directedRelationship-directedRelationship-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_target_sendSignalAction" name="A_target_sendSignalAction" memberEnd="SendSignalAction-target A_target_sendSignalAction-sendSignalAction">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_target_sendSignalAction-sendSignalAction" name="sendSignalAction" visibility="public" type="SendSignalAction" subsettedProperty="A_input_action-action" association="A_target_sendSignalAction">
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_target_sendSignalAction-sendSignalAction-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_toBefore_after" name="A_toBefore_after" memberEnd="OccurrenceSpecification-toBefore GeneralOrdering-after"/>
    <packagedElement xmi:type="uml:Association" xmi:id="A_type_connector" name="A_type_connector" memberEnd="Connector-type A_type_connector-connector">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_type_connector-connector" name="connector" visibility="public" type="Connector" association="A_type_connector">
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_type_connector-connector-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_type_connector-connector-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_type_operation" name="A_type_operation" memberEnd="Operation-type A_type_operation-operation" isDerived="true">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_type_operation-operation" name="operation" visibility="public" type="Operation" association="A_type_operation">
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_type_operation-operation-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_type_operation-operation-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_type_typedElement" name="A_type_typedElement" memberEnd="TypedElement-type A_type_typedElement-typedElement">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_type_typedElement-typedElement" name="typedElement" visibility="public" type="TypedElement" association="A_type_typedElement">
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_type_typedElement-typedElement-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_type_typedElement-typedElement-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_upperValue_owningUpper" name="A_upperValue_owningUpper" memberEnd="MultiplicityElement-upperValue A_upperValue_owningUpper-owningUpper">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_upperValue_owningUpper-owningUpper" name="owningUpper" visibility="public" type="MultiplicityElement" subsettedProperty="Element-owner" association="A_upperValue_owningUpper">
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_upperValue_owningUpper-owningUpper-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_value_owningSlot" name="A_value_owningSlot" memberEnd="Slot-value A_value_owningSlot-owningSlot">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_value_owningSlot-owningSlot" name="owningSlot" visibility="public" type="Slot" subsettedProperty="Element-owner" association="A_value_owningSlot">
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_value_owningSlot-owningSlot-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Association" xmi:id="A_value_valuePin" name="A_value_valuePin" memberEnd="ValuePin-value A_value_valuePin-valuePin">
      <ownedEnd xmi:type="uml:Property" xmi:id="A_value_valuePin-valuePin" name="valuePin" visibility="public" type="ValuePin" subsettedProperty="Element-owner" association="A_value_valuePin">
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_value_valuePin-valuePin-_lowerValue"/>
      </ownedEnd>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="Abstraction" name="Abstraction">
      <ownedComment xmi:type="uml:Comment" xmi:id="Abstraction-_ownedComment.0" annotatedElement="Abstraction">
        <body>An abstraction is a relationship that relates two elements or sets of elements that represent the same concept at different levels of abstraction or from different viewpoints.</body>
      </ownedComment>
      <generalization xmi:type="uml:Generalization" xmi:id="Abstraction-_generalization.0" general="Dependency"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Abstraction-mapping" name="mapping" visibility="public" type="OpaqueExpression" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_mapping_abstraction">
        <ownedComment xmi:type="uml:Comment" xmi:id="Abstraction-mapping-_ownedComment.0" annotatedElement="Abstraction-mapping">
          <body>An composition of an Expression that states the abstraction relationship between the supplier and the client. In some cases, such as Derivation, it is usually formal and unidirectional; in other cases, such as Trace, it is usually informal and bidirectional. The mapping expression is optional and may be omitted if the precise relationship between the elements is not specified.</body>
        </ownedComment>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Abstraction-mapping-_lowerValue"/>
      </ownedAttribute>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="Action" name="Action" isAbstract="true">
      <ownedComment xmi:type="uml:Comment" xmi:id="Action-_ownedComment.0" annotatedElement="Action">
        <body>An action is a named element that is the fundamental unit of executable functionality. The execution of an action represents some transformation or processing in the modeled system, be it a computer system or otherwise.</body>
      </ownedComment>
      <ownedComment xmi:type="uml:Comment" xmi:id="Action-_ownedComment.1" annotatedElement="Action">
        <body>An action represents a single step within an activity, that is, one that is not further decomposed within the activity.</body>
      </ownedComment>
      <generalization xmi:type="uml:Generalization" xmi:id="Action-_generalization.0" general="ActivityNode"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Action-context" name="context" visibility="public" type="Classifier" isReadOnly="true" isDerived="true" association="A_context_action">
        <ownedComment xmi:type="uml:Comment" xmi:id="Action-context-_ownedComment.0" annotatedElement="Action-context">
          <body>The classifier that owns the behavior of which this action is a part.</body>
        </ownedComment>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Action-context-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Action-input" name="input" visibility="public" type="InputPin" isOrdered="true" isReadOnly="true" isDerived="true" isDerivedUnion="true" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_input_action">
        <ownedComment xmi:type="uml:Comment" xmi:id="Action-input-_ownedComment.0" annotatedElement="Action-input">
          <body>The ordered set of input pins connected to the Action. These are among the total set of inputs.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Action-input-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Action-input-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Action-isLocallyReentrant" name="isLocallyReentrant" visibility="public">
        <ownedComment xmi:type="uml:Comment" xmi:id="Action-isLocallyReentrant-_ownedComment.0" annotatedElement="Action-isLocallyReentrant">
          <body>If true, the action can begin a new, concurrent execution, even if there is already another execution of the action ongoing. If false, the action cannot begin a new execution until any previous execution has completed.</body>
        </ownedComment>
        <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Action-isLocallyReentrant-_defaultValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Action-output" name="output" visibility="public" type="OutputPin" isOrdered="true" isReadOnly="true" isDerived="true" isDerivedUnion="true" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_output_action">
        <ownedComment xmi:type="uml:Comment" xmi:id="Action-output-_ownedComment.0" annotatedElement="Action-output">
          <body>The ordered set of output pins connected to the Action. The action places its results onto pins in this set.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Action-output-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Action-output-_lowerValue"/>
      </ownedAttribute>
      <ownedOperation xmi:type="uml:Operation" xmi:id="Action-context.1" name="context" visibility="public" isQuery="true" bodyCondition="Action-context.1-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="Action-context.1-_ownedComment.0" annotatedElement="Action-context.1">
          <body>Missing derivation for Action::/context : Classifier</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="Action-context.1-spec" name="spec" constrainedElement="Action-context.1 Action-context">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="Action-context.1-spec-_specification">
            <language>OCL</language>
            <body>true</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="Action-context.1-result" name="result" visibility="public" type="Classifier" direction="return">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Action-context.1-result-_lowerValue"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="ActionExecutionSpecification" name="ActionExecutionSpecification">
      <ownedComment xmi:type="uml:Comment" xmi:id="ActionExecutionSpecification-_ownedComment.0" annotatedElement="ActionExecutionSpecification">
        <body>An action execution specification is a kind of execution specification representing the execution of an action.</body>
      </ownedComment>
      <ownedRule xmi:type="uml:Constraint" xmi:id="ActionExecutionSpecification-action_referenced" name="action_referenced" constrainedElement="ActionExecutionSpecification">
        <ownedComment xmi:type="uml:Comment" xmi:id="ActionExecutionSpecification-action_referenced-_ownedComment.0" annotatedElement="ActionExecutionSpecification-action_referenced">
          <body>The Action referenced by the ActionExecutionSpecification, if any, must be owned by the Interaction owning the ActionExecutionOccurrence.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="ActionExecutionSpecification-action_referenced-_specification">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <generalization xmi:type="uml:Generalization" xmi:id="ActionExecutionSpecification-_generalization.0" general="ExecutionSpecification"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="ActionExecutionSpecification-action" name="action" visibility="public" type="Action" association="A_action_actionExecutionSpecification">
        <ownedComment xmi:type="uml:Comment" xmi:id="ActionExecutionSpecification-action-_ownedComment.0" annotatedElement="ActionExecutionSpecification-action">
          <body>Action whose execution is occurring.</body>
        </ownedComment>
      </ownedAttribute>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="Activity" name="Activity">
      <ownedComment xmi:type="uml:Comment" xmi:id="Activity-_ownedComment.0" annotatedElement="Activity">
        <body>An activity is the specification of parameterized behavior as the coordinated sequencing of subordinate units whose individual elements are actions.</body>
      </ownedComment>
      <ownedRule xmi:type="uml:Constraint" xmi:id="Activity-no_supergroups" name="no_supergroups" constrainedElement="Activity">
        <ownedComment xmi:type="uml:Comment" xmi:id="Activity-no_supergroups-_ownedComment.0" annotatedElement="Activity-no_supergroups">
          <body>The groups of an activity have no supergroups.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="Activity-no_supergroups-_specification">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:type="uml:Constraint" xmi:id="Activity-autonomous" name="autonomous" constrainedElement="Activity">
        <ownedComment xmi:type="uml:Comment" xmi:id="Activity-autonomous-_ownedComment.0" annotatedElement="Activity-autonomous">
          <body>An activity cannot be autonomous and have a classifier or behavioral feature context at the same time.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="Activity-autonomous-_specification">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:type="uml:Constraint" xmi:id="Activity-activity_parameter_node" name="activity_parameter_node" constrainedElement="Activity">
        <ownedComment xmi:type="uml:Comment" xmi:id="Activity-activity_parameter_node-_ownedComment.0" annotatedElement="Activity-activity_parameter_node">
          <body>The nodes of the activity must include one ActivityParameterNode for each parameter.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="Activity-activity_parameter_node-_specification">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <generalization xmi:type="uml:Generalization" xmi:id="Activity-_generalization.0" general="Behavior"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Activity-edge" name="edge" visibility="public" type="ActivityEdge" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_edge_activity">
        <ownedComment xmi:type="uml:Comment" xmi:id="Activity-edge-_ownedComment.0" annotatedElement="Activity-edge">
          <body>Edges expressing flow between nodes of the activity.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Activity-edge-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Activity-edge-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Activity-group" name="group" visibility="public" type="ActivityGroup" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_group_inActivity">
        <ownedComment xmi:type="uml:Comment" xmi:id="Activity-group-_ownedComment.0" annotatedElement="Activity-group">
          <body>Top-level groups in the activity.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Activity-group-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Activity-group-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Activity-isReadOnly" name="isReadOnly" visibility="public">
        <ownedComment xmi:type="uml:Comment" xmi:id="Activity-isReadOnly-_ownedComment.0" annotatedElement="Activity-isReadOnly">
          <body>If true, this activity must not make any changes to variables outside the activity or to objects. (This is an assertion, not an executable property. It may be used by an execution engine to optimize model execution. If the assertion is violated by the action, then the model is ill-formed.) The default is false (an activity may make nonlocal changes).</body>
        </ownedComment>
        <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Activity-isReadOnly-_defaultValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Activity-node" name="node" visibility="public" type="ActivityNode" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_node_activity">
        <ownedComment xmi:type="uml:Comment" xmi:id="Activity-node-_ownedComment.0" annotatedElement="Activity-node">
          <body>Nodes coordinated by the activity.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Activity-node-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Activity-node-_lowerValue"/>
      </ownedAttribute>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="ActivityEdge" name="ActivityEdge" isAbstract="true">
      <ownedComment xmi:type="uml:Comment" xmi:id="ActivityEdge-_ownedComment.0" annotatedElement="ActivityEdge">
        <body>An activity edge is an abstract class for directed connections between two activity nodes.</body>
      </ownedComment>
      <ownedRule xmi:type="uml:Constraint" xmi:id="ActivityEdge-owned" name="owned" constrainedElement="ActivityEdge">
        <ownedComment xmi:type="uml:Comment" xmi:id="ActivityEdge-owned-_ownedComment.0" annotatedElement="ActivityEdge-owned">
          <body>Activity edges may be owned only by activities or groups.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="ActivityEdge-owned-_specification">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:type="uml:Constraint" xmi:id="ActivityEdge-source_and_target" name="source_and_target" constrainedElement="ActivityEdge">
        <ownedComment xmi:type="uml:Comment" xmi:id="ActivityEdge-source_and_target-_ownedComment.0" annotatedElement="ActivityEdge-source_and_target">
          <body>The source and target of an edge must be in the same activity as the edge.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="ActivityEdge-source_and_target-_specification">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <generalization xmi:type="uml:Generalization" xmi:id="ActivityEdge-_generalization.0" general="RedefinableElement"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="ActivityEdge-activity" name="activity" visibility="public" type="Activity" subsettedProperty="Element-owner" association="A_edge_activity">
        <ownedComment xmi:type="uml:Comment" xmi:id="ActivityEdge-activity-_ownedComment.0" annotatedElement="ActivityEdge-activity">
          <body>Activity containing the edge.</body>
        </ownedComment>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ActivityEdge-activity-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="ActivityEdge-inGroup" name="inGroup" visibility="public" type="ActivityGroup" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="A_containedEdge_inGroup">
        <ownedComment xmi:type="uml:Comment" xmi:id="ActivityEdge-inGroup-_ownedComment.0" annotatedElement="ActivityEdge-inGroup">
          <body>Groups containing the edge.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ActivityEdge-inGroup-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ActivityEdge-inGroup-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="ActivityEdge-redefinedEdge" name="redefinedEdge" visibility="public" type="ActivityEdge" subsettedProperty="RedefinableElement-redefinedElement" association="A_redefinedEdge_activityEdge">
        <ownedComment xmi:type="uml:Comment" xmi:id="ActivityEdge-redefinedEdge-_ownedComment.0" annotatedElement="ActivityEdge-redefinedEdge">
          <body>Inherited edges replaced by this edge in a specialization of the activity.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ActivityEdge-redefinedEdge-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ActivityEdge-redefinedEdge-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="ActivityEdge-source" name="source" visibility="public" type="ActivityNode" association="A_outgoing_source_node">
        <ownedComment xmi:type="uml:Comment" xmi:id="ActivityEdge-source-_ownedComment.0" annotatedElement="ActivityEdge-source">
          <body>Node from which tokens are taken when they traverse the edge.</body>
        </ownedComment>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="ActivityEdge-target" name="target" visibility="public" type="ActivityNode" association="A_incoming_target_node">
        <ownedComment xmi:type="uml:Comment" xmi:id="ActivityEdge-target-_ownedComment.0" annotatedElement="ActivityEdge-target">
          <body>Node to which tokens are put when they traverse the edge.</body>
        </ownedComment>
      </ownedAttribute>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="ActivityFinalNode" name="ActivityFinalNode">
      <ownedComment xmi:type="uml:Comment" xmi:id="ActivityFinalNode-_ownedComment.0" annotatedElement="ActivityFinalNode">
        <body>An activity final node is a final node that stops all flows in an activity.</body>
      </ownedComment>
      <generalization xmi:type="uml:Generalization" xmi:id="ActivityFinalNode-_generalization.0" general="ControlNode"/>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="ActivityGroup" name="ActivityGroup" isAbstract="true">
      <ownedComment xmi:type="uml:Comment" xmi:id="ActivityGroup-_ownedComment.0" annotatedElement="ActivityGroup">
        <body>ActivityGroup is an abstract class for defining sets of nodes and edges in an activity.</body>
      </ownedComment>
      <ownedRule xmi:type="uml:Constraint" xmi:id="ActivityGroup-not_contained" name="not_contained" constrainedElement="ActivityGroup">
        <ownedComment xmi:type="uml:Comment" xmi:id="ActivityGroup-not_contained-_ownedComment.0" annotatedElement="ActivityGroup-not_contained">
          <body>No node or edge in a group may be contained by its subgroups or its containing groups, transitively.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="ActivityGroup-not_contained-_specification">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:type="uml:Constraint" xmi:id="ActivityGroup-nodes_and_edges" name="nodes_and_edges" constrainedElement="ActivityGroup">
        <ownedComment xmi:type="uml:Comment" xmi:id="ActivityGroup-nodes_and_edges-_ownedComment.0" annotatedElement="ActivityGroup-nodes_and_edges">
          <body>All nodes and edges of the group must be in the same activity as the group.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="ActivityGroup-nodes_and_edges-_specification">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:type="uml:Constraint" xmi:id="ActivityGroup-group_owned" name="group_owned" constrainedElement="ActivityGroup">
        <ownedComment xmi:type="uml:Comment" xmi:id="ActivityGroup-group_owned-_ownedComment.0" annotatedElement="ActivityGroup-group_owned">
          <body>Groups may only be owned by activities or groups.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="ActivityGroup-group_owned-_specification">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <generalization xmi:type="uml:Generalization" xmi:id="ActivityGroup-_generalization.0" general="NamedElement"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="ActivityGroup-containedEdge" name="containedEdge" visibility="public" type="ActivityEdge" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="A_containedEdge_inGroup">
        <ownedComment xmi:type="uml:Comment" xmi:id="ActivityGroup-containedEdge-_ownedComment.0" annotatedElement="ActivityGroup-containedEdge">
          <body>Edges immediately contained in the group.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ActivityGroup-containedEdge-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ActivityGroup-containedEdge-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="ActivityGroup-containedNode" name="containedNode" visibility="public" type="ActivityNode" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="A_containedNode_inGroup">
        <ownedComment xmi:type="uml:Comment" xmi:id="ActivityGroup-containedNode-_ownedComment.0" annotatedElement="ActivityGroup-containedNode">
          <body>Nodes immediately contained in the group.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ActivityGroup-containedNode-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ActivityGroup-containedNode-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="ActivityGroup-inActivity" name="inActivity" visibility="public" type="Activity" subsettedProperty="Element-owner" association="A_group_inActivity">
        <ownedComment xmi:type="uml:Comment" xmi:id="ActivityGroup-inActivity-_ownedComment.0" annotatedElement="ActivityGroup-inActivity">
          <body>Activity containing the group.</body>
        </ownedComment>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ActivityGroup-inActivity-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="ActivityGroup-subgroup" name="subgroup" visibility="public" type="ActivityGroup" isReadOnly="true" isDerived="true" isDerivedUnion="true" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_subgroup_superGroup">
        <ownedComment xmi:type="uml:Comment" xmi:id="ActivityGroup-subgroup-_ownedComment.0" annotatedElement="ActivityGroup-subgroup">
          <body>Groups immediately contained in the group.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ActivityGroup-subgroup-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ActivityGroup-subgroup-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="ActivityGroup-superGroup" name="superGroup" visibility="public" type="ActivityGroup" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="Element-owner" association="A_subgroup_superGroup">
        <ownedComment xmi:type="uml:Comment" xmi:id="ActivityGroup-superGroup-_ownedComment.0" annotatedElement="ActivityGroup-superGroup">
          <body>Group immediately containing the group.</body>
        </ownedComment>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ActivityGroup-superGroup-_lowerValue"/>
      </ownedAttribute>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="ActivityNode" name="ActivityNode" isAbstract="true">
      <ownedComment xmi:type="uml:Comment" xmi:id="ActivityNode-_ownedComment.0" annotatedElement="ActivityNode">
        <body>ActivityNode is an abstract class for points in the flow of an activity connected by edges.</body>
      </ownedComment>
      <ownedRule xmi:type="uml:Constraint" xmi:id="ActivityNode-owned" name="owned" constrainedElement="ActivityNode">
        <ownedComment xmi:type="uml:Comment" xmi:id="ActivityNode-owned-_ownedComment.0" annotatedElement="ActivityNode-owned">
          <body>Activity nodes can only be owned by activities or groups.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="ActivityNode-owned-_specification">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <generalization xmi:type="uml:Generalization" xmi:id="ActivityNode-_generalization.0" general="RedefinableElement"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="ActivityNode-activity" name="activity" visibility="public" type="Activity" subsettedProperty="Element-owner" association="A_node_activity">
        <ownedComment xmi:type="uml:Comment" xmi:id="ActivityNode-activity-_ownedComment.0" annotatedElement="ActivityNode-activity">
          <body>Activity containing the node.</body>
        </ownedComment>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ActivityNode-activity-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="ActivityNode-inGroup" name="inGroup" visibility="public" type="ActivityGroup" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="A_containedNode_inGroup">
        <ownedComment xmi:type="uml:Comment" xmi:id="ActivityNode-inGroup-_ownedComment.0" annotatedElement="ActivityNode-inGroup">
          <body>Groups containing the node.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ActivityNode-inGroup-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ActivityNode-inGroup-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="ActivityNode-incoming" name="incoming" visibility="public" type="ActivityEdge" association="A_incoming_target_node">
        <ownedComment xmi:type="uml:Comment" xmi:id="ActivityNode-incoming-_ownedComment.0" annotatedElement="ActivityNode-incoming">
          <body>Edges that have the node as target.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ActivityNode-incoming-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ActivityNode-incoming-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="ActivityNode-outgoing" name="outgoing" visibility="public" type="ActivityEdge" association="A_outgoing_source_node">
        <ownedComment xmi:type="uml:Comment" xmi:id="ActivityNode-outgoing-_ownedComment.0" annotatedElement="ActivityNode-outgoing">
          <body>Edges that have the node as source.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ActivityNode-outgoing-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ActivityNode-outgoing-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="ActivityNode-redefinedNode" name="redefinedNode" visibility="public" type="ActivityNode" subsettedProperty="RedefinableElement-redefinedElement" association="A_redefinedNode_activityNode">
        <ownedComment xmi:type="uml:Comment" xmi:id="ActivityNode-redefinedNode-_ownedComment.0" annotatedElement="ActivityNode-redefinedNode">
          <body>Inherited nodes replaced by this node in a specialization of the activity.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ActivityNode-redefinedNode-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ActivityNode-redefinedNode-_lowerValue"/>
      </ownedAttribute>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="ActivityParameterNode" name="ActivityParameterNode">
      <ownedComment xmi:type="uml:Comment" xmi:id="ActivityParameterNode-_ownedComment.0" annotatedElement="ActivityParameterNode">
        <body>An activity parameter node is an object node for inputs and outputs to activities.</body>
      </ownedComment>
      <ownedRule xmi:type="uml:Constraint" xmi:id="ActivityParameterNode-maximum_two_parameter_nodes" name="maximum_two_parameter_nodes" constrainedElement="ActivityParameterNode">
        <ownedComment xmi:type="uml:Comment" xmi:id="ActivityParameterNode-maximum_two_parameter_nodes-_ownedComment.0" annotatedElement="ActivityParameterNode-maximum_two_parameter_nodes">
          <body>A parameter with direction inout must have at most two activity parameter nodes in an activity, one with incoming flows and one with outgoing flows.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="ActivityParameterNode-maximum_two_parameter_nodes-_specification">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:type="uml:Constraint" xmi:id="ActivityParameterNode-no_edges" name="no_edges" constrainedElement="ActivityParameterNode">
        <ownedComment xmi:type="uml:Comment" xmi:id="ActivityParameterNode-no_edges-_ownedComment.0" annotatedElement="ActivityParameterNode-no_edges">
          <body>An activity parameter node may have all incoming edges or all outgoing edges, but it must not have both incoming and outgoing edges.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="ActivityParameterNode-no_edges-_specification">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:type="uml:Constraint" xmi:id="ActivityParameterNode-no_incoming_edges" name="no_incoming_edges" constrainedElement="ActivityParameterNode">
        <ownedComment xmi:type="uml:Comment" xmi:id="ActivityParameterNode-no_incoming_edges-_ownedComment.0" annotatedElement="ActivityParameterNode-no_incoming_edges">
          <body>Activity parameter object nodes with no incoming edges and one or more outgoing edges must have a parameter with in or inout direction.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="ActivityParameterNode-no_incoming_edges-_specification">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:type="uml:Constraint" xmi:id="ActivityParameterNode-same_type" name="same_type" constrainedElement="ActivityParameterNode">
        <ownedComment xmi:type="uml:Comment" xmi:id="ActivityParameterNode-same_type-_ownedComment.0" annotatedElement="ActivityParameterNode-same_type">
          <body>The type of an activity parameter node is the same as the type of its parameter.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="ActivityParameterNode-same_type-_specification">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:type="uml:Constraint" xmi:id="ActivityParameterNode-no_outgoing_edges" name="no_outgoing_edges" constrainedElement="ActivityParameterNode">
        <ownedComment xmi:type="uml:Comment" xmi:id="ActivityParameterNode-no_outgoing_edges-_ownedComment.0" annotatedElement="ActivityParameterNode-no_outgoing_edges">
          <body>Activity parameter object nodes with no outgoing edges and one or more incoming edges must have a parameter with out, inout, or return direction.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="ActivityParameterNode-no_outgoing_edges-_specification">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:type="uml:Constraint" xmi:id="ActivityParameterNode-has_parameters" name="has_parameters" constrainedElement="ActivityParameterNode">
        <ownedComment xmi:type="uml:Comment" xmi:id="ActivityParameterNode-has_parameters-_ownedComment.0" annotatedElement="ActivityParameterNode-has_parameters">
          <body>Activity parameter nodes must have parameters from the containing activity.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="ActivityParameterNode-has_parameters-_specification">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:type="uml:Constraint" xmi:id="ActivityParameterNode-maximum_one_parameter_node" name="maximum_one_parameter_node" constrainedElement="ActivityParameterNode">
        <ownedComment xmi:type="uml:Comment" xmi:id="ActivityParameterNode-maximum_one_parameter_node-_ownedComment.0" annotatedElement="ActivityParameterNode-maximum_one_parameter_node">
          <body>A parameter with direction other than inout must have at most one activity parameter node in an activity.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="ActivityParameterNode-maximum_one_parameter_node-_specification">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <generalization xmi:type="uml:Generalization" xmi:id="ActivityParameterNode-_generalization.0" general="ObjectNode"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="ActivityParameterNode-parameter" name="parameter" visibility="public" type="Parameter" association="A_parameter_activityParameterNode">
        <ownedComment xmi:type="uml:Comment" xmi:id="ActivityParameterNode-parameter-_ownedComment.0" annotatedElement="ActivityParameterNode-parameter">
          <body>The parameter the object node will be accepting or providing values for.</body>
        </ownedComment>
      </ownedAttribute>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="Actor" name="Actor">
      <ownedComment xmi:type="uml:Comment" xmi:id="Actor-_ownedComment.0" annotatedElement="Actor">
        <body>An actor specifies a role played by a user or any other system that interacts with the subject.</body>
      </ownedComment>
      <ownedRule xmi:type="uml:Constraint" xmi:id="Actor-must_have_name" name="must_have_name" constrainedElement="Actor">
        <ownedComment xmi:type="uml:Comment" xmi:id="Actor-must_have_name-_ownedComment.0" annotatedElement="Actor-must_have_name">
          <body>An actor must have a name.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="Actor-must_have_name-_specification">
          <language>OCL</language>
          <body>name-&gt;notEmpty()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:type="uml:Constraint" xmi:id="Actor-associations" name="associations" constrainedElement="Actor">
        <ownedComment xmi:type="uml:Comment" xmi:id="Actor-associations-_ownedComment.0" annotatedElement="Actor-associations">
          <body>An actor can only have associations to use cases, components and classes. Furthermore these associations must be binary.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="Actor-associations-_specification">
          <language>OCL</language>
          <body>self.ownedAttribute-&gt;forAll ( a |
(a.association-&gt;notEmpty()) implies
((a.association.memberEnd.size() = 2) and
(a.opposite.class.oclIsKindOf(UseCase) or
(a.opposite.class.oclIsKindOf(Class) and not a.opposite.class.oclIsKindOf(Behavior))))
</body>
        </specification>
      </ownedRule>
      <generalization xmi:type="uml:Generalization" xmi:id="Actor-_generalization.0" general="BehavioredClassifier"/>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="AnyReceiveEvent" name="AnyReceiveEvent">
      <ownedComment xmi:type="uml:Comment" xmi:id="AnyReceiveEvent-_ownedComment.0" annotatedElement="AnyReceiveEvent">
        <body>A trigger for an AnyReceiveEvent is triggered by the receipt of any message that is not explicitly handled by any related trigger.</body>
      </ownedComment>
      <generalization xmi:type="uml:Generalization" xmi:id="AnyReceiveEvent-_generalization.0" general="MessageEvent"/>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="Association" name="Association">
      <ownedComment xmi:type="uml:Comment" xmi:id="Association-_ownedComment.0" annotatedElement="Association">
        <body>An association describes a set of tuples whose values refer to typed instances. An instance of an association is called a link.A link is a tuple with one value for each end of the association, where each value is an instance of the type of the end.</body>
      </ownedComment>
      <ownedComment xmi:type="uml:Comment" xmi:id="Association-_ownedComment.1" annotatedElement="Association">
        <body>An association describes a set of tuples whose values refer to typed instances. An instance of an association is called a link. A link is a tuple with one value for each end of the association, where each value is an instance of the type of the end.</body>
      </ownedComment>
      <ownedRule xmi:type="uml:Constraint" xmi:id="Association-specialized_end_types" name="specialized_end_types" constrainedElement="Association">
        <ownedComment xmi:type="uml:Comment" xmi:id="Association-specialized_end_types-_ownedComment.0" annotatedElement="Association-specialized_end_types">
          <body>When an association specializes another association, every end of the specific association corresponds to an end of the general association, and the specific end reaches the same type or a subtype of the more general end.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="Association-specialized_end_types-_specification">
          <language>OCL</language>
          <body>Sequence{1..self.memberEnd-&gt;size()}-&gt;
	forAll(i | self.general-&gt;select(oclIsKindOf(Association)).oclAsType(Association)-&gt;
		forAll(ga |self.memberEnd-&gt;at(i).type.conformsTo(ga.memberEnd-&gt;at(i).type)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:type="uml:Constraint" xmi:id="Association-binary_associations" name="binary_associations" constrainedElement="Association">
        <ownedComment xmi:type="uml:Comment" xmi:id="Association-binary_associations-_ownedComment.0" annotatedElement="Association-binary_associations">
          <body>Only binary associations can be aggregations.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="Association-binary_associations-_specification">
          <language>OCL</language>
          <body>self.memberEnd-&gt;exists(aggregation &lt;&gt; Aggregation::none) implies self.memberEnd-&gt;size() = 2</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:type="uml:Constraint" xmi:id="Association-specialized_end_number" name="specialized_end_number" constrainedElement="Association">
        <ownedComment xmi:type="uml:Comment" xmi:id="Association-specialized_end_number-_ownedComment.0" annotatedElement="Association-specialized_end_number">
          <body>An association specializing another association has the same number of ends as the other association.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="Association-specialized_end_number-_specification">
          <language>OCL</language>
          <body>parents()-&gt;select(oclIsKindOf(Association)).oclAsType(Association)-&gt;forAll(p | p.memberEnd-&gt;size() = self.memberEnd-&gt;size())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:type="uml:Constraint" xmi:id="Association-association_ends" name="association_ends" constrainedElement="Association">
        <ownedComment xmi:type="uml:Comment" xmi:id="Association-association_ends-_ownedComment.0" annotatedElement="Association-association_ends">
          <body>Association ends of associations with more than two ends must be owned by the association.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="Association-association_ends-_specification">
          <language>OCL</language>
          <body>if memberEnd-&gt;size() &gt; 2 then ownedEnd-&gt;includesAll(memberEnd)</body>
        </specification>
      </ownedRule>
      <generalization xmi:type="uml:Generalization" xmi:id="Association-_generalization.0" general="Classifier"/>
      <generalization xmi:type="uml:Generalization" xmi:id="Association-_generalization.1" general="Relationship"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Association-endType" name="endType" visibility="public" type="Type" isOrdered="true" isReadOnly="true" isDerived="true" subsettedProperty="Relationship-relatedElement" association="A_endType_association">
        <ownedComment xmi:type="uml:Comment" xmi:id="Association-endType-_ownedComment.0" annotatedElement="Association-endType">
          <body>References the classifiers that are used as types of the ends of the association.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Association-endType-_upperValue" value="*"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Association-isDerived" name="isDerived" visibility="public">
        <ownedComment xmi:type="uml:Comment" xmi:id="Association-isDerived-_ownedComment.0" annotatedElement="Association-isDerived">
          <body>Specifies whether the association is derived from other model elements such as other associations or constraints.</body>
        </ownedComment>
        <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Association-isDerived-_defaultValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Association-memberEnd" name="memberEnd" visibility="public" type="Property" isOrdered="true" subsettedProperty="Namespace-member" association="A_memberEnd_association">
        <ownedComment xmi:type="uml:Comment" xmi:id="Association-memberEnd-_ownedComment.0" annotatedElement="Association-memberEnd">
          <body>Each end represents participation of instances of the classifier connected to the end in links of the association.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Association-memberEnd-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Association-memberEnd-_lowerValue" value="2"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Association-navigableOwnedEnd" name="navigableOwnedEnd" visibility="public" type="Property" subsettedProperty="Association-ownedEnd" association="A_navigableOwnedEnd_association">
        <ownedComment xmi:type="uml:Comment" xmi:id="Association-navigableOwnedEnd-_ownedComment.0" annotatedElement="Association-navigableOwnedEnd">
          <body>The navigable ends that are owned by the association itself.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Association-navigableOwnedEnd-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Association-navigableOwnedEnd-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Association-ownedEnd" name="ownedEnd" visibility="public" type="Property" isOrdered="true" aggregation="composite" subsettedProperty="Namespace-ownedMember Association-memberEnd Classifier-feature A_redefinitionContext_redefinableElement-redefinableElement" association="A_ownedEnd_owningAssociation">
        <ownedComment xmi:type="uml:Comment" xmi:id="Association-ownedEnd-_ownedComment.0" annotatedElement="Association-ownedEnd">
          <body>The ends that are owned by the association itself.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Association-ownedEnd-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Association-ownedEnd-_lowerValue"/>
      </ownedAttribute>
      <ownedOperation xmi:type="uml:Operation" xmi:id="Association-endType.1" name="endType" visibility="public" isQuery="true" bodyCondition="Association-endType.1-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="Association-endType.1-_ownedComment.0" annotatedElement="Association-endType.1">
          <body>endType is derived from the types of the member ends.</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="Association-endType.1-spec" name="spec" constrainedElement="Association-endType.1 Association-endType">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="Association-endType.1-spec-_specification">
            <language>OCL</language>
            <body>result = self.memberEnd-&gt;collect(e | e.type)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="Association-endType.1-result" name="result" visibility="public" type="Type" isOrdered="true" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Association-endType.1-result-_upperValue" value="*"/>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Association-endType.1-result-_lowerValue"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="Behavior" name="Behavior" isAbstract="true">
      <ownedComment xmi:type="uml:Comment" xmi:id="Behavior-_ownedComment.0" annotatedElement="Behavior">
        <body>Behavior is a specification of how its context classifier changes state over time. This specification may be either a definition of possible behavior execution or emergent behavior, or a selective illustration of an interesting subset of possible executions. The latter form is typically used for capturing examples, such as a trace of a particular execution.</body>
      </ownedComment>
      <ownedRule xmi:type="uml:Constraint" xmi:id="Behavior-parameters_match" name="parameters_match" constrainedElement="Behavior">
        <ownedComment xmi:type="uml:Comment" xmi:id="Behavior-parameters_match-_ownedComment.0" annotatedElement="Behavior-parameters_match">
          <body>The parameters of the behavior must match the parameters of the implemented behavioral feature.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="Behavior-parameters_match-_specification">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:type="uml:Constraint" xmi:id="Behavior-feature_of_context_classifier" name="feature_of_context_classifier" constrainedElement="Behavior">
        <ownedComment xmi:type="uml:Comment" xmi:id="Behavior-feature_of_context_classifier-_ownedComment.0" annotatedElement="Behavior-feature_of_context_classifier">
          <body>The implemented behavioral feature must be a feature (possibly inherited) of the context classifier of the behavior.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="Behavior-feature_of_context_classifier-_specification">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:type="uml:Constraint" xmi:id="Behavior-must_realize" name="must_realize" constrainedElement="Behavior">
        <ownedComment xmi:type="uml:Comment" xmi:id="Behavior-must_realize-_ownedComment.0" annotatedElement="Behavior-must_realize">
          <body>If the implemented behavioral feature has been redefined in the ancestors of the owner of the behavior, then the behavior must realize the latest redefining behavioral feature.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="Behavior-must_realize-_specification">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:type="uml:Constraint" xmi:id="Behavior-most_one_behaviour" name="most_one_behaviour" constrainedElement="Behavior">
        <ownedComment xmi:type="uml:Comment" xmi:id="Behavior-most_one_behaviour-_ownedComment.0" annotatedElement="Behavior-most_one_behaviour">
          <body>There may be at most one behavior for a given pairing of classifier (as owner of the behavior) and behavioral feature (as specification of the behavior).</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="Behavior-most_one_behaviour-_specification">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <generalization xmi:type="uml:Generalization" xmi:id="Behavior-_generalization.0" general="Class"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Behavior-context" name="context" visibility="public" type="BehavioredClassifier" isReadOnly="true" isDerived="true" subsettedProperty="RedefinableElement-redefinitionContext" association="A_context_behavior">
        <ownedComment xmi:type="uml:Comment" xmi:id="Behavior-context-_ownedComment.0" annotatedElement="Behavior-context">
          <body>The classifier that is the context for the execution of the behavior. If the behavior is owned by a BehavioredClassifier, that classifier is the context. Otherwise, the context is the first BehavioredClassifier reached by following the chain of owner relationships. For example, following this algorithm, the context of an entry action in a state machine is the classifier that owns the state machine. The features of the context classifier as well as the elements visible to the context classifier are visible to the behavior.</body>
        </ownedComment>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Behavior-context-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Behavior-isReentrant" name="isReentrant" visibility="public">
        <ownedComment xmi:type="uml:Comment" xmi:id="Behavior-isReentrant-_ownedComment.0" annotatedElement="Behavior-isReentrant">
          <body>Tells whether the behavior can be invoked while it is still executing from a previous invocation.</body>
        </ownedComment>
        <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Behavior-isReentrant-_defaultValue" value="true"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Behavior-ownedParameter" name="ownedParameter" visibility="public" type="Parameter" isOrdered="true" aggregation="composite" subsettedProperty="Namespace-ownedMember" association="A_ownedParameter_behavior">
        <ownedComment xmi:type="uml:Comment" xmi:id="Behavior-ownedParameter-_ownedComment.0" annotatedElement="Behavior-ownedParameter">
          <body>References a list of parameters to the behavior which describes the order and type of arguments that can be given when the behavior is invoked and of the values which will be returned when the behavior completes its execution.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Behavior-ownedParameter-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Behavior-ownedParameter-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Behavior-postcondition" name="postcondition" visibility="public" type="Constraint" aggregation="composite" subsettedProperty="Namespace-ownedRule" association="A_postcondition_behavior">
        <ownedComment xmi:type="uml:Comment" xmi:id="Behavior-postcondition-_ownedComment.0" annotatedElement="Behavior-postcondition">
          <body>An optional set of Constraints specifying what is fulfilled after the execution of the behavior is completed, if its precondition was fulfilled before its invocation.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Behavior-postcondition-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Behavior-postcondition-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Behavior-precondition" name="precondition" visibility="public" type="Constraint" aggregation="composite" subsettedProperty="Namespace-ownedRule" association="A_precondition_behavior">
        <ownedComment xmi:type="uml:Comment" xmi:id="Behavior-precondition-_ownedComment.0" annotatedElement="Behavior-precondition">
          <body>An optional set of Constraints specifying what must be fulfilled when the behavior is invoked.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Behavior-precondition-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Behavior-precondition-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Behavior-redefinedBehavior" name="redefinedBehavior" visibility="public" type="Behavior" subsettedProperty="Classifier-redefinedClassifier" association="A_redefinedBehavior_behavior">
        <ownedComment xmi:type="uml:Comment" xmi:id="Behavior-redefinedBehavior-_ownedComment.0" annotatedElement="Behavior-redefinedBehavior">
          <body>References a behavior that this behavior redefines. A subtype of Behavior may redefine any other subtype of Behavior. If the behavior implements a behavioral feature, it replaces the redefined behavior. If the behavior is a classifier behavior, it extends the redefined behavior.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Behavior-redefinedBehavior-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Behavior-redefinedBehavior-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Behavior-specification" name="specification" visibility="public" type="BehavioralFeature" association="A_method_specification">
        <ownedComment xmi:type="uml:Comment" xmi:id="Behavior-specification-_ownedComment.0" annotatedElement="Behavior-specification">
          <body>Designates a behavioral feature that the behavior implements. The behavioral feature must be owned by the classifier that owns the behavior or be inherited by it. The parameters of the behavioral feature and the implementing behavior must match. A behavior does not need to have a specification, in which case it either is the classifer behavior of a BehavioredClassifier or it can only be invoked by another behavior of the classifier.</body>
        </ownedComment>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Behavior-specification-_lowerValue"/>
      </ownedAttribute>
      <ownedOperation xmi:type="uml:Operation" xmi:id="Behavior-context.1" name="context" visibility="public" isQuery="true" bodyCondition="Behavior-context.1-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="Behavior-context.1-_ownedComment.0" annotatedElement="Behavior-context.1">
          <body>Missing derivation for Behavior::/context : BehavioredClassifier</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="Behavior-context.1-spec" name="spec" constrainedElement="Behavior-context.1 Behavior-context">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="Behavior-context.1-spec-_specification">
            <language>OCL</language>
            <body>true</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="Behavior-context.1-result" name="result" visibility="public" type="BehavioredClassifier" direction="return">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Behavior-context.1-result-_lowerValue"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="BehaviorExecutionSpecification" name="BehaviorExecutionSpecification">
      <ownedComment xmi:type="uml:Comment" xmi:id="BehaviorExecutionSpecification-_ownedComment.0" annotatedElement="BehaviorExecutionSpecification">
        <body>A behavior execution specification is a kind of execution specification representing the execution of a behavior.</body>
      </ownedComment>
      <generalization xmi:type="uml:Generalization" xmi:id="BehaviorExecutionSpecification-_generalization.0" general="ExecutionSpecification"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="BehaviorExecutionSpecification-behavior" name="behavior" visibility="public" type="Behavior" association="A_behavior_behaviorExecutionSpecification">
        <ownedComment xmi:type="uml:Comment" xmi:id="BehaviorExecutionSpecification-behavior-_ownedComment.0" annotatedElement="BehaviorExecutionSpecification-behavior">
          <body>Behavior whose execution is occurring.</body>
        </ownedComment>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BehaviorExecutionSpecification-behavior-_lowerValue"/>
      </ownedAttribute>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="BehavioralFeature" name="BehavioralFeature" isAbstract="true">
      <ownedComment xmi:type="uml:Comment" xmi:id="BehavioralFeature-_ownedComment.0" annotatedElement="BehavioralFeature">
        <body>A behavioral feature is implemented (realized) by a behavior. A behavioral feature specifies that a classifier will respond to a designated request by invoking its implementing method.</body>
      </ownedComment>
      <ownedComment xmi:type="uml:Comment" xmi:id="BehavioralFeature-_ownedComment.1" annotatedElement="BehavioralFeature">
        <body>A behavioral feature is a feature of a classifier that specifies an aspect of the behavior of its instances.</body>
      </ownedComment>
      <generalization xmi:type="uml:Generalization" xmi:id="BehavioralFeature-_generalization.0" general="Feature"/>
      <generalization xmi:type="uml:Generalization" xmi:id="BehavioralFeature-_generalization.1" general="Namespace"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="BehavioralFeature-concurrency" name="concurrency" visibility="public" type="CallConcurrencyKind">
        <ownedComment xmi:type="uml:Comment" xmi:id="BehavioralFeature-concurrency-_ownedComment.0" annotatedElement="BehavioralFeature-concurrency">
          <body>Specifies the semantics of concurrent calls to the same passive instance (i.e., an instance originating from a class with isActive being false). Active instances control access to their own behavioral features.</body>
        </ownedComment>
        <defaultValue xmi:type="uml:InstanceValue" xmi:id="BehavioralFeature-concurrency-_defaultValue" type="CallConcurrencyKind" instance="CallConcurrencyKind-sequential"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="BehavioralFeature-isAbstract" name="isAbstract" visibility="public">
        <ownedComment xmi:type="uml:Comment" xmi:id="BehavioralFeature-isAbstract-_ownedComment.0" annotatedElement="BehavioralFeature-isAbstract">
          <body>If true, then the behavioral feature does not have an implementation, and one must be supplied by a more specific element. If false, the behavioral feature must have an implementation in the classifier or one must be inherited from a more general element.</body>
        </ownedComment>
        <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="BehavioralFeature-isAbstract-_defaultValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="BehavioralFeature-method" name="method" visibility="public" type="Behavior" association="A_method_specification">
        <ownedComment xmi:type="uml:Comment" xmi:id="BehavioralFeature-method-_ownedComment.0" annotatedElement="BehavioralFeature-method">
          <body>A behavioral description that implements the behavioral feature. There may be at most one behavior for a particular pairing of a classifier (as owner of the behavior) and a behavioral feature (as specification of the behavior).</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="BehavioralFeature-method-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BehavioralFeature-method-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="BehavioralFeature-ownedParameter" name="ownedParameter" visibility="public" type="Parameter" isOrdered="true" aggregation="composite" subsettedProperty="Namespace-ownedMember" association="A_ownedParameter_ownerFormalParam">
        <ownedComment xmi:type="uml:Comment" xmi:id="BehavioralFeature-ownedParameter-_ownedComment.0" annotatedElement="BehavioralFeature-ownedParameter">
          <body>Specifies the ordered set of formal parameters of this BehavioralFeature.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="BehavioralFeature-ownedParameter-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BehavioralFeature-ownedParameter-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="BehavioralFeature-raisedException" name="raisedException" visibility="public" type="Type" association="A_raisedException_behavioralFeature">
        <ownedComment xmi:type="uml:Comment" xmi:id="BehavioralFeature-raisedException-_ownedComment.0" annotatedElement="BehavioralFeature-raisedException">
          <body>References the Types representing exceptions that may be raised during an invocation of this feature.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="BehavioralFeature-raisedException-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BehavioralFeature-raisedException-_lowerValue"/>
      </ownedAttribute>
      <ownedOperation xmi:type="uml:Operation" xmi:id="BehavioralFeature-isDistinguishableFrom" name="isDistinguishableFrom" visibility="public" isQuery="true" redefinedOperation="NamedElement-isDistinguishableFrom" bodyCondition="BehavioralFeature-isDistinguishableFrom-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="BehavioralFeature-isDistinguishableFrom-_ownedComment.0" annotatedElement="BehavioralFeature-isDistinguishableFrom">
          <body>The query isDistinguishableFrom() determines whether two BehavioralFeatures may coexist in the same Namespace. It specifies that they have to have different signatures.</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="BehavioralFeature-isDistinguishableFrom-spec" name="spec" constrainedElement="BehavioralFeature-isDistinguishableFrom">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="BehavioralFeature-isDistinguishableFrom-spec-_specification">
            <language>OCL</language>
            <body>result = if n.oclIsKindOf(BehavioralFeature)
then
  if ns.getNamesOfMember(self)-&gt;intersection(ns.getNamesOfMember(n))-&gt;notEmpty()
  then Set{}-&gt;including(self)-&gt;including(n)-&gt;isUnique(bf | bf.ownedParameter-&gt;collect(type))
  else true
  endif
else true
endif</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="BehavioralFeature-isDistinguishableFrom-result" name="result" visibility="public" direction="return">
          <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
        </ownedParameter>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="BehavioralFeature-isDistinguishableFrom-n" name="n" visibility="public" type="NamedElement"/>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="BehavioralFeature-isDistinguishableFrom-ns" name="ns" visibility="public" type="Namespace"/>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="BehavioredClassifier" name="BehavioredClassifier" isAbstract="true">
      <ownedComment xmi:type="uml:Comment" xmi:id="BehavioredClassifier-_ownedComment.0" annotatedElement="BehavioredClassifier">
        <body>A behaviored classifier may have an interface realization.</body>
      </ownedComment>
      <ownedComment xmi:type="uml:Comment" xmi:id="BehavioredClassifier-_ownedComment.1" annotatedElement="BehavioredClassifier">
        <body>A classifier can have behavior specifications defined in its namespace. One of these may specify the behavior of the classifier itself.</body>
      </ownedComment>
      <ownedRule xmi:type="uml:Constraint" xmi:id="BehavioredClassifier-class_behavior" name="class_behavior" constrainedElement="BehavioredClassifier">
        <ownedComment xmi:type="uml:Comment" xmi:id="BehavioredClassifier-class_behavior-_ownedComment.0" annotatedElement="BehavioredClassifier-class_behavior">
          <body>If a behavior is classifier behavior, it does not have a specification.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="BehavioredClassifier-class_behavior-_specification">
          <language>OCL</language>
          <body>self.classifierBehavior-&gt;notEmpty() implies self.classifierBehavior.specification-&gt;isEmpty()</body>
        </specification>
      </ownedRule>
      <generalization xmi:type="uml:Generalization" xmi:id="BehavioredClassifier-_generalization.0" general="Classifier"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="BehavioredClassifier-classifierBehavior" name="classifierBehavior" visibility="public" type="Behavior" subsettedProperty="BehavioredClassifier-ownedBehavior" association="A_classifierBehavior_behavioredClassifier">
        <ownedComment xmi:type="uml:Comment" xmi:id="BehavioredClassifier-classifierBehavior-_ownedComment.0" annotatedElement="BehavioredClassifier-classifierBehavior">
          <body>A behavior specification that specifies the behavior of the classifier itself.</body>
        </ownedComment>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BehavioredClassifier-classifierBehavior-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="BehavioredClassifier-interfaceRealization" name="interfaceRealization" visibility="public" type="InterfaceRealization" aggregation="composite" subsettedProperty="Element-ownedElement NamedElement-clientDependency" association="A_interfaceRealization_implementingClassifier">
        <ownedComment xmi:type="uml:Comment" xmi:id="BehavioredClassifier-interfaceRealization-_ownedComment.0" annotatedElement="BehavioredClassifier-interfaceRealization">
          <body>The set of InterfaceRealizations owned by the BehavioredClassifier. Interface realizations reference the Interfaces of which the BehavioredClassifier is an implementation.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="BehavioredClassifier-interfaceRealization-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BehavioredClassifier-interfaceRealization-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="BehavioredClassifier-ownedBehavior" name="ownedBehavior" visibility="public" type="Behavior" aggregation="composite" subsettedProperty="Namespace-ownedMember" association="A_ownedBehavior_behavioredClassifier">
        <ownedComment xmi:type="uml:Comment" xmi:id="BehavioredClassifier-ownedBehavior-_ownedComment.0" annotatedElement="BehavioredClassifier-ownedBehavior">
          <body>References behavior specifications owned by a classifier.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="BehavioredClassifier-ownedBehavior-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BehavioredClassifier-ownedBehavior-_lowerValue"/>
      </ownedAttribute>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="CallAction" name="CallAction" isAbstract="true">
      <ownedComment xmi:type="uml:Comment" xmi:id="CallAction-_ownedComment.0" annotatedElement="CallAction">
        <body>CallAction is an abstract class for actions that invoke behavior and receive return values.</body>
      </ownedComment>
      <ownedRule xmi:type="uml:Constraint" xmi:id="CallAction-number_and_order" name="number_and_order" constrainedElement="CallAction">
        <ownedComment xmi:type="uml:Comment" xmi:id="CallAction-number_and_order-_ownedComment.0" annotatedElement="CallAction-number_and_order">
          <body>The number and order of argument pins must be the same as the number and order of parameters of the invoked behavior or behavioral feature. Pins are matched to parameters by order.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="CallAction-number_and_order-_specification">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:type="uml:Constraint" xmi:id="CallAction-type_ordering_multiplicity" name="type_ordering_multiplicity" constrainedElement="CallAction">
        <ownedComment xmi:type="uml:Comment" xmi:id="CallAction-type_ordering_multiplicity-_ownedComment.0" annotatedElement="CallAction-type_ordering_multiplicity">
          <body>The type, ordering, and multiplicity of an argument pin must be the same as the corresponding parameter of the behavior or behavioral feature.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="CallAction-type_ordering_multiplicity-_specification">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:type="uml:Constraint" xmi:id="CallAction-synchronous_call" name="synchronous_call" constrainedElement="CallAction">
        <ownedComment xmi:type="uml:Comment" xmi:id="CallAction-synchronous_call-_ownedComment.0" annotatedElement="CallAction-synchronous_call">
          <body>Only synchronous call actions can have result pins.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="CallAction-synchronous_call-_specification">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <generalization xmi:type="uml:Generalization" xmi:id="CallAction-_generalization.0" general="InvocationAction"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="CallAction-isSynchronous" name="isSynchronous" visibility="public">
        <ownedComment xmi:type="uml:Comment" xmi:id="CallAction-isSynchronous-_ownedComment.0" annotatedElement="CallAction-isSynchronous">
          <body>If true, the call is synchronous and the caller waits for completion of the invoked behavior. If false, the call is asynchronous and the caller proceeds immediately and does not expect a return values.</body>
        </ownedComment>
        <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="CallAction-isSynchronous-_defaultValue" value="true"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="CallAction-result" name="result" visibility="public" type="OutputPin" isOrdered="true" aggregation="composite" subsettedProperty="Action-output" association="A_result_callAction">
        <ownedComment xmi:type="uml:Comment" xmi:id="CallAction-result-_ownedComment.0" annotatedElement="CallAction-result">
          <body>A list of output pins where the results of performing the invocation are placed.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="CallAction-result-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="CallAction-result-_lowerValue"/>
      </ownedAttribute>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="CallBehaviorAction" name="CallBehaviorAction">
      <ownedComment xmi:type="uml:Comment" xmi:id="CallBehaviorAction-_ownedComment.0" annotatedElement="CallBehaviorAction">
        <body>A call behavior action is a call action that invokes a behavior directly rather than invoking a behavioral feature that, in turn, results in the invocation of that behavior. The argument values of the action are available to the execution of the invoked behavior. For synchronous calls the execution of the call behavior action waits until the execution of the invoked behavior completes and a result is returned on its output pin. The action completes immediately without a result, if the call is asynchronous. In particular, the invoked behavior may be an activity.</body>
      </ownedComment>
      <ownedRule xmi:type="uml:Constraint" xmi:id="CallBehaviorAction-result_pin_equal_parameter" name="result_pin_equal_parameter" constrainedElement="CallBehaviorAction">
        <ownedComment xmi:type="uml:Comment" xmi:id="CallBehaviorAction-result_pin_equal_parameter-_ownedComment.0" annotatedElement="CallBehaviorAction-result_pin_equal_parameter">
          <body>The number of result pins and the number of parameters of the behavior of type return, out, and in-out must be equal.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="CallBehaviorAction-result_pin_equal_parameter-_specification">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:type="uml:Constraint" xmi:id="CallBehaviorAction-type_ordering_multiplicity" name="type_ordering_multiplicity" constrainedElement="CallBehaviorAction">
        <ownedComment xmi:type="uml:Comment" xmi:id="CallBehaviorAction-type_ordering_multiplicity-_ownedComment.0" annotatedElement="CallBehaviorAction-type_ordering_multiplicity">
          <body>The type, ordering, and multiplicity of an argument or result pin is derived from the corresponding parameter of the behavior.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="CallBehaviorAction-type_ordering_multiplicity-_specification">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:type="uml:Constraint" xmi:id="CallBehaviorAction-argument_pin_equal_parameter" name="argument_pin_equal_parameter" constrainedElement="CallBehaviorAction">
        <ownedComment xmi:type="uml:Comment" xmi:id="CallBehaviorAction-argument_pin_equal_parameter-_ownedComment.0" annotatedElement="CallBehaviorAction-argument_pin_equal_parameter">
          <body>The number of argument pins and the number of parameters of the behavior of type in and in-out must be equal.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="CallBehaviorAction-argument_pin_equal_parameter-_specification">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <generalization xmi:type="uml:Generalization" xmi:id="CallBehaviorAction-_generalization.0" general="CallAction"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="CallBehaviorAction-behavior" name="behavior" visibility="public" type="Behavior" association="A_behavior_callBehaviorAction">
        <ownedComment xmi:type="uml:Comment" xmi:id="CallBehaviorAction-behavior-_ownedComment.0" annotatedElement="CallBehaviorAction-behavior">
          <body>The invoked behavior. It must be capable of accepting and returning control.</body>
        </ownedComment>
      </ownedAttribute>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="CallEvent" name="CallEvent">
      <ownedComment xmi:type="uml:Comment" xmi:id="CallEvent-_ownedComment.0" annotatedElement="CallEvent">
        <body>A call event models the receipt by an object of a message invoking a call of an operation.</body>
      </ownedComment>
      <generalization xmi:type="uml:Generalization" xmi:id="CallEvent-_generalization.0" general="MessageEvent"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="CallEvent-operation" name="operation" visibility="public" type="Operation" association="A_operation_callEvent">
        <ownedComment xmi:type="uml:Comment" xmi:id="CallEvent-operation-_ownedComment.0" annotatedElement="CallEvent-operation">
          <body>Designates the operation whose invocation raised the call event.</body>
        </ownedComment>
      </ownedAttribute>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="CallOperationAction" name="CallOperationAction">
      <ownedComment xmi:type="uml:Comment" xmi:id="CallOperationAction-_ownedComment.0" annotatedElement="CallOperationAction">
        <body>A call operation action is an action that transmits an operation call request to the target object, where it may cause the invocation of associated behavior. The argument values of the action are available to the execution of the invoked behavior. If the action is marked synchronous, the execution of the call operation action waits until the execution of the invoked behavior completes and a reply transmission is returned to the caller; otherwise execution of the action is complete when the invocation of the operation is established and the execution of the invoked operation proceeds concurrently with the execution of the calling behavior. Any values returned as part of the reply transmission are put on the result output pins of the call operation action. Upon receipt of the reply transmission, execution of the call operation action is complete.</body>
      </ownedComment>
      <ownedRule xmi:type="uml:Constraint" xmi:id="CallOperationAction-type_target_pin" name="type_target_pin" constrainedElement="CallOperationAction">
        <ownedComment xmi:type="uml:Comment" xmi:id="CallOperationAction-type_target_pin-_ownedComment.0" annotatedElement="CallOperationAction-type_target_pin">
          <body>The type of the target pin must be the same as the type that owns the operation.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="CallOperationAction-type_target_pin-_specification">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:type="uml:Constraint" xmi:id="CallOperationAction-type_ordering_multiplicity" name="type_ordering_multiplicity" constrainedElement="CallOperationAction">
        <ownedComment xmi:type="uml:Comment" xmi:id="CallOperationAction-type_ordering_multiplicity-_ownedComment.0" annotatedElement="CallOperationAction-type_ordering_multiplicity">
          <body>The type, ordering, and multiplicity of an argument or result pin is derived from the corresponding owned parameter of the operation.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="CallOperationAction-type_ordering_multiplicity-_specification">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:type="uml:Constraint" xmi:id="CallOperationAction-argument_pin_equal_parameter" name="argument_pin_equal_parameter" constrainedElement="CallOperationAction">
        <ownedComment xmi:type="uml:Comment" xmi:id="CallOperationAction-argument_pin_equal_parameter-_ownedComment.0" annotatedElement="CallOperationAction-argument_pin_equal_parameter">
          <body>The number of argument pins and the number of owned parameters of the operation of type in and in-out must be equal.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="CallOperationAction-argument_pin_equal_parameter-_specification">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:type="uml:Constraint" xmi:id="CallOperationAction-result_pin_equal_parameter" name="result_pin_equal_parameter" constrainedElement="CallOperationAction">
        <ownedComment xmi:type="uml:Comment" xmi:id="CallOperationAction-result_pin_equal_parameter-_ownedComment.0" annotatedElement="CallOperationAction-result_pin_equal_parameter">
          <body>The number of result pins and the number of owned parameters of the operation of type return, out, and in-out must be equal.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="CallOperationAction-result_pin_equal_parameter-_specification">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <generalization xmi:type="uml:Generalization" xmi:id="CallOperationAction-_generalization.0" general="CallAction"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="CallOperationAction-operation" name="operation" visibility="public" type="Operation" association="A_operation_callOperationAction">
        <ownedComment xmi:type="uml:Comment" xmi:id="CallOperationAction-operation-_ownedComment.0" annotatedElement="CallOperationAction-operation">
          <body>The operation to be invoked by the action execution.</body>
        </ownedComment>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="CallOperationAction-target" name="target" visibility="public" type="InputPin" aggregation="composite" subsettedProperty="Action-input" association="A_target_callOperationAction">
        <ownedComment xmi:type="uml:Comment" xmi:id="CallOperationAction-target-_ownedComment.0" annotatedElement="CallOperationAction-target">
          <body>The target object to which the request is sent. The classifier of the target object is used to dynamically determine a behavior to invoke. This object constitutes the context of the execution of the operation.</body>
        </ownedComment>
      </ownedAttribute>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="ChangeEvent" name="ChangeEvent">
      <ownedComment xmi:type="uml:Comment" xmi:id="ChangeEvent-_ownedComment.0" annotatedElement="ChangeEvent">
        <body>A change event models a change in the system configuration that makes a condition true.</body>
      </ownedComment>
      <generalization xmi:type="uml:Generalization" xmi:id="ChangeEvent-_generalization.0" general="Event"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="ChangeEvent-changeExpression" name="changeExpression" visibility="public" type="ValueSpecification" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_changeExpression_changeEvent">
        <ownedComment xmi:type="uml:Comment" xmi:id="ChangeEvent-changeExpression-_ownedComment.0" annotatedElement="ChangeEvent-changeExpression">
          <body>A Boolean-valued expression that will result in a change event whenever its value changes from false to true.</body>
        </ownedComment>
      </ownedAttribute>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="Class" name="Class">
      <ownedComment xmi:type="uml:Comment" xmi:id="Class-_ownedComment.0" annotatedElement="Class">
        <body>A class describes a set of objects that share the same specifications of features, constraints, and semantics.</body>
      </ownedComment>
      <ownedComment xmi:type="uml:Comment" xmi:id="Class-_ownedComment.1" annotatedElement="Class">
        <body>A class may be designated as active (i.e., each of its instances having its own thread of control) or passive (i.e., each of its instances executing within the context of some other object). A class may also specify which signals the instances of this class handle.</body>
      </ownedComment>
      <ownedRule xmi:type="uml:Constraint" xmi:id="Class-passive_class" name="passive_class" constrainedElement="Class">
        <ownedComment xmi:type="uml:Comment" xmi:id="Class-passive_class-_ownedComment.0" annotatedElement="Class-passive_class">
          <body>A passive class may not own receptions.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="Class-passive_class-_specification">
          <language>OCL</language>
          <body>not self.isActive implies self.ownedReception.isEmpty()</body>
        </specification>
      </ownedRule>
      <generalization xmi:type="uml:Generalization" xmi:id="Class-_generalization.0" general="StructuredClassifier"/>
      <generalization xmi:type="uml:Generalization" xmi:id="Class-_generalization.1" general="BehavioredClassifier"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Class-isAbstract" name="isAbstract" visibility="public" redefinedProperty="Classifier-isAbstract">
        <ownedComment xmi:type="uml:Comment" xmi:id="Class-isAbstract-_ownedComment.0" annotatedElement="Class-isAbstract">
          <body>True when a class is abstract.</body>
        </ownedComment>
        <ownedComment xmi:type="uml:Comment" xmi:id="Class-isAbstract-_ownedComment.1" annotatedElement="Class-isAbstract">
          <body>If true, the Classifier does not provide a complete declaration and can typically not be instantiated. An abstract classifier is intended to be used by other classifiers e.g. as the target of general metarelationships or generalization relationships.</body>
        </ownedComment>
        <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Class-isAbstract-_defaultValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Class-isActive" name="isActive" visibility="public">
        <ownedComment xmi:type="uml:Comment" xmi:id="Class-isActive-_ownedComment.0" annotatedElement="Class-isActive">
          <body>Determines whether an object specified by this class is active or not. If true, then the owning class is referred to as an active class. If false, then such a class is referred to as a passive class.</body>
        </ownedComment>
        <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Class-isActive-_defaultValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Class-nestedClassifier" name="nestedClassifier" visibility="public" type="Classifier" isOrdered="true" aggregation="composite" subsettedProperty="Namespace-ownedMember A_redefinitionContext_redefinableElement-redefinableElement" association="A_nestedClassifier_class">
        <ownedComment xmi:type="uml:Comment" xmi:id="Class-nestedClassifier-_ownedComment.0" annotatedElement="Class-nestedClassifier">
          <body>References all the Classifiers that are defined (nested) within the Class.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Class-nestedClassifier-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Class-nestedClassifier-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Class-ownedAttribute" name="ownedAttribute" visibility="public" type="Property" isOrdered="true" aggregation="composite" redefinedProperty="StructuredClassifier-ownedAttribute" subsettedProperty="Namespace-ownedMember Classifier-attribute" association="A_ownedAttribute_class">
        <ownedComment xmi:type="uml:Comment" xmi:id="Class-ownedAttribute-_ownedComment.0" annotatedElement="Class-ownedAttribute">
          <body>The attributes (i.e. the properties) owned by the class.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Class-ownedAttribute-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Class-ownedAttribute-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Class-ownedOperation" name="ownedOperation" visibility="public" type="Operation" isOrdered="true" aggregation="composite" subsettedProperty="Namespace-ownedMember Classifier-feature A_redefinitionContext_redefinableElement-redefinableElement" association="A_ownedOperation_class">
        <ownedComment xmi:type="uml:Comment" xmi:id="Class-ownedOperation-_ownedComment.0" annotatedElement="Class-ownedOperation">
          <body>The operations owned by the class.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Class-ownedOperation-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Class-ownedOperation-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Class-ownedReception" name="ownedReception" visibility="public" type="Reception" aggregation="composite" subsettedProperty="Namespace-ownedMember Classifier-feature" association="A_ownedReception_class">
        <ownedComment xmi:type="uml:Comment" xmi:id="Class-ownedReception-_ownedComment.0" annotatedElement="Class-ownedReception">
          <body>Receptions that objects of this class are willing to accept.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Class-ownedReception-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Class-ownedReception-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Class-superClass" name="superClass" visibility="public" type="Class" isDerived="true" redefinedProperty="Classifier-general" association="A_superClass_class">
        <ownedComment xmi:type="uml:Comment" xmi:id="Class-superClass-_ownedComment.0" annotatedElement="Class-superClass">
          <body>This gives the superclasses of a class.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Class-superClass-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Class-superClass-_lowerValue"/>
      </ownedAttribute>
      <ownedOperation xmi:type="uml:Operation" xmi:id="Class-inherit" name="inherit" visibility="public" isQuery="true" redefinedOperation="Classifier-inherit" bodyCondition="Class-inherit-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="Class-inherit-_ownedComment.0" annotatedElement="Class-inherit">
          <body>The inherit operation is overridden to exclude redefined properties.</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="Class-inherit-spec" name="spec" constrainedElement="Class-inherit">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="Class-inherit-spec-_specification">
            <language>OCL</language>
            <body>result = inhs-&gt;excluding(inh | ownedMember-&gt;select(oclIsKindOf(RedefinableElement))-&gt;select(redefinedElement-&gt;includes(inh)))</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="Class-inherit-result" name="result" visibility="public" type="NamedElement" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Class-inherit-result-_upperValue" value="*"/>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Class-inherit-result-_lowerValue"/>
        </ownedParameter>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="Class-inherit-inhs" name="inhs" visibility="public" type="NamedElement">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Class-inherit-inhs-_upperValue" value="*"/>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Class-inherit-inhs-_lowerValue"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:type="uml:Operation" xmi:id="Class-superClass.1" name="superClass" visibility="public" isQuery="true" bodyCondition="Class-superClass.1-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="Class-superClass.1-_ownedComment.0" annotatedElement="Class-superClass.1">
          <body>Missing derivation for Class::/superClass : Class</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="Class-superClass.1-spec" name="spec" constrainedElement="Class-superClass.1 Class-superClass">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="Class-superClass.1-spec-_specification">
            <language>OCL</language>
            <body>true</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="Class-superClass.1-result" name="result" visibility="public" type="Class" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Class-superClass.1-result-_upperValue" value="*"/>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Class-superClass.1-result-_lowerValue"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="Classifier" name="Classifier" isAbstract="true">
      <ownedComment xmi:type="uml:Comment" xmi:id="Classifier-_ownedComment.0" annotatedElement="Classifier">
        <body>A classifier has the capability to own use cases. Although the owning classifier typically represents the subject to which the owned use cases apply, this is not necessarily the case. In principle, the same use case can be applied to multiple subjects, as identified by the subject association role of a use case.</body>
      </ownedComment>
      <ownedComment xmi:type="uml:Comment" xmi:id="Classifier-_ownedComment.1" annotatedElement="Classifier">
        <body>A classifier is a classification of instances - it describes a set of instances that have features in common. A classifier can specify a generalization hierarchy by referencing its general classifiers.</body>
      </ownedComment>
      <ownedComment xmi:type="uml:Comment" xmi:id="Classifier-_ownedComment.2" annotatedElement="Classifier">
        <body>A classifier has the capability to own collaboration uses. These collaboration uses link a collaboration with the classifier to give a description of the workings of the classifier.</body>
      </ownedComment>
      <ownedRule xmi:type="uml:Constraint" xmi:id="Classifier-specialize_type" name="specialize_type" constrainedElement="Classifier">
        <ownedComment xmi:type="uml:Comment" xmi:id="Classifier-specialize_type-_ownedComment.0" annotatedElement="Classifier-specialize_type">
          <body>A classifier may only specialize classifiers of a valid type.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="Classifier-specialize_type-_specification">
          <language>OCL</language>
          <body>self.parents()-&gt;forAll(c | self.maySpecializeType(c))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:type="uml:Constraint" xmi:id="Classifier-non_final_parents" name="non_final_parents" constrainedElement="Classifier">
        <ownedComment xmi:type="uml:Comment" xmi:id="Classifier-non_final_parents-_ownedComment.0" annotatedElement="Classifier-non_final_parents">
          <body>The parents of a classifier must be non-final.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="Classifier-non_final_parents-_specification">
          <language>OCL</language>
          <body>self.parents()-&gt;forAll(not isFinalSpecialization)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:type="uml:Constraint" xmi:id="Classifier-no_cycles_in_generalization" name="no_cycles_in_generalization" constrainedElement="Classifier">
        <ownedComment xmi:type="uml:Comment" xmi:id="Classifier-no_cycles_in_generalization-_ownedComment.0" annotatedElement="Classifier-no_cycles_in_generalization">
          <body>Generalization hierarchies must be directed and acyclical. A classifier can not be both a transitively general and transitively specific classifier of the same classifier.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="Classifier-no_cycles_in_generalization-_specification">
          <language>OCL</language>
          <body>not self.allParents()-&gt;includes(self)</body>
        </specification>
      </ownedRule>
      <generalization xmi:type="uml:Generalization" xmi:id="Classifier-_generalization.0" general="RedefinableElement"/>
      <generalization xmi:type="uml:Generalization" xmi:id="Classifier-_generalization.1" general="Namespace"/>
      <generalization xmi:type="uml:Generalization" xmi:id="Classifier-_generalization.2" general="Type"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Classifier-attribute" name="attribute" visibility="public" type="Property" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="Classifier-feature A_redefinitionContext_redefinableElement-redefinableElement" association="A_attribute_classifier">
        <ownedComment xmi:type="uml:Comment" xmi:id="Classifier-attribute-_ownedComment.0" annotatedElement="Classifier-attribute">
          <body>Refers to all of the Properties that are direct (i.e. not inherited or imported) attributes of the classifier.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Classifier-attribute-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Classifier-attribute-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Classifier-feature" name="feature" visibility="public" type="Feature" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="Namespace-member" association="A_feature_featuringClassifier">
        <ownedComment xmi:type="uml:Comment" xmi:id="Classifier-feature-_ownedComment.0" annotatedElement="Classifier-feature">
          <body>Specifies each feature defined in the classifier.</body>
        </ownedComment>
        <ownedComment xmi:type="uml:Comment" xmi:id="Classifier-feature-_ownedComment.1" annotatedElement="Classifier-feature">
          <body>Note that there may be members of the Classifier that are of the type Feature but are not included in this association, e.g. inherited features.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Classifier-feature-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Classifier-feature-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Classifier-general" name="general" visibility="public" type="Classifier" isDerived="true" association="A_general_classifier">
        <ownedComment xmi:type="uml:Comment" xmi:id="Classifier-general-_ownedComment.0" annotatedElement="Classifier-general">
          <body>Specifies the general Classifiers for this Classifier.</body>
        </ownedComment>
        <ownedComment xmi:type="uml:Comment" xmi:id="Classifier-general-_ownedComment.1" annotatedElement="Classifier-general">
          <body>References the general classifier in the Generalization relationship.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Classifier-general-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Classifier-general-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Classifier-generalization" name="generalization" visibility="public" type="Generalization" aggregation="composite" subsettedProperty="Element-ownedElement A_source_directedRelationship-directedRelationship" association="A_generalization_specific">
        <ownedComment xmi:type="uml:Comment" xmi:id="Classifier-generalization-_ownedComment.0" annotatedElement="Classifier-generalization">
          <body>Specifies the Generalization relationships for this Classifier. These Generalizations navigaten to more general classifiers in the generalization hierarchy.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Classifier-generalization-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Classifier-generalization-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Classifier-inheritedMember" name="inheritedMember" visibility="public" type="NamedElement" isReadOnly="true" isDerived="true" subsettedProperty="Namespace-member" association="A_inheritedMember_classifier">
        <ownedComment xmi:type="uml:Comment" xmi:id="Classifier-inheritedMember-_ownedComment.0" annotatedElement="Classifier-inheritedMember">
          <body>Specifies all elements inherited by this classifier from the general classifiers.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Classifier-inheritedMember-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Classifier-inheritedMember-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Classifier-isAbstract" name="isAbstract" visibility="public">
        <ownedComment xmi:type="uml:Comment" xmi:id="Classifier-isAbstract-_ownedComment.0" annotatedElement="Classifier-isAbstract">
          <body>If true, the Classifier does not provide a complete declaration and can typically not be instantiated. An abstract classifier is intended to be used by other classifiers e.g. as the target of general metarelationships or generalization relationships.</body>
        </ownedComment>
        <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Classifier-isAbstract-_defaultValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Classifier-isFinalSpecialization" name="isFinalSpecialization" visibility="public">
        <ownedComment xmi:type="uml:Comment" xmi:id="Classifier-isFinalSpecialization-_ownedComment.0" annotatedElement="Classifier-isFinalSpecialization">
          <body>If true, the Classifier cannot be specialized by generalization. Note that this property is preserved through package merge operations; that is, the capability to specialize a Classifier (i.e., isFinalSpecialization =false) must be preserved in the resulting Classifier of a package merge operation where a Classifier with isFinalSpecialization =false is merged with a matching Classifier with isFinalSpecialization =true: the resulting Classifier will have isFinalSpecialization =false.</body>
        </ownedComment>
        <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Classifier-isFinalSpecialization-_defaultValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Classifier-ownedUseCase" name="ownedUseCase" visibility="public" type="UseCase" aggregation="composite" subsettedProperty="Namespace-ownedMember" association="A_ownedUseCase_classifier">
        <ownedComment xmi:type="uml:Comment" xmi:id="Classifier-ownedUseCase-_ownedComment.0" annotatedElement="Classifier-ownedUseCase">
          <body>References the use cases owned by this classifier.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Classifier-ownedUseCase-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Classifier-ownedUseCase-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Classifier-redefinedClassifier" name="redefinedClassifier" visibility="public" type="Classifier" subsettedProperty="RedefinableElement-redefinedElement" association="A_redefinedClassifier_classifier">
        <ownedComment xmi:type="uml:Comment" xmi:id="Classifier-redefinedClassifier-_ownedComment.0" annotatedElement="Classifier-redefinedClassifier">
          <body>References the Classifiers that are redefined by this Classifier.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Classifier-redefinedClassifier-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Classifier-redefinedClassifier-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Classifier-substitution" name="substitution" visibility="public" type="Substitution" aggregation="composite" subsettedProperty="Element-ownedElement NamedElement-clientDependency" association="A_substitution_substitutingClassifier">
        <ownedComment xmi:type="uml:Comment" xmi:id="Classifier-substitution-_ownedComment.0" annotatedElement="Classifier-substitution">
          <body>References the substitutions that are owned by this Classifier.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Classifier-substitution-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Classifier-substitution-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Classifier-useCase" name="useCase" visibility="public" type="UseCase" association="A_subject_useCase">
        <ownedComment xmi:type="uml:Comment" xmi:id="Classifier-useCase-_ownedComment.0" annotatedElement="Classifier-useCase">
          <body>The set of use cases for which this Classifier is the subject.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Classifier-useCase-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Classifier-useCase-_lowerValue"/>
      </ownedAttribute>
      <ownedOperation xmi:type="uml:Operation" xmi:id="Classifier-allFeatures" name="allFeatures" visibility="public" isQuery="true" bodyCondition="Classifier-allFeatures-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="Classifier-allFeatures-_ownedComment.0" annotatedElement="Classifier-allFeatures">
          <body>The query allFeatures() gives all of the features in the namespace of the classifier. In general, through mechanisms such as inheritance, this will be a larger set than feature.</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="Classifier-allFeatures-spec" name="spec" constrainedElement="Classifier-allFeatures">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="Classifier-allFeatures-spec-_specification">
            <language>OCL</language>
            <body>result = member-&gt;select(oclIsKindOf(Feature))</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="Classifier-allFeatures-result" name="result" visibility="public" type="Feature" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Classifier-allFeatures-result-_upperValue" value="*"/>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Classifier-allFeatures-result-_lowerValue"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:type="uml:Operation" xmi:id="Classifier-allParents" name="allParents" visibility="public" isQuery="true" bodyCondition="Classifier-allParents-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="Classifier-allParents-_ownedComment.0" annotatedElement="Classifier-allParents">
          <body>The query allParents() gives all of the direct and indirect ancestors of a generalized Classifier.</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="Classifier-allParents-spec" name="spec" constrainedElement="Classifier-allParents">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="Classifier-allParents-spec-_specification">
            <language>OCL</language>
            <body>result = self.parents()-&gt;union(self.parents()-&gt;collect(p | p.allParents())</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="Classifier-allParents-result" name="result" visibility="public" type="Classifier" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Classifier-allParents-result-_upperValue" value="*"/>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Classifier-allParents-result-_lowerValue"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:type="uml:Operation" xmi:id="Classifier-conformsTo" name="conformsTo" visibility="public" isQuery="true" redefinedOperation="Type-conformsTo" bodyCondition="Classifier-conformsTo-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="Classifier-conformsTo-_ownedComment.0" annotatedElement="Classifier-conformsTo">
          <body>The query conformsTo() gives true for a classifier that defines a type that conforms to another. This is used, for example, in the specification of signature conformance for operations.</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="Classifier-conformsTo-spec" name="spec" constrainedElement="Classifier-conformsTo">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="Classifier-conformsTo-spec-_specification">
            <language>OCL</language>
            <body>result = (self=other) or (self.allParents()-&gt;includes(other))</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="Classifier-conformsTo-result" name="result" visibility="public" direction="return">
          <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
        </ownedParameter>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="Classifier-conformsTo-other" name="other" visibility="public" type="Classifier"/>
      </ownedOperation>
      <ownedOperation xmi:type="uml:Operation" xmi:id="Classifier-general.1" name="general" visibility="public" isQuery="true" bodyCondition="Classifier-general.1-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="Classifier-general.1-_ownedComment.0" annotatedElement="Classifier-general.1">
          <body>The general classifiers are the classifiers referenced by the generalization relationships.</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="Classifier-general.1-spec" name="spec" constrainedElement="Classifier-general.1 Classifier-general">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="Classifier-general.1-spec-_specification">
            <language>OCL</language>
            <body>result = self.parents()</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="Classifier-general.1-result" name="result" visibility="public" type="Classifier" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Classifier-general.1-result-_upperValue" value="*"/>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Classifier-general.1-result-_lowerValue"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:type="uml:Operation" xmi:id="Classifier-hasVisibilityOf" name="hasVisibilityOf" visibility="public" isQuery="true" precondition="Classifier-hasVisibilityOf-pre" bodyCondition="Classifier-hasVisibilityOf-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="Classifier-hasVisibilityOf-_ownedComment.0" annotatedElement="Classifier-hasVisibilityOf">
          <body>The query hasVisibilityOf() determines whether a named element is visible in the classifier. By default all are visible. It is only called when the argument is something owned by a parent.</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="Classifier-hasVisibilityOf-pre" name="pre" constrainedElement="Classifier-hasVisibilityOf">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="Classifier-hasVisibilityOf-pre-_specification">
            <language>OCL</language>
            <body>self.allParents()-&gt;including(self)-&gt;collect(c | c.member)-&gt;includes(n)</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:type="uml:Constraint" xmi:id="Classifier-hasVisibilityOf-spec" name="spec" constrainedElement="Classifier-hasVisibilityOf">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="Classifier-hasVisibilityOf-spec-_specification">
            <language>OCL</language>
            <body>result = (n.visibility &lt;&gt; VisibilityKind::private)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="Classifier-hasVisibilityOf-result" name="result" visibility="public" direction="return">
          <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
        </ownedParameter>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="Classifier-hasVisibilityOf-n" name="n" visibility="public" type="NamedElement"/>
      </ownedOperation>
      <ownedOperation xmi:type="uml:Operation" xmi:id="Classifier-inherit" name="inherit" visibility="public" isQuery="true" bodyCondition="Classifier-inherit-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="Classifier-inherit-_ownedComment.0" annotatedElement="Classifier-inherit">
          <body>The inherit operation is overridden to exclude redefined properties.</body>
        </ownedComment>
        <ownedComment xmi:type="uml:Comment" xmi:id="Classifier-inherit-_ownedComment.1" annotatedElement="Classifier-inherit">
          <body>The query inherit() defines how to inherit a set of elements. Here the operation is defined to inherit them all. It is intended to be redefined in circumstances where inheritance is affected by redefinition.</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="Classifier-inherit-spec" name="spec" constrainedElement="Classifier-inherit">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="Classifier-inherit-spec-_specification">
            <language>OCL</language>
            <body>result = inhs</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="Classifier-inherit-result" name="result" visibility="public" type="NamedElement" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Classifier-inherit-result-_upperValue" value="*"/>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Classifier-inherit-result-_lowerValue"/>
        </ownedParameter>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="Classifier-inherit-inhs" name="inhs" visibility="public" type="NamedElement">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Classifier-inherit-inhs-_upperValue" value="*"/>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Classifier-inherit-inhs-_lowerValue"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:type="uml:Operation" xmi:id="Classifier-inheritableMembers" name="inheritableMembers" visibility="public" isQuery="true" precondition="Classifier-inheritableMembers-pre" bodyCondition="Classifier-inheritableMembers-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="Classifier-inheritableMembers-_ownedComment.0" annotatedElement="Classifier-inheritableMembers">
          <body>The query inheritableMembers() gives all of the members of a classifier that may be inherited in one of its descendants, subject to whatever visibility restrictions apply.</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="Classifier-inheritableMembers-pre" name="pre" constrainedElement="Classifier-inheritableMembers">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="Classifier-inheritableMembers-pre-_specification">
            <language>OCL</language>
            <body>c.allParents()-&gt;includes(self)</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:type="uml:Constraint" xmi:id="Classifier-inheritableMembers-spec" name="spec" constrainedElement="Classifier-inheritableMembers">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="Classifier-inheritableMembers-spec-_specification">
            <language>OCL</language>
            <body>result = member-&gt;select(m | c.hasVisibilityOf(m))</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="Classifier-inheritableMembers-result" name="result" visibility="public" type="NamedElement" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Classifier-inheritableMembers-result-_upperValue" value="*"/>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Classifier-inheritableMembers-result-_lowerValue"/>
        </ownedParameter>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="Classifier-inheritableMembers-c" name="c" visibility="public" type="Classifier"/>
      </ownedOperation>
      <ownedOperation xmi:type="uml:Operation" xmi:id="Classifier-inheritedMember.1" name="inheritedMember" visibility="public" isQuery="true" bodyCondition="Classifier-inheritedMember.1-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="Classifier-inheritedMember.1-_ownedComment.0" annotatedElement="Classifier-inheritedMember.1">
          <body>The inheritedMember association is derived by inheriting the inheritable members of the parents.</body>
        </ownedComment>
        <ownedComment xmi:type="uml:Comment" xmi:id="Classifier-inheritedMember.1-_ownedComment.1" annotatedElement="Classifier-inheritedMember.1">
          <body>The inheritedMember association is derived by inheriting the inheritable members of the parents.</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="Classifier-inheritedMember.1-spec" name="spec" constrainedElement="Classifier-inheritedMember.1 Classifier-inheritedMember">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="Classifier-inheritedMember.1-spec-_specification">
            <language>OCL</language>
            <body>result = self.inherit(self.parents()-&gt;collect(p|p.inheritableMembers(self))-&gt;asSet())</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="Classifier-inheritedMember.1-result" name="result" visibility="public" type="NamedElement" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Classifier-inheritedMember.1-result-_upperValue" value="*"/>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Classifier-inheritedMember.1-result-_lowerValue"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:type="uml:Operation" xmi:id="Classifier-maySpecializeType" name="maySpecializeType" visibility="public" isQuery="true" bodyCondition="Classifier-maySpecializeType-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="Classifier-maySpecializeType-_ownedComment.0" annotatedElement="Classifier-maySpecializeType">
          <body>The query maySpecializeType() determines whether this classifier may have a generalization relationship to classifiers of the specified type. By default a classifier may specialize classifiers of the same or a more general type. It is intended to be redefined by classifiers that have different specialization constraints.</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="Classifier-maySpecializeType-spec" name="spec" constrainedElement="Classifier-maySpecializeType">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="Classifier-maySpecializeType-spec-_specification">
            <language>OCL</language>
            <body>result = self.oclIsKindOf(c.oclType)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="Classifier-maySpecializeType-result" name="result" visibility="public" direction="return">
          <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
        </ownedParameter>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="Classifier-maySpecializeType-c" name="c" visibility="public" type="Classifier"/>
      </ownedOperation>
      <ownedOperation xmi:type="uml:Operation" xmi:id="Classifier-parents" name="parents" visibility="public" isQuery="true" bodyCondition="Classifier-parents-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="Classifier-parents-_ownedComment.0" annotatedElement="Classifier-parents">
          <body>The query parents() gives all of the immediate ancestors of a generalized Classifier.</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="Classifier-parents-spec" name="spec" constrainedElement="Classifier-parents">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="Classifier-parents-spec-_specification">
            <language>OCL</language>
            <body>result = generalization.general</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="Classifier-parents-result" name="result" visibility="public" type="Classifier" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Classifier-parents-result-_upperValue" value="*"/>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Classifier-parents-result-_lowerValue"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="Comment" name="Comment">
      <ownedComment xmi:type="uml:Comment" xmi:id="Comment-_ownedComment.0" annotatedElement="Comment">
        <body>A comment is a textual annotation that can be attached to a set of elements.</body>
      </ownedComment>
      <generalization xmi:type="uml:Generalization" xmi:id="Comment-_generalization.0" general="Element"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Comment-annotatedElement" name="annotatedElement" visibility="public" type="Element" association="A_annotatedElement_comment">
        <ownedComment xmi:type="uml:Comment" xmi:id="Comment-annotatedElement-_ownedComment.0" annotatedElement="Comment-annotatedElement">
          <body>References the Element(s) being commented.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Comment-annotatedElement-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Comment-annotatedElement-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Comment-body" name="body" visibility="public">
        <ownedComment xmi:type="uml:Comment" xmi:id="Comment-body-_ownedComment.0" annotatedElement="Comment-body">
          <body>Specifies a string that is the comment.</body>
        </ownedComment>
        <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#String"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Comment-body-_lowerValue"/>
      </ownedAttribute>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="ConnectableElement" name="ConnectableElement" isAbstract="true">
      <ownedComment xmi:type="uml:Comment" xmi:id="ConnectableElement-_ownedComment.0" annotatedElement="ConnectableElement">
        <body>ConnectableElement is an abstract metaclass representing a set of instances that play roles of a classifier. Connectable elements may be joined by attached connectors and specify configurations of linked instances to be created within an instance of the containing classifier.</body>
      </ownedComment>
      <generalization xmi:type="uml:Generalization" xmi:id="ConnectableElement-_generalization.0" general="TypedElement"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="ConnectableElement-end" name="end" visibility="public" type="ConnectorEnd" isOrdered="true" isReadOnly="true" isDerived="true" association="A_end_role">
        <ownedComment xmi:type="uml:Comment" xmi:id="ConnectableElement-end-_ownedComment.0" annotatedElement="ConnectableElement-end">
          <body>Denotes a set of connector ends that attaches to this connectable element.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ConnectableElement-end-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ConnectableElement-end-_lowerValue"/>
      </ownedAttribute>
      <ownedOperation xmi:type="uml:Operation" xmi:id="ConnectableElement-end.1" name="end" visibility="public" isQuery="true" bodyCondition="ConnectableElement-end.1-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="ConnectableElement-end.1-_ownedComment.0" annotatedElement="ConnectableElement-end.1">
          <body>Missing derivation for ConnectableElement::/end : ConnectorEnd</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="ConnectableElement-end.1-spec" name="spec" constrainedElement="ConnectableElement-end.1 ConnectableElement-end">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="ConnectableElement-end.1-spec-_specification">
            <language>OCL</language>
            <body>result = ConnectorEnd.allInstances()-&gt;select(e | e.role=self)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="ConnectableElement-end.1-result" name="result" visibility="public" type="ConnectorEnd" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ConnectableElement-end.1-result-_upperValue" value="*"/>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ConnectableElement-end.1-result-_lowerValue"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="Connector" name="Connector">
      <ownedComment xmi:type="uml:Comment" xmi:id="Connector-_ownedComment.0" annotatedElement="Connector">
        <body>Specifies a link that enables communication between two or more instances. This link may be an instance of an association, or it may represent the possibility of the instances being able to communicate because their identities are known by virtue of being passed in as parameters, held in variables or slots, or because the communicating instances are the same instance. The link may be realized by something as simple as a pointer or by something as complex as a network connection. In contrast to associations, which specify links between any instance of the associated classifiers, connectors specify links between instances playing the connected parts only.</body>
      </ownedComment>
      <ownedRule xmi:type="uml:Constraint" xmi:id="Connector-roles" name="roles" constrainedElement="Connector">
        <ownedComment xmi:type="uml:Comment" xmi:id="Connector-roles-_ownedComment.0" annotatedElement="Connector-roles">
          <body>The ConnectableElements attached as roles to each ConnectorEnd owned by a Connector must be roles of the Classifier that owned the Connector, or they must be ports of such roles.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="Connector-roles-_specification">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:type="uml:Constraint" xmi:id="Connector-types" name="types" constrainedElement="Connector">
        <ownedComment xmi:type="uml:Comment" xmi:id="Connector-types-_ownedComment.0" annotatedElement="Connector-types">
          <body>The types of the connectable elements that the ends of a connector are attached to must conform to the types of the association ends of the association that types the connector, if any.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="Connector-types-_specification">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:type="uml:Constraint" xmi:id="Connector-compatible" name="compatible" constrainedElement="Connector">
        <ownedComment xmi:type="uml:Comment" xmi:id="Connector-compatible-_ownedComment.0" annotatedElement="Connector-compatible">
          <body>The connectable elements attached to the ends of a connector must be compatible.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="Connector-compatible-_specification">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <generalization xmi:type="uml:Generalization" xmi:id="Connector-_generalization.0" general="Feature"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Connector-end" name="end" visibility="public" type="ConnectorEnd" isOrdered="true" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_end_connector">
        <ownedComment xmi:type="uml:Comment" xmi:id="Connector-end-_ownedComment.0" annotatedElement="Connector-end">
          <body>A connector consists of at least two connector ends, each representing the participation of instances of the classifiers typing the connectable elements attached to this end. The set of connector ends is ordered.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Connector-end-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Connector-end-_lowerValue" value="2"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Connector-redefinedConnector" name="redefinedConnector" visibility="public" type="Connector" subsettedProperty="RedefinableElement-redefinedElement" association="A_redefinedConnector_connector">
        <ownedComment xmi:type="uml:Comment" xmi:id="Connector-redefinedConnector-_ownedComment.0" annotatedElement="Connector-redefinedConnector">
          <body>A connector may be redefined when its containing classifier is specialized. The redefining connector may have a type that specializes the type of the redefined connector. The types of the connector ends of the redefining connector may specialize the types of the connector ends of the redefined connector. The properties of the connector ends of the redefining connector may be replaced.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Connector-redefinedConnector-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Connector-redefinedConnector-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Connector-type" name="type" visibility="public" type="Association" association="A_type_connector">
        <ownedComment xmi:type="uml:Comment" xmi:id="Connector-type-_ownedComment.0" annotatedElement="Connector-type">
          <body>An optional association that specifies the link corresponding to this connector.</body>
        </ownedComment>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Connector-type-_lowerValue"/>
      </ownedAttribute>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="ConnectorEnd" name="ConnectorEnd">
      <ownedComment xmi:type="uml:Comment" xmi:id="ConnectorEnd-_ownedComment.0" annotatedElement="ConnectorEnd">
        <body>A connector end is an endpoint of a connector, which attaches the connector to a connectable element. Each connector end is part of one connector.</body>
      </ownedComment>
      <ownedRule xmi:type="uml:Constraint" xmi:id="ConnectorEnd-multiplicity" name="multiplicity" constrainedElement="ConnectorEnd">
        <ownedComment xmi:type="uml:Comment" xmi:id="ConnectorEnd-multiplicity-_ownedComment.0" annotatedElement="ConnectorEnd-multiplicity">
          <body>The multiplicity of the connector end may not be more general than the multiplicity of the association typing the owning connector.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="ConnectorEnd-multiplicity-_specification">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <generalization xmi:type="uml:Generalization" xmi:id="ConnectorEnd-_generalization.0" general="MultiplicityElement"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="ConnectorEnd-definingEnd" name="definingEnd" visibility="public" type="Property" isReadOnly="true" isDerived="true" association="A_definingEnd_connectorEnd">
        <ownedComment xmi:type="uml:Comment" xmi:id="ConnectorEnd-definingEnd-_ownedComment.0" annotatedElement="ConnectorEnd-definingEnd">
          <body>A derived association referencing the corresponding association end on the association which types the connector owing this connector end. This association is derived by selecting the association end at the same place in the ordering of association ends as this connector end.</body>
        </ownedComment>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ConnectorEnd-definingEnd-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="ConnectorEnd-role" name="role" visibility="public" type="ConnectableElement" association="A_end_role">
        <ownedComment xmi:type="uml:Comment" xmi:id="ConnectorEnd-role-_ownedComment.0" annotatedElement="ConnectorEnd-role">
          <body>The connectable element attached at this connector end. When an instance of the containing classifier is created, a link may (depending on the multiplicities) be created to an instance of the classifier that types this connectable element.</body>
        </ownedComment>
      </ownedAttribute>
      <ownedOperation xmi:type="uml:Operation" xmi:id="ConnectorEnd-definingEnd.1" name="definingEnd" visibility="public" isQuery="true" bodyCondition="ConnectorEnd-definingEnd.1-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="ConnectorEnd-definingEnd.1-_ownedComment.0" annotatedElement="ConnectorEnd-definingEnd.1">
          <body>Missing derivation for ConnectorEnd::/definingEnd : Property</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="ConnectorEnd-definingEnd.1-spec" name="spec" constrainedElement="ConnectorEnd-definingEnd.1 ConnectorEnd-definingEnd">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="ConnectorEnd-definingEnd.1-spec-_specification">
            <language>OCL</language>
            <body>true</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="ConnectorEnd-definingEnd.1-result" name="result" visibility="public" type="Property" direction="return">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ConnectorEnd-definingEnd.1-result-_lowerValue"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="Constraint" name="Constraint">
      <ownedComment xmi:type="uml:Comment" xmi:id="Constraint-_ownedComment.0" annotatedElement="Constraint">
        <body>A constraint is a condition or restriction expressed in natural language text or in a machine readable language for the purpose of declaring some of the semantics of an element.</body>
      </ownedComment>
      <ownedRule xmi:type="uml:Constraint" xmi:id="Constraint-boolean_value" name="boolean_value" constrainedElement="Constraint">
        <ownedComment xmi:type="uml:Comment" xmi:id="Constraint-boolean_value-_ownedComment.0" annotatedElement="Constraint-boolean_value">
          <body>The value specification for a constraint must evaluate to a Boolean value.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="Constraint-boolean_value-_specification">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:type="uml:Constraint" xmi:id="Constraint-not_apply_to_self" name="not_apply_to_self" constrainedElement="Constraint">
        <ownedComment xmi:type="uml:Comment" xmi:id="Constraint-not_apply_to_self-_ownedComment.0" annotatedElement="Constraint-not_apply_to_self">
          <body>A constraint cannot be applied to itself.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="Constraint-not_apply_to_self-_specification">
          <language>OCL</language>
          <body>not constrainedElement-&gt;includes(self)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:type="uml:Constraint" xmi:id="Constraint-no_side_effects" name="no_side_effects" constrainedElement="Constraint">
        <ownedComment xmi:type="uml:Comment" xmi:id="Constraint-no_side_effects-_ownedComment.0" annotatedElement="Constraint-no_side_effects">
          <body>Evaluating the value specification for a constraint must not have side effects.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="Constraint-no_side_effects-_specification">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:type="uml:Constraint" xmi:id="Constraint-value_specification_boolean" name="value_specification_boolean" constrainedElement="Constraint">
        <ownedComment xmi:type="uml:Comment" xmi:id="Constraint-value_specification_boolean-_ownedComment.0" annotatedElement="Constraint-value_specification_boolean">
          <body>The value specification for a constraint must evaluate to a Boolean value.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="Constraint-value_specification_boolean-_specification">
          <language>OCL</language>
          <body>self.specification().booleanValue().isOclKindOf(Boolean)</body>
        </specification>
      </ownedRule>
      <generalization xmi:type="uml:Generalization" xmi:id="Constraint-_generalization.0" general="PackageableElement"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Constraint-constrainedElement" name="constrainedElement" visibility="public" type="Element" isOrdered="true" association="A_constrainedElement_constraint">
        <ownedComment xmi:type="uml:Comment" xmi:id="Constraint-constrainedElement-_ownedComment.0" annotatedElement="Constraint-constrainedElement">
          <body>The ordered set of Elements referenced by this Constraint.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Constraint-constrainedElement-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Constraint-constrainedElement-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Constraint-context" name="context" visibility="public" type="Namespace" subsettedProperty="NamedElement-namespace" association="A_ownedRule_context">
        <ownedComment xmi:type="uml:Comment" xmi:id="Constraint-context-_ownedComment.0" annotatedElement="Constraint-context">
          <body>Specifies the namespace that owns the NamedElement.</body>
        </ownedComment>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Constraint-context-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Constraint-specification" name="specification" visibility="public" type="ValueSpecification" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_specification_owningConstraint">
        <ownedComment xmi:type="uml:Comment" xmi:id="Constraint-specification-_ownedComment.0" annotatedElement="Constraint-specification">
          <body>A condition that must be true when evaluated in order for the constraint to be satisfied.</body>
        </ownedComment>
      </ownedAttribute>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="ControlFlow" name="ControlFlow">
      <ownedComment xmi:type="uml:Comment" xmi:id="ControlFlow-_ownedComment.0" annotatedElement="ControlFlow">
        <body>A control flow is an edge that starts an activity node after the previous one is finished.</body>
      </ownedComment>
      <ownedRule xmi:type="uml:Constraint" xmi:id="ControlFlow-object_nodes" name="object_nodes" constrainedElement="ControlFlow">
        <ownedComment xmi:type="uml:Comment" xmi:id="ControlFlow-object_nodes-_ownedComment.0" annotatedElement="ControlFlow-object_nodes">
          <body>Control flows may not have object nodes at either end, except for object nodes with control type.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="ControlFlow-object_nodes-_specification">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <generalization xmi:type="uml:Generalization" xmi:id="ControlFlow-_generalization.0" general="ActivityEdge"/>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="ControlNode" name="ControlNode" isAbstract="true">
      <ownedComment xmi:type="uml:Comment" xmi:id="ControlNode-_ownedComment.0" annotatedElement="ControlNode">
        <body>A control node is an abstract activity node that coordinates flows in an activity.</body>
      </ownedComment>
      <generalization xmi:type="uml:Generalization" xmi:id="ControlNode-_generalization.0" general="ActivityNode"/>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="DataType" name="DataType">
      <ownedComment xmi:type="uml:Comment" xmi:id="DataType-_ownedComment.0" annotatedElement="DataType">
        <body>A data type is a type whose instances are identified only by their value. A data type may contain attributes to support the modeling of structured data types.</body>
      </ownedComment>
      <generalization xmi:type="uml:Generalization" xmi:id="DataType-_generalization.0" general="Classifier"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="DataType-ownedAttribute" name="ownedAttribute" visibility="public" type="Property" isOrdered="true" aggregation="composite" subsettedProperty="Namespace-ownedMember Classifier-attribute" association="A_ownedAttribute_datatype">
        <ownedComment xmi:type="uml:Comment" xmi:id="DataType-ownedAttribute-_ownedComment.0" annotatedElement="DataType-ownedAttribute">
          <body>The Attributes owned by the DataType.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="DataType-ownedAttribute-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="DataType-ownedAttribute-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="DataType-ownedOperation" name="ownedOperation" visibility="public" type="Operation" isOrdered="true" aggregation="composite" subsettedProperty="Namespace-ownedMember Classifier-feature A_redefinitionContext_redefinableElement-redefinableElement" association="A_ownedOperation_datatype">
        <ownedComment xmi:type="uml:Comment" xmi:id="DataType-ownedOperation-_ownedComment.0" annotatedElement="DataType-ownedOperation">
          <body>The Operations owned by the DataType.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="DataType-ownedOperation-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="DataType-ownedOperation-_lowerValue"/>
      </ownedAttribute>
      <ownedOperation xmi:type="uml:Operation" xmi:id="DataType-inherit" name="inherit" visibility="public" isQuery="true" redefinedOperation="Classifier-inherit" bodyCondition="DataType-inherit-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="DataType-inherit-_ownedComment.0" annotatedElement="DataType-inherit">
          <body>The inherit operation is overridden to exclude redefined properties.</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="DataType-inherit-spec" name="spec" constrainedElement="DataType-inherit">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="DataType-inherit-spec-_specification">
            <language>OCL</language>
            <body>result = inhs-&gt;excluding(inh | ownedMember-&gt;select(oclIsKindOf(RedefinableElement))-&gt;select(redefinedElement-&gt;includes(inh)))</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="DataType-inherit-result" name="result" visibility="public" type="NamedElement" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="DataType-inherit-result-_upperValue" value="*"/>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="DataType-inherit-result-_lowerValue"/>
        </ownedParameter>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="DataType-inherit-inhs" name="inhs" visibility="public" type="NamedElement">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="DataType-inherit-inhs-_upperValue" value="*"/>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="DataType-inherit-inhs-_lowerValue"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="Dependency" name="Dependency">
      <ownedComment xmi:type="uml:Comment" xmi:id="Dependency-_ownedComment.0" annotatedElement="Dependency">
        <body>A dependency is a relationship that signifies that a single or a set of model elements requires other model elements for their specification or implementation. This means that the complete semantics of the depending elements is either semantically or structurally dependent on the definition of the supplier element(s).</body>
      </ownedComment>
      <generalization xmi:type="uml:Generalization" xmi:id="Dependency-_generalization.0" general="PackageableElement"/>
      <generalization xmi:type="uml:Generalization" xmi:id="Dependency-_generalization.1" general="DirectedRelationship"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Dependency-client" name="client" visibility="public" type="NamedElement" subsettedProperty="DirectedRelationship-source" association="A_clientDependency_client">
        <ownedComment xmi:type="uml:Comment" xmi:id="Dependency-client-_ownedComment.0" annotatedElement="Dependency-client">
          <body>The element(s) dependent on the supplier element(s). In some cases (such as a Trace Abstraction) the assignment of direction (that is, the designation of the client element) is at the discretion of the modeler, and is a stipulation.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Dependency-client-_upperValue" value="*"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Dependency-supplier" name="supplier" visibility="public" type="NamedElement" subsettedProperty="DirectedRelationship-target" association="A_supplier_supplierDependency">
        <ownedComment xmi:type="uml:Comment" xmi:id="Dependency-supplier-_ownedComment.0" annotatedElement="Dependency-supplier">
          <body>The element(s) independent of the client element(s), in the same respect and the same dependency relationship. In some directed dependency relationships (such as Refinement Abstractions), a common convention in the domain of class-based OO software is to put the more abstract element in this role. Despite this convention, users of UML may stipulate a sense of dependency suitable for their domain, which makes a more abstract element dependent on that which is more specific.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Dependency-supplier-_upperValue" value="*"/>
      </ownedAttribute>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="DestructionOccurrenceSpecification" name="DestructionOccurrenceSpecification">
      <ownedComment xmi:type="uml:Comment" xmi:id="DestructionOccurrenceSpecification-_ownedComment.0" annotatedElement="DestructionOccurrenceSpecification">
        <body>A destruction event models the destruction of an object.</body>
      </ownedComment>
      <ownedRule xmi:type="uml:Constraint" xmi:id="DestructionOccurrenceSpecification-no_occurrence_specifications_below" name="no_occurrence_specifications_below" constrainedElement="DestructionOccurrenceSpecification">
        <ownedComment xmi:type="uml:Comment" xmi:id="DestructionOccurrenceSpecification-no_occurrence_specifications_below-_ownedComment.0" annotatedElement="DestructionOccurrenceSpecification-no_occurrence_specifications_below">
          <body>No other OccurrenceSpecifications on a given Lifeline in an InteractionOperand may appear below a DestructionOccurrenceSpecification.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="DestructionOccurrenceSpecification-no_occurrence_specifications_below-_specification">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <generalization xmi:type="uml:Generalization" xmi:id="DestructionOccurrenceSpecification-_generalization.0" general="MessageOccurrenceSpecification"/>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="DirectedRelationship" name="DirectedRelationship" isAbstract="true">
      <ownedComment xmi:type="uml:Comment" xmi:id="DirectedRelationship-_ownedComment.0" annotatedElement="DirectedRelationship">
        <body>A directed relationship represents a relationship between a collection of source model elements and a collection of target model elements.</body>
      </ownedComment>
      <generalization xmi:type="uml:Generalization" xmi:id="DirectedRelationship-_generalization.0" general="Relationship"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="DirectedRelationship-source" name="source" visibility="public" type="Element" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="Relationship-relatedElement" association="A_source_directedRelationship">
        <ownedComment xmi:type="uml:Comment" xmi:id="DirectedRelationship-source-_ownedComment.0" annotatedElement="DirectedRelationship-source">
          <body>Specifies the sources of the DirectedRelationship.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="DirectedRelationship-source-_upperValue" value="*"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="DirectedRelationship-target" name="target" visibility="public" type="Element" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="Relationship-relatedElement" association="A_target_directedRelationship">
        <ownedComment xmi:type="uml:Comment" xmi:id="DirectedRelationship-target-_ownedComment.0" annotatedElement="DirectedRelationship-target">
          <body>Specifies the targets of the DirectedRelationship.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="DirectedRelationship-target-_upperValue" value="*"/>
      </ownedAttribute>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="Element" name="Element" isAbstract="true">
      <ownedComment xmi:type="uml:Comment" xmi:id="Element-_ownedComment.0" annotatedElement="Element">
        <body>An element is a constituent of a model. As such, it has the capability of owning other elements.</body>
      </ownedComment>
      <ownedRule xmi:type="uml:Constraint" xmi:id="Element-not_own_self" name="not_own_self" constrainedElement="Element">
        <ownedComment xmi:type="uml:Comment" xmi:id="Element-not_own_self-_ownedComment.0" annotatedElement="Element-not_own_self">
          <body>An element may not directly or indirectly own itself.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="Element-not_own_self-_specification">
          <language>OCL</language>
          <body>not self.allOwnedElements()-&gt;includes(self)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:type="uml:Constraint" xmi:id="Element-has_owner" name="has_owner" constrainedElement="Element">
        <ownedComment xmi:type="uml:Comment" xmi:id="Element-has_owner-_ownedComment.0" annotatedElement="Element-has_owner">
          <body>Elements that must be owned must have an owner.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="Element-has_owner-_specification">
          <language>OCL</language>
          <body>self.mustBeOwned() implies owner-&gt;notEmpty()</body>
        </specification>
      </ownedRule>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Element-ownedComment" name="ownedComment" visibility="public" type="Comment" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_ownedComment_owningElement">
        <ownedComment xmi:type="uml:Comment" xmi:id="Element-ownedComment-_ownedComment.0" annotatedElement="Element-ownedComment">
          <body>The Comments owned by this element.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Element-ownedComment-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Element-ownedComment-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Element-ownedElement" name="ownedElement" visibility="public" type="Element" isReadOnly="true" isDerived="true" isDerivedUnion="true" aggregation="composite" association="A_ownedElement_owner">
        <ownedComment xmi:type="uml:Comment" xmi:id="Element-ownedElement-_ownedComment.0" annotatedElement="Element-ownedElement">
          <body>The Elements owned by this element.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Element-ownedElement-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Element-ownedElement-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Element-owner" name="owner" visibility="public" type="Element" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="A_ownedElement_owner">
        <ownedComment xmi:type="uml:Comment" xmi:id="Element-owner-_ownedComment.0" annotatedElement="Element-owner">
          <body>The Element that owns this element.</body>
        </ownedComment>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Element-owner-_lowerValue"/>
      </ownedAttribute>
      <ownedOperation xmi:type="uml:Operation" xmi:id="Element-allOwnedElements" name="allOwnedElements" visibility="public" isQuery="true" bodyCondition="Element-allOwnedElements-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="Element-allOwnedElements-_ownedComment.0" annotatedElement="Element-allOwnedElements">
          <body>The query allOwnedElements() gives all of the direct and indirect owned elements of an element.</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="Element-allOwnedElements-spec" name="spec" constrainedElement="Element-allOwnedElements">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="Element-allOwnedElements-spec-_specification">
            <language>OCL</language>
            <body>result = ownedElement-&gt;union(ownedElement-&gt;collect(e | e.allOwnedElements()))</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="Element-allOwnedElements-result" name="result" visibility="public" type="Element" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Element-allOwnedElements-result-_upperValue" value="*"/>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Element-allOwnedElements-result-_lowerValue"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:type="uml:Operation" xmi:id="Element-mustBeOwned" name="mustBeOwned" visibility="public" isQuery="true" bodyCondition="Element-mustBeOwned-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="Element-mustBeOwned-_ownedComment.0" annotatedElement="Element-mustBeOwned">
          <body>The query mustBeOwned() indicates whether elements of this type must have an owner. Subclasses of Element that do not require an owner must override this operation.</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="Element-mustBeOwned-spec" name="spec" constrainedElement="Element-mustBeOwned">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="Element-mustBeOwned-spec-_specification">
            <language>OCL</language>
            <body>result = true</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="Element-mustBeOwned-result" name="result" visibility="public" direction="return">
          <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="ElementImport" name="ElementImport">
      <ownedComment xmi:type="uml:Comment" xmi:id="ElementImport-_ownedComment.0" annotatedElement="ElementImport">
        <body>An element import identifies an element in another package, and allows the element to be referenced using its name without a qualifier.</body>
      </ownedComment>
      <ownedRule xmi:type="uml:Constraint" xmi:id="ElementImport-visibility_public_or_private" name="visibility_public_or_private" constrainedElement="ElementImport">
        <ownedComment xmi:type="uml:Comment" xmi:id="ElementImport-visibility_public_or_private-_ownedComment.0" annotatedElement="ElementImport-visibility_public_or_private">
          <body>The visibility of an ElementImport is either public or private.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="ElementImport-visibility_public_or_private-_specification">
          <language>OCL</language>
          <body>self.visibility = #public or self.visibility = #private</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:type="uml:Constraint" xmi:id="ElementImport-imported_element_is_public" name="imported_element_is_public" constrainedElement="ElementImport">
        <ownedComment xmi:type="uml:Comment" xmi:id="ElementImport-imported_element_is_public-_ownedComment.0" annotatedElement="ElementImport-imported_element_is_public">
          <body>An importedElement has either public visibility or no visibility at all.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="ElementImport-imported_element_is_public-_specification">
          <language>OCL</language>
          <body>self.importedElement.visibility.notEmpty() implies self.importedElement.visibility = #public</body>
        </specification>
      </ownedRule>
      <generalization xmi:type="uml:Generalization" xmi:id="ElementImport-_generalization.0" general="DirectedRelationship"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="ElementImport-alias" name="alias" visibility="public">
        <ownedComment xmi:type="uml:Comment" xmi:id="ElementImport-alias-_ownedComment.0" annotatedElement="ElementImport-alias">
          <body>Specifies the name that should be added to the namespace of the importing package in lieu of the name of the imported packagable element. The aliased name must not clash with any other member name in the importing package. By default, no alias is used.</body>
        </ownedComment>
        <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#String"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ElementImport-alias-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="ElementImport-importedElement" name="importedElement" visibility="public" type="PackageableElement" subsettedProperty="DirectedRelationship-target" association="A_importedElement_elementImport">
        <ownedComment xmi:type="uml:Comment" xmi:id="ElementImport-importedElement-_ownedComment.0" annotatedElement="ElementImport-importedElement">
          <body>Specifies the PackageableElement whose name is to be added to a Namespace.</body>
        </ownedComment>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="ElementImport-importingNamespace" name="importingNamespace" visibility="public" type="Namespace" subsettedProperty="Element-owner DirectedRelationship-source" association="A_elementImport_importingNamespace">
        <ownedComment xmi:type="uml:Comment" xmi:id="ElementImport-importingNamespace-_ownedComment.0" annotatedElement="ElementImport-importingNamespace">
          <body>Specifies the Namespace that imports a PackageableElement from another Package.</body>
        </ownedComment>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="ElementImport-visibility" name="visibility" visibility="public" type="VisibilityKind">
        <ownedComment xmi:type="uml:Comment" xmi:id="ElementImport-visibility-_ownedComment.0" annotatedElement="ElementImport-visibility">
          <body>Specifies the visibility of the imported PackageableElement within the importing Package. The default visibility is the same as that of the imported element. If the imported element does not have a visibility, it is possible to add visibility to the element import.</body>
        </ownedComment>
        <defaultValue xmi:type="uml:InstanceValue" xmi:id="ElementImport-visibility-_defaultValue" type="VisibilityKind" instance="VisibilityKind-public"/>
      </ownedAttribute>
      <ownedOperation xmi:type="uml:Operation" xmi:id="ElementImport-getName" name="getName" visibility="public" isQuery="true" bodyCondition="ElementImport-getName-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="ElementImport-getName-_ownedComment.0" annotatedElement="ElementImport-getName">
          <body>The query getName() returns the name under which the imported PackageableElement will be known in the importing namespace.</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="ElementImport-getName-spec" name="spec" constrainedElement="ElementImport-getName">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="ElementImport-getName-spec-_specification">
            <language>OCL</language>
            <body>result = if self.alias-&gt;notEmpty() then
  self.alias
else
  self.importedElement.name
endif</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="ElementImport-getName-result" name="result" visibility="public" direction="return">
          <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#String"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="Enumeration" name="Enumeration">
      <ownedComment xmi:type="uml:Comment" xmi:id="Enumeration-_ownedComment.0" annotatedElement="Enumeration">
        <body>An enumeration is a data type whose values are enumerated in the model as enumeration literals.</body>
      </ownedComment>
      <generalization xmi:type="uml:Generalization" xmi:id="Enumeration-_generalization.0" general="DataType"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Enumeration-ownedLiteral" name="ownedLiteral" visibility="public" type="EnumerationLiteral" isOrdered="true" aggregation="composite" subsettedProperty="Namespace-ownedMember" association="A_ownedLiteral_enumeration">
        <ownedComment xmi:type="uml:Comment" xmi:id="Enumeration-ownedLiteral-_ownedComment.0" annotatedElement="Enumeration-ownedLiteral">
          <body>The ordered set of literals for this Enumeration.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Enumeration-ownedLiteral-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Enumeration-ownedLiteral-_lowerValue"/>
      </ownedAttribute>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="EnumerationLiteral" name="EnumerationLiteral">
      <ownedComment xmi:type="uml:Comment" xmi:id="EnumerationLiteral-_ownedComment.0" annotatedElement="EnumerationLiteral">
        <body>An enumeration literal is a user-defined data value for an enumeration.</body>
      </ownedComment>
      <ownedRule xmi:type="uml:Constraint" xmi:id="EnumerationLiteral-classifier_equals_owning_enumeration" name="classifier_equals_owning_enumeration" constrainedElement="EnumerationLiteral">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="EnumerationLiteral-classifier_equals_owning_enumeration-_specification">
          <language>OCL</language>
          <body>classifier = enumeration</body>
        </specification>
      </ownedRule>
      <generalization xmi:type="uml:Generalization" xmi:id="EnumerationLiteral-_generalization.0" general="InstanceSpecification"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="EnumerationLiteral-classifier" name="classifier" visibility="public" type="Enumeration" isReadOnly="true" isDerived="true" redefinedProperty="InstanceSpecification-classifier" association="A_classifier_enumerationLiteral">
        <ownedComment xmi:type="uml:Comment" xmi:id="EnumerationLiteral-classifier-_ownedComment.0" annotatedElement="EnumerationLiteral-classifier">
          <body>The classifier of this EnumerationLiteral derived to be equal to its enumeration.</body>
        </ownedComment>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="EnumerationLiteral-enumeration" name="enumeration" visibility="public" type="Enumeration" subsettedProperty="NamedElement-namespace" association="A_ownedLiteral_enumeration">
        <ownedComment xmi:type="uml:Comment" xmi:id="EnumerationLiteral-enumeration-_ownedComment.0" annotatedElement="EnumerationLiteral-enumeration">
          <body>The Enumeration that this EnumerationLiteral is a member of.</body>
        </ownedComment>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EnumerationLiteral-enumeration-_lowerValue"/>
      </ownedAttribute>
      <ownedOperation xmi:type="uml:Operation" xmi:id="EnumerationLiteral-classifier.1" name="classifier" visibility="public" isQuery="true" bodyCondition="EnumerationLiteral-classifier.1-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="EnumerationLiteral-classifier.1-_ownedComment.0" annotatedElement="EnumerationLiteral-classifier.1">
          <body>Missing derivation for EnumerationLiteral::/classifier : Enumeration</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="EnumerationLiteral-classifier.1-spec" name="spec" constrainedElement="EnumerationLiteral-classifier.1 EnumerationLiteral-classifier">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="EnumerationLiteral-classifier.1-spec-_specification">
            <language>OCL</language>
            <body>true</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="EnumerationLiteral-classifier.1-result" name="result" visibility="public" type="Enumeration" direction="return"/>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="Event" name="Event" isAbstract="true">
      <ownedComment xmi:type="uml:Comment" xmi:id="Event-_ownedComment.0" annotatedElement="Event">
        <body>An event is the specification of some occurrence that may potentially trigger effects by an object.</body>
      </ownedComment>
      <generalization xmi:type="uml:Generalization" xmi:id="Event-_generalization.0" general="PackageableElement"/>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="ExecutionOccurrenceSpecification" name="ExecutionOccurrenceSpecification">
      <ownedComment xmi:type="uml:Comment" xmi:id="ExecutionOccurrenceSpecification-_ownedComment.0" annotatedElement="ExecutionOccurrenceSpecification">
        <body>An execution occurrence specification represents moments in time at which actions or behaviors start or finish.</body>
      </ownedComment>
      <generalization xmi:type="uml:Generalization" xmi:id="ExecutionOccurrenceSpecification-_generalization.0" general="OccurrenceSpecification"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="ExecutionOccurrenceSpecification-execution" name="execution" visibility="public" type="ExecutionSpecification" association="A_execution_executionOccurrenceSpecification">
        <ownedComment xmi:type="uml:Comment" xmi:id="ExecutionOccurrenceSpecification-execution-_ownedComment.0" annotatedElement="ExecutionOccurrenceSpecification-execution">
          <body>References the execution specification describing the execution that is started or finished at this execution event.</body>
        </ownedComment>
      </ownedAttribute>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="ExecutionSpecification" name="ExecutionSpecification" isAbstract="true">
      <ownedComment xmi:type="uml:Comment" xmi:id="ExecutionSpecification-_ownedComment.0" annotatedElement="ExecutionSpecification">
        <body>An execution specification is a specification of the execution of a unit of behavior or action within the lifeline. The duration of an execution specification is represented by two cccurrence specifications, the start occurrence specification and the finish occurrence specification.</body>
      </ownedComment>
      <ownedRule xmi:type="uml:Constraint" xmi:id="ExecutionSpecification-same_lifeline" name="same_lifeline" constrainedElement="ExecutionSpecification">
        <ownedComment xmi:type="uml:Comment" xmi:id="ExecutionSpecification-same_lifeline-_ownedComment.0" annotatedElement="ExecutionSpecification-same_lifeline">
          <body>The startEvent and the finishEvent must be on the same Lifeline</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="ExecutionSpecification-same_lifeline-_specification">
          <language>OCL</language>
          <body>start.lifeline = finish.lifeline</body>
        </specification>
      </ownedRule>
      <generalization xmi:type="uml:Generalization" xmi:id="ExecutionSpecification-_generalization.0" general="InteractionFragment"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="ExecutionSpecification-finish" name="finish" visibility="public" type="OccurrenceSpecification" association="A_finish_executionSpecification">
        <ownedComment xmi:type="uml:Comment" xmi:id="ExecutionSpecification-finish-_ownedComment.0" annotatedElement="ExecutionSpecification-finish">
          <body>References the OccurrenceSpecification that designates the finish of the Action or Behavior.</body>
        </ownedComment>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="ExecutionSpecification-start" name="start" visibility="public" type="OccurrenceSpecification" association="A_start_executionSpecification">
        <ownedComment xmi:type="uml:Comment" xmi:id="ExecutionSpecification-start-_ownedComment.0" annotatedElement="ExecutionSpecification-start">
          <body>References the OccurrenceSpecification that designates the start of the Action or Behavior</body>
        </ownedComment>
      </ownedAttribute>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="Expression" name="Expression">
      <ownedComment xmi:type="uml:Comment" xmi:id="Expression-_ownedComment.0" annotatedElement="Expression">
        <body>An expression is a structured tree of symbols that denotes a (possibly empty) set of values when evaluated in a context.</body>
      </ownedComment>
      <ownedComment xmi:type="uml:Comment" xmi:id="Expression-_ownedComment.1" annotatedElement="Expression">
        <body>An expression represents a node in an expression tree, which may be non-terminal or terminal. It defines a symbol, and has a possibly empty sequence of operands which are value specifications.</body>
      </ownedComment>
      <generalization xmi:type="uml:Generalization" xmi:id="Expression-_generalization.0" general="ValueSpecification"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Expression-operand" name="operand" visibility="public" type="ValueSpecification" isOrdered="true" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_operand_expression">
        <ownedComment xmi:type="uml:Comment" xmi:id="Expression-operand-_ownedComment.0" annotatedElement="Expression-operand">
          <body>Specifies a sequence of operands.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Expression-operand-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Expression-operand-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Expression-symbol" name="symbol" visibility="public">
        <ownedComment xmi:type="uml:Comment" xmi:id="Expression-symbol-_ownedComment.0" annotatedElement="Expression-symbol">
          <body>The symbol associated with the node in the expression tree.</body>
        </ownedComment>
        <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#String"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Expression-symbol-_lowerValue"/>
      </ownedAttribute>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="Extend" name="Extend">
      <ownedComment xmi:type="uml:Comment" xmi:id="Extend-_ownedComment.0" annotatedElement="Extend">
        <body>A relationship from an extending use case to an extended use case that specifies how and when the behavior defined in the extending use case can be inserted into the behavior defined in the extended use case.</body>
      </ownedComment>
      <ownedRule xmi:type="uml:Constraint" xmi:id="Extend-extension_points" name="extension_points" constrainedElement="Extend">
        <ownedComment xmi:type="uml:Comment" xmi:id="Extend-extension_points-_ownedComment.0" annotatedElement="Extend-extension_points">
          <body>The extension points referenced by the extend relationship must belong to the use case that is being extended.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="Extend-extension_points-_specification">
          <language>OCL</language>
          <body>extensionLocation-&gt;forAll (xp | extendedCase.extensionPoint-&gt;includes(xp))</body>
        </specification>
      </ownedRule>
      <generalization xmi:type="uml:Generalization" xmi:id="Extend-_generalization.0" general="NamedElement"/>
      <generalization xmi:type="uml:Generalization" xmi:id="Extend-_generalization.1" general="DirectedRelationship"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Extend-condition" name="condition" visibility="public" type="Constraint" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_condition_extend">
        <ownedComment xmi:type="uml:Comment" xmi:id="Extend-condition-_ownedComment.0" annotatedElement="Extend-condition">
          <body>References the condition that must hold when the first extension point is reached for the extension to take place. If no constraint is associated with the extend relationship, the extension is unconditional.</body>
        </ownedComment>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Extend-condition-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Extend-extendedCase" name="extendedCase" visibility="public" type="UseCase" subsettedProperty="DirectedRelationship-target" association="A_extendedCase_extend">
        <ownedComment xmi:type="uml:Comment" xmi:id="Extend-extendedCase-_ownedComment.0" annotatedElement="Extend-extendedCase">
          <body>References the use case that is being extended.</body>
        </ownedComment>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Extend-extension" name="extension" visibility="public" type="UseCase" subsettedProperty="DirectedRelationship-source NamedElement-namespace" association="A_extend_extension">
        <ownedComment xmi:type="uml:Comment" xmi:id="Extend-extension-_ownedComment.0" annotatedElement="Extend-extension">
          <body>References the use case that represents the extension and owns the extend relationship.</body>
        </ownedComment>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Extend-extensionLocation" name="extensionLocation" visibility="public" type="ExtensionPoint" isOrdered="true" association="A_extensionLocation_extension">
        <ownedComment xmi:type="uml:Comment" xmi:id="Extend-extensionLocation-_ownedComment.0" annotatedElement="Extend-extensionLocation">
          <body>An ordered list of extension points belonging to the extended use case, specifying where the respective behavioral fragments of the extending use case are to be inserted. The first fragment in the extending use case is associated with the first extension point in the list, the second fragment with the second point, and so on. (Note that, in most practical cases, the extending use case has just a single behavior fragment, so that the list of extension points is trivial.)</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Extend-extensionLocation-_upperValue" value="*"/>
      </ownedAttribute>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="ExtensionPoint" name="ExtensionPoint">
      <ownedComment xmi:type="uml:Comment" xmi:id="ExtensionPoint-_ownedComment.0" annotatedElement="ExtensionPoint">
        <body>An extension point identifies a point in the behavior of a use case where that behavior can be extended by the behavior of some other (extending) use case, as specified by an extend relationship.</body>
      </ownedComment>
      <ownedRule xmi:type="uml:Constraint" xmi:id="ExtensionPoint-must_have_name" name="must_have_name" constrainedElement="ExtensionPoint">
        <ownedComment xmi:type="uml:Comment" xmi:id="ExtensionPoint-must_have_name-_ownedComment.0" annotatedElement="ExtensionPoint-must_have_name">
          <body>An ExtensionPoint must have a name.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="ExtensionPoint-must_have_name-_specification">
          <language>OCL</language>
          <body>self.name-&gt;notEmpty ()</body>
        </specification>
      </ownedRule>
      <generalization xmi:type="uml:Generalization" xmi:id="ExtensionPoint-_generalization.0" general="RedefinableElement"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="ExtensionPoint-useCase" name="useCase" visibility="public" type="UseCase" subsettedProperty="NamedElement-namespace" association="A_extensionPoint_useCase">
        <ownedComment xmi:type="uml:Comment" xmi:id="ExtensionPoint-useCase-_ownedComment.0" annotatedElement="ExtensionPoint-useCase">
          <body>References the use case that owns this extension point.</body>
        </ownedComment>
      </ownedAttribute>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="Feature" name="Feature" isAbstract="true">
      <ownedComment xmi:type="uml:Comment" xmi:id="Feature-_ownedComment.0" annotatedElement="Feature">
        <body>A feature declares a behavioral or structural characteristic of instances of classifiers.</body>
      </ownedComment>
      <generalization xmi:type="uml:Generalization" xmi:id="Feature-_generalization.0" general="RedefinableElement"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Feature-featuringClassifier" name="featuringClassifier" visibility="public" type="Classifier" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="A_member_memberNamespace-memberNamespace" association="A_feature_featuringClassifier">
        <ownedComment xmi:type="uml:Comment" xmi:id="Feature-featuringClassifier-_ownedComment.0" annotatedElement="Feature-featuringClassifier">
          <body>The Classifiers that have this Feature as a feature.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Feature-featuringClassifier-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Feature-featuringClassifier-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Feature-isStatic" name="isStatic" visibility="public">
        <ownedComment xmi:type="uml:Comment" xmi:id="Feature-isStatic-_ownedComment.0" annotatedElement="Feature-isStatic">
          <body>Specifies whether this feature characterizes individual instances classified by the classifier (false) or the classifier itself (true).</body>
        </ownedComment>
        <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Feature-isStatic-_defaultValue"/>
      </ownedAttribute>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="FunctionBehavior" name="FunctionBehavior">
      <ownedComment xmi:type="uml:Comment" xmi:id="FunctionBehavior-_ownedComment.0" annotatedElement="FunctionBehavior">
        <body>A function behavior is an opaque behavior that does not access or modify any objects or other external data.</body>
      </ownedComment>
      <ownedRule xmi:type="uml:Constraint" xmi:id="FunctionBehavior-one_output_parameter" name="one_output_parameter" constrainedElement="FunctionBehavior">
        <ownedComment xmi:type="uml:Comment" xmi:id="FunctionBehavior-one_output_parameter-_ownedComment.0" annotatedElement="FunctionBehavior-one_output_parameter">
          <body>A function behavior has at least one output parameter.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="FunctionBehavior-one_output_parameter-_specification">
          <language>OCL</language>
          <body>self.ownedParameters-&gt;
  select(p | p.direction=#out or p.direction=#inout or p.direction=#return)-&gt;size() &gt;= 1</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:type="uml:Constraint" xmi:id="FunctionBehavior-types_of_parameters" name="types_of_parameters" constrainedElement="FunctionBehavior">
        <ownedComment xmi:type="uml:Comment" xmi:id="FunctionBehavior-types_of_parameters-_ownedComment.0" annotatedElement="FunctionBehavior-types_of_parameters">
          <body>The types of parameters are all data types, which may not nest anything but other datatypes.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="FunctionBehavior-types_of_parameters-_specification">
          <language>OCL</language>
          <body>def: hasAllDataTypeAttributes(d : DataType) : Boolean =
  d.ownedAttribute-&gt;forAll(a |
    a.type.oclIsTypeOf(DataType) and
      hasAllDataTypeAttributes(a.type))
self.ownedParameters-&gt;forAll(p | p.type.notEmpty() and
  p.oclIsTypeOf(DataType) and hasAllDataTypeAttributes(p))</body>
        </specification>
      </ownedRule>
      <generalization xmi:type="uml:Generalization" xmi:id="FunctionBehavior-_generalization.0" general="OpaqueBehavior"/>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="GeneralOrdering" name="GeneralOrdering">
      <ownedComment xmi:type="uml:Comment" xmi:id="GeneralOrdering-_ownedComment.0" annotatedElement="GeneralOrdering">
        <body>A general ordering represents a binary relation between two occurrence specifications, to describe that one occurrence specification must occur before the other in a valid trace. This mechanism provides the ability to define partial orders of occurrence cpecifications that may otherwise not have a specified order.</body>
      </ownedComment>
      <ownedRule xmi:type="uml:Constraint" xmi:id="GeneralOrdering-irreflexsive_transitive_closure" name="irreflexsive_transitive_closure" constrainedElement="GeneralOrdering">
        <ownedComment xmi:type="uml:Comment" xmi:id="GeneralOrdering-irreflexsive_transitive_closure-_ownedComment.0" annotatedElement="GeneralOrdering-irreflexsive_transitive_closure">
          <body>An occurrence specification must not be ordered relative to itself through a series of general orderings. (In other words, the transitive closure of the general orderings is irreflexive.)</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="GeneralOrdering-irreflexsive_transitive_closure-_specification">
          <language>OCL</language>
          <body>start.lifeline = finish.lifeline</body>
        </specification>
      </ownedRule>
      <generalization xmi:type="uml:Generalization" xmi:id="GeneralOrdering-_generalization.0" general="NamedElement"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="GeneralOrdering-after" name="after" visibility="public" type="OccurrenceSpecification" association="A_toBefore_after">
        <ownedComment xmi:type="uml:Comment" xmi:id="GeneralOrdering-after-_ownedComment.0" annotatedElement="GeneralOrdering-after">
          <body>The OccurrenceSpecification referenced comes after the OccurrenceSpecification referenced by before.</body>
        </ownedComment>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="GeneralOrdering-before" name="before" visibility="public" type="OccurrenceSpecification" association="A_before_toAfter">
        <ownedComment xmi:type="uml:Comment" xmi:id="GeneralOrdering-before-_ownedComment.0" annotatedElement="GeneralOrdering-before">
          <body>The OccurrenceSpecification referenced comes before the OccurrenceSpecification referenced by after.</body>
        </ownedComment>
      </ownedAttribute>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="Generalization" name="Generalization">
      <ownedComment xmi:type="uml:Comment" xmi:id="Generalization-_ownedComment.0" annotatedElement="Generalization">
        <body>A generalization is a taxonomic relationship between a more general classifier and a more specific classifier. Each instance of the specific classifier is also an indirect instance of the general classifier. Thus, the specific classifier inherits the features of the more general classifier.</body>
      </ownedComment>
      <generalization xmi:type="uml:Generalization" xmi:id="Generalization-_generalization.0" general="DirectedRelationship"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Generalization-general" name="general" visibility="public" type="Classifier" subsettedProperty="DirectedRelationship-target" association="A_general_generalization">
        <ownedComment xmi:type="uml:Comment" xmi:id="Generalization-general-_ownedComment.0" annotatedElement="Generalization-general">
          <body>References the general classifier in the Generalization relationship.</body>
        </ownedComment>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Generalization-isSubstitutable" name="isSubstitutable" visibility="public">
        <ownedComment xmi:type="uml:Comment" xmi:id="Generalization-isSubstitutable-_ownedComment.0" annotatedElement="Generalization-isSubstitutable">
          <body>Indicates whether the specific classifier can be used wherever the general classifier can be used. If true, the execution traces of the specific classifier will be a superset of the execution traces of the general classifier.</body>
        </ownedComment>
        <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Generalization-isSubstitutable-_lowerValue"/>
        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Generalization-isSubstitutable-_defaultValue" value="true"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Generalization-specific" name="specific" visibility="public" type="Classifier" subsettedProperty="Element-owner DirectedRelationship-source" association="A_generalization_specific">
        <ownedComment xmi:type="uml:Comment" xmi:id="Generalization-specific-_ownedComment.0" annotatedElement="Generalization-specific">
          <body>References the specializing classifier in the Generalization relationship.</body>
        </ownedComment>
      </ownedAttribute>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="Include" name="Include">
      <ownedComment xmi:type="uml:Comment" xmi:id="Include-_ownedComment.0" annotatedElement="Include">
        <body>An include relationship defines that a use case contains the behavior defined in another use case.</body>
      </ownedComment>
      <generalization xmi:type="uml:Generalization" xmi:id="Include-_generalization.0" general="NamedElement"/>
      <generalization xmi:type="uml:Generalization" xmi:id="Include-_generalization.1" general="DirectedRelationship"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Include-addition" name="addition" visibility="public" type="UseCase" subsettedProperty="DirectedRelationship-target" association="A_addition_include">
        <ownedComment xmi:type="uml:Comment" xmi:id="Include-addition-_ownedComment.0" annotatedElement="Include-addition">
          <body>References the use case that is to be included.</body>
        </ownedComment>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Include-includingCase" name="includingCase" visibility="public" type="UseCase" subsettedProperty="DirectedRelationship-source NamedElement-namespace" association="A_include_includingCase">
        <ownedComment xmi:type="uml:Comment" xmi:id="Include-includingCase-_ownedComment.0" annotatedElement="Include-includingCase">
          <body>References the use case which will include the addition and owns the include relationship.</body>
        </ownedComment>
      </ownedAttribute>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="InitialNode" name="InitialNode">
      <ownedComment xmi:type="uml:Comment" xmi:id="InitialNode-_ownedComment.0" annotatedElement="InitialNode">
        <body>An initial node is a control node at which flow starts when the activity is invoked.</body>
      </ownedComment>
      <ownedRule xmi:type="uml:Constraint" xmi:id="InitialNode-control_edges" name="control_edges" constrainedElement="InitialNode">
        <ownedComment xmi:type="uml:Comment" xmi:id="InitialNode-control_edges-_ownedComment.0" annotatedElement="InitialNode-control_edges">
          <body>Only control edges can have initial nodes as source.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="InitialNode-control_edges-_specification">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:type="uml:Constraint" xmi:id="InitialNode-no_incoming_edges" name="no_incoming_edges" constrainedElement="InitialNode">
        <ownedComment xmi:type="uml:Comment" xmi:id="InitialNode-no_incoming_edges-_ownedComment.0" annotatedElement="InitialNode-no_incoming_edges">
          <body>An initial node has no incoming edges.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="InitialNode-no_incoming_edges-_specification">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <generalization xmi:type="uml:Generalization" xmi:id="InitialNode-_generalization.0" general="ControlNode"/>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="InputPin" name="InputPin">
      <ownedComment xmi:type="uml:Comment" xmi:id="InputPin-_ownedComment.0" annotatedElement="InputPin">
        <body>An input pin is a pin that holds input values to be consumed by an action.</body>
      </ownedComment>
      <generalization xmi:type="uml:Generalization" xmi:id="InputPin-_generalization.0" general="Pin"/>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="InstanceSpecification" name="InstanceSpecification">
      <ownedComment xmi:type="uml:Comment" xmi:id="InstanceSpecification-_ownedComment.0" annotatedElement="InstanceSpecification">
        <body>An instance specification is a model element that represents an instance in a modeled system.</body>
      </ownedComment>
      <ownedRule xmi:type="uml:Constraint" xmi:id="InstanceSpecification-structural_feature" name="structural_feature" constrainedElement="InstanceSpecification">
        <ownedComment xmi:type="uml:Comment" xmi:id="InstanceSpecification-structural_feature-_ownedComment.0" annotatedElement="InstanceSpecification-structural_feature">
          <body>One structural feature (including the same feature inherited from multiple classifiers) is the defining feature of at most one slot in an instance specification.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="InstanceSpecification-structural_feature-_specification">
          <language>OCL</language>
          <body>classifier-&gt;forAll(c | (c.allFeatures()-&gt;forAll(f | slot-&gt;select(s | s.definingFeature = f)-&gt;size() &lt;= 1)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:type="uml:Constraint" xmi:id="InstanceSpecification-defining_feature" name="defining_feature" constrainedElement="InstanceSpecification">
        <ownedComment xmi:type="uml:Comment" xmi:id="InstanceSpecification-defining_feature-_ownedComment.0" annotatedElement="InstanceSpecification-defining_feature">
          <body>The defining feature of each slot is a structural feature (directly or inherited) of a classifier of the instance specification.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="InstanceSpecification-defining_feature-_specification">
          <language>OCL</language>
          <body>slot-&gt;forAll(s | classifier-&gt;exists (c | c.allFeatures()-&gt;includes (s.definingFeature)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:type="uml:Generalization" xmi:id="InstanceSpecification-_generalization.0" general="PackageableElement"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="InstanceSpecification-classifier" name="classifier" visibility="public" type="Classifier" association="A_classifier_instanceSpecification">
        <ownedComment xmi:type="uml:Comment" xmi:id="InstanceSpecification-classifier-_ownedComment.0" annotatedElement="InstanceSpecification-classifier">
          <body>The classifier or classifiers of the represented instance. If multiple classifiers are specified, the instance is classified by all of them.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="InstanceSpecification-classifier-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="InstanceSpecification-classifier-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="InstanceSpecification-slot" name="slot" visibility="public" type="Slot" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_slot_owningInstance">
        <ownedComment xmi:type="uml:Comment" xmi:id="InstanceSpecification-slot-_ownedComment.0" annotatedElement="InstanceSpecification-slot">
          <body>A slot giving the value or values of a structural feature of the instance. An instance specification can have one slot per structural feature of its classifiers, including inherited features. It is not necessary to model a slot for each structural feature, in which case the instance specification is a partial description.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="InstanceSpecification-slot-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="InstanceSpecification-slot-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="InstanceSpecification-specification" name="specification" visibility="public" type="ValueSpecification" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_specification_owningInstanceSpec">
        <ownedComment xmi:type="uml:Comment" xmi:id="InstanceSpecification-specification-_ownedComment.0" annotatedElement="InstanceSpecification-specification">
          <body>A specification of how to compute, derive, or construct the instance.</body>
        </ownedComment>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="InstanceSpecification-specification-_lowerValue"/>
      </ownedAttribute>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="InstanceValue" name="InstanceValue">
      <ownedComment xmi:type="uml:Comment" xmi:id="InstanceValue-_ownedComment.0" annotatedElement="InstanceValue">
        <body>An instance value is a value specification that identifies an instance.</body>
      </ownedComment>
      <generalization xmi:type="uml:Generalization" xmi:id="InstanceValue-_generalization.0" general="ValueSpecification"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="InstanceValue-instance" name="instance" visibility="public" type="InstanceSpecification" association="A_instance_instanceValue">
        <ownedComment xmi:type="uml:Comment" xmi:id="InstanceValue-instance-_ownedComment.0" annotatedElement="InstanceValue-instance">
          <body>The instance that is the specified value.</body>
        </ownedComment>
      </ownedAttribute>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="Interaction" name="Interaction">
      <ownedComment xmi:type="uml:Comment" xmi:id="Interaction-_ownedComment.0" annotatedElement="Interaction">
        <body>An interaction is a unit of behavior that focuses on the observable exchange of information between connectable elements.</body>
      </ownedComment>
      <generalization xmi:type="uml:Generalization" xmi:id="Interaction-_generalization.0" general="Behavior"/>
      <generalization xmi:type="uml:Generalization" xmi:id="Interaction-_generalization.1" general="InteractionFragment"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Interaction-action" name="action" visibility="public" type="Action" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_action_interaction">
        <ownedComment xmi:type="uml:Comment" xmi:id="Interaction-action-_ownedComment.0" annotatedElement="Interaction-action">
          <body>Actions owned by the Interaction.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Interaction-action-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Interaction-action-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Interaction-fragment" name="fragment" visibility="public" type="InteractionFragment" isOrdered="true" aggregation="composite" subsettedProperty="Namespace-ownedMember" association="A_fragment_enclosingInteraction">
        <ownedComment xmi:type="uml:Comment" xmi:id="Interaction-fragment-_ownedComment.0" annotatedElement="Interaction-fragment">
          <body>The ordered set of fragments in the Interaction.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Interaction-fragment-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Interaction-fragment-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Interaction-lifeline" name="lifeline" visibility="public" type="Lifeline" aggregation="composite" subsettedProperty="Namespace-ownedMember" association="A_lifeline_interaction">
        <ownedComment xmi:type="uml:Comment" xmi:id="Interaction-lifeline-_ownedComment.0" annotatedElement="Interaction-lifeline">
          <body>Specifies the participants in this Interaction.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Interaction-lifeline-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Interaction-lifeline-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Interaction-message" name="message" visibility="public" type="Message" aggregation="composite" subsettedProperty="Namespace-ownedMember" association="A_message_interaction">
        <ownedComment xmi:type="uml:Comment" xmi:id="Interaction-message-_ownedComment.0" annotatedElement="Interaction-message">
          <body>The Messages contained in this Interaction.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Interaction-message-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Interaction-message-_lowerValue"/>
      </ownedAttribute>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="InteractionFragment" name="InteractionFragment" isAbstract="true">
      <ownedComment xmi:type="uml:Comment" xmi:id="InteractionFragment-_ownedComment.0" annotatedElement="InteractionFragment">
        <body>InteractionFragment is an abstract notion of the most general interaction unit. An interaction fragment is a piece of an interaction. Each interaction fragment is conceptually like an interaction by itself.</body>
      </ownedComment>
      <generalization xmi:type="uml:Generalization" xmi:id="InteractionFragment-_generalization.0" general="NamedElement"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="InteractionFragment-covered" name="covered" visibility="public" type="Lifeline" association="A_covered_coveredBy">
        <ownedComment xmi:type="uml:Comment" xmi:id="InteractionFragment-covered-_ownedComment.0" annotatedElement="InteractionFragment-covered">
          <body>References the Lifelines that the InteractionFragment involves.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="InteractionFragment-covered-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="InteractionFragment-covered-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="InteractionFragment-enclosingInteraction" name="enclosingInteraction" visibility="public" type="Interaction" subsettedProperty="NamedElement-namespace" association="A_fragment_enclosingInteraction">
        <ownedComment xmi:type="uml:Comment" xmi:id="InteractionFragment-enclosingInteraction-_ownedComment.0" annotatedElement="InteractionFragment-enclosingInteraction">
          <body>The Interaction enclosing this InteractionFragment.</body>
        </ownedComment>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="InteractionFragment-enclosingInteraction-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="InteractionFragment-generalOrdering" name="generalOrdering" visibility="public" type="GeneralOrdering" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_generalOrdering_interactionFragment">
        <ownedComment xmi:type="uml:Comment" xmi:id="InteractionFragment-generalOrdering-_ownedComment.0" annotatedElement="InteractionFragment-generalOrdering">
          <body>The general ordering relationships contained in this fragment.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="InteractionFragment-generalOrdering-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="InteractionFragment-generalOrdering-_lowerValue"/>
      </ownedAttribute>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="Interface" name="Interface">
      <ownedComment xmi:type="uml:Comment" xmi:id="Interface-_ownedComment.0" annotatedElement="Interface">
        <body>An interface is a kind of classifier that represents a declaration of a set of coherent public features and obligations. An interface specifies a contract; any instance of a classifier that realizes the interface must fulfill that contract. The obligations that may be associated with an interface are in the form of various kinds of constraints (such as pre- and post-conditions) or protocol specifications, which may impose ordering restrictions on interactions through the interface.</body>
      </ownedComment>
      <ownedComment xmi:type="uml:Comment" xmi:id="Interface-_ownedComment.1" annotatedElement="Interface">
        <body>Interfaces may include receptions (in addition to operations).</body>
      </ownedComment>
      <ownedRule xmi:type="uml:Constraint" xmi:id="Interface-visibility" name="visibility" constrainedElement="Interface">
        <ownedComment xmi:type="uml:Comment" xmi:id="Interface-visibility-_ownedComment.0" annotatedElement="Interface-visibility">
          <body>The visibility of all features owned by an interface must be public.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="Interface-visibility-_specification">
          <language>OCL</language>
          <body>self.feature-&gt;forAll(f | f.visibility = #public)</body>
        </specification>
      </ownedRule>
      <generalization xmi:type="uml:Generalization" xmi:id="Interface-_generalization.0" general="Classifier"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Interface-nestedClassifier" name="nestedClassifier" visibility="public" type="Classifier" isOrdered="true" aggregation="composite" subsettedProperty="Namespace-ownedMember A_redefinitionContext_redefinableElement-redefinableElement" association="A_nestedClassifier_interface">
        <ownedComment xmi:type="uml:Comment" xmi:id="Interface-nestedClassifier-_ownedComment.0" annotatedElement="Interface-nestedClassifier">
          <body>References all the Classifiers that are defined (nested) within the Class.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Interface-nestedClassifier-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Interface-nestedClassifier-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Interface-ownedAttribute" name="ownedAttribute" visibility="public" type="Property" isOrdered="true" aggregation="composite" subsettedProperty="Namespace-ownedMember Classifier-attribute" association="A_ownedAttribute_interface">
        <ownedComment xmi:type="uml:Comment" xmi:id="Interface-ownedAttribute-_ownedComment.0" annotatedElement="Interface-ownedAttribute">
          <body>The attributes (i.e. the properties) owned by the class.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Interface-ownedAttribute-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Interface-ownedAttribute-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Interface-ownedOperation" name="ownedOperation" visibility="public" type="Operation" isOrdered="true" aggregation="composite" subsettedProperty="Namespace-ownedMember Classifier-feature A_redefinitionContext_redefinableElement-redefinableElement" association="A_ownedOperation_interface">
        <ownedComment xmi:type="uml:Comment" xmi:id="Interface-ownedOperation-_ownedComment.0" annotatedElement="Interface-ownedOperation">
          <body>The operations owned by the class.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Interface-ownedOperation-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Interface-ownedOperation-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Interface-ownedReception" name="ownedReception" visibility="public" type="Reception" aggregation="composite" subsettedProperty="Namespace-ownedMember Classifier-feature" association="A_ownedReception_interface">
        <ownedComment xmi:type="uml:Comment" xmi:id="Interface-ownedReception-_ownedComment.0" annotatedElement="Interface-ownedReception">
          <body>Receptions that objects providing this interface are willing to accept.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Interface-ownedReception-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Interface-ownedReception-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Interface-redefinedInterface" name="redefinedInterface" visibility="public" type="Interface" subsettedProperty="Classifier-redefinedClassifier" association="A_redefinedInterface_interface">
        <ownedComment xmi:type="uml:Comment" xmi:id="Interface-redefinedInterface-_ownedComment.0" annotatedElement="Interface-redefinedInterface">
          <body>References all the Interfaces redefined by this Interface.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Interface-redefinedInterface-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Interface-redefinedInterface-_lowerValue"/>
      </ownedAttribute>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="InterfaceRealization" name="InterfaceRealization">
      <ownedComment xmi:type="uml:Comment" xmi:id="InterfaceRealization-_ownedComment.0" annotatedElement="InterfaceRealization">
        <body>An interface realization is a specialized realization relationship between a classifier and an interface. This relationship signifies that the realizing classifier conforms to the contract specified by the interface.</body>
      </ownedComment>
      <generalization xmi:type="uml:Generalization" xmi:id="InterfaceRealization-_generalization.0" general="Realization"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="InterfaceRealization-contract" name="contract" visibility="public" type="Interface" subsettedProperty="Dependency-supplier" association="A_contract_interfaceRealization">
        <ownedComment xmi:type="uml:Comment" xmi:id="InterfaceRealization-contract-_ownedComment.0" annotatedElement="InterfaceRealization-contract">
          <body>References the Interface specifying the conformance contract.</body>
        </ownedComment>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="InterfaceRealization-implementingClassifier" name="implementingClassifier" visibility="public" type="BehavioredClassifier" subsettedProperty="Element-owner Dependency-client" association="A_interfaceRealization_implementingClassifier">
        <ownedComment xmi:type="uml:Comment" xmi:id="InterfaceRealization-implementingClassifier-_ownedComment.0" annotatedElement="InterfaceRealization-implementingClassifier">
          <body>References the BehavioredClassifier that owns this Interfacerealization (i.e., the classifier that realizes the Interface to which it points).</body>
        </ownedComment>
      </ownedAttribute>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="InvocationAction" name="InvocationAction" isAbstract="true">
      <ownedComment xmi:type="uml:Comment" xmi:id="InvocationAction-_ownedComment.0" annotatedElement="InvocationAction">
        <body>InvocationAction is an abstract class for the various actions that invoke behavior.</body>
      </ownedComment>
      <generalization xmi:type="uml:Generalization" xmi:id="InvocationAction-_generalization.0" general="Action"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="InvocationAction-argument" name="argument" visibility="public" type="InputPin" isOrdered="true" aggregation="composite" subsettedProperty="Action-input" association="A_argument_invocationAction">
        <ownedComment xmi:type="uml:Comment" xmi:id="InvocationAction-argument-_ownedComment.0" annotatedElement="InvocationAction-argument">
          <body>Specification of the ordered set of argument values that appears during execution.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="InvocationAction-argument-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="InvocationAction-argument-_lowerValue"/>
      </ownedAttribute>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="Lifeline" name="Lifeline">
      <ownedComment xmi:type="uml:Comment" xmi:id="Lifeline-_ownedComment.0" annotatedElement="Lifeline">
        <body>A lifeline represents an individual participant in the interaction. While parts and structural features may have multiplicity greater than 1, lifelines represent only one interacting entity.</body>
      </ownedComment>
      <ownedRule xmi:type="uml:Constraint" xmi:id="Lifeline-same_classifier" name="same_classifier" constrainedElement="Lifeline">
        <ownedComment xmi:type="uml:Comment" xmi:id="Lifeline-same_classifier-_ownedComment.0" annotatedElement="Lifeline-same_classifier">
          <body>The classifier containing the referenced ConnectableElement must be the same classifier, or an ancestor, of the classifier that contains the interaction enclosing this lifeline.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="Lifeline-same_classifier-_specification">
          <language>OCL</language>
          <body>if (represents-&gt;notEmpty()) then
(if selector-&gt;notEmpty() then represents.isMultivalued() else not represents.isMultivalued())
</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:type="uml:Constraint" xmi:id="Lifeline-selector_specified" name="selector_specified" constrainedElement="Lifeline">
        <ownedComment xmi:type="uml:Comment" xmi:id="Lifeline-selector_specified-_ownedComment.0" annotatedElement="Lifeline-selector_specified">
          <body>The selector for a Lifeline must only be specified if the referenced Part is multivalued.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="Lifeline-selector_specified-_specification">
          <language>OCL</language>
          <body>(self.selector-&gt;isEmpty() implies not self.represents.isMultivalued()) or
(not self.selector-&gt;isEmpty() implies self.represents.isMultivalued())
</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:type="uml:Constraint" xmi:id="Lifeline-interaction_uses_share_lifeline" name="interaction_uses_share_lifeline" constrainedElement="Lifeline">
        <ownedComment xmi:type="uml:Comment" xmi:id="Lifeline-interaction_uses_share_lifeline-_ownedComment.0" annotatedElement="Lifeline-interaction_uses_share_lifeline">
          <body>If two (or more) InteractionUses within one Interaction, refer to Interactions with 'common Lifelines,' those Lifelines must also appear in the Interaction with the InteractionUses. By common Lifelines we mean Lifelines with the same selector and represents associations.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="Lifeline-interaction_uses_share_lifeline-_specification">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <generalization xmi:type="uml:Generalization" xmi:id="Lifeline-_generalization.0" general="NamedElement"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Lifeline-coveredBy" name="coveredBy" visibility="public" type="InteractionFragment" association="A_covered_coveredBy">
        <ownedComment xmi:type="uml:Comment" xmi:id="Lifeline-coveredBy-_ownedComment.0" annotatedElement="Lifeline-coveredBy">
          <body>References the InteractionFragments in which this Lifeline takes part.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Lifeline-coveredBy-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Lifeline-coveredBy-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Lifeline-interaction" name="interaction" visibility="public" type="Interaction" subsettedProperty="NamedElement-namespace" association="A_lifeline_interaction">
        <ownedComment xmi:type="uml:Comment" xmi:id="Lifeline-interaction-_ownedComment.0" annotatedElement="Lifeline-interaction">
          <body>References the Interaction enclosing this Lifeline.</body>
        </ownedComment>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Lifeline-represents" name="represents" visibility="public" type="ConnectableElement" association="A_represents_lifeline">
        <ownedComment xmi:type="uml:Comment" xmi:id="Lifeline-represents-_ownedComment.0" annotatedElement="Lifeline-represents">
          <body>References the ConnectableElement within the classifier that contains the enclosing interaction.</body>
        </ownedComment>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Lifeline-represents-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Lifeline-selector" name="selector" visibility="public" type="ValueSpecification" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_selector_lifeline">
        <ownedComment xmi:type="uml:Comment" xmi:id="Lifeline-selector-_ownedComment.0" annotatedElement="Lifeline-selector">
          <body>If the referenced ConnectableElement is multivalued, then this specifies the specific individual part within that set.</body>
        </ownedComment>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Lifeline-selector-_lowerValue"/>
      </ownedAttribute>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="LiteralBoolean" name="LiteralBoolean">
      <ownedComment xmi:type="uml:Comment" xmi:id="LiteralBoolean-_ownedComment.0" annotatedElement="LiteralBoolean">
        <body>A literal Boolean is a specification of a Boolean value.</body>
      </ownedComment>
      <generalization xmi:type="uml:Generalization" xmi:id="LiteralBoolean-_generalization.0" general="LiteralSpecification"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="LiteralBoolean-value" name="value" visibility="public">
        <ownedComment xmi:type="uml:Comment" xmi:id="LiteralBoolean-value-_ownedComment.0" annotatedElement="LiteralBoolean-value">
          <body>The specified Boolean value.</body>
        </ownedComment>
        <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="LiteralBoolean-value-_defaultValue"/>
      </ownedAttribute>
      <ownedOperation xmi:type="uml:Operation" xmi:id="LiteralBoolean-booleanValue" name="booleanValue" visibility="public" isQuery="true" redefinedOperation="ValueSpecification-booleanValue" bodyCondition="LiteralBoolean-booleanValue-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="LiteralBoolean-booleanValue-_ownedComment.0" annotatedElement="LiteralBoolean-booleanValue">
          <body>The query booleanValue() gives the value.</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="LiteralBoolean-booleanValue-spec" name="spec" constrainedElement="LiteralBoolean-booleanValue">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="LiteralBoolean-booleanValue-spec-_specification">
            <language>OCL</language>
            <body>result = value</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="LiteralBoolean-booleanValue-result" name="result" visibility="public" direction="return">
          <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:type="uml:Operation" xmi:id="LiteralBoolean-isComputable" name="isComputable" visibility="public" isQuery="true" redefinedOperation="ValueSpecification-isComputable" bodyCondition="LiteralBoolean-isComputable-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="LiteralBoolean-isComputable-_ownedComment.0" annotatedElement="LiteralBoolean-isComputable">
          <body>The query isComputable() is redefined to be true.</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="LiteralBoolean-isComputable-spec" name="spec" constrainedElement="LiteralBoolean-isComputable">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="LiteralBoolean-isComputable-spec-_specification">
            <language>OCL</language>
            <body>result = true</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="LiteralBoolean-isComputable-result" name="result" visibility="public" direction="return">
          <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="LiteralInteger" name="LiteralInteger">
      <ownedComment xmi:type="uml:Comment" xmi:id="LiteralInteger-_ownedComment.0" annotatedElement="LiteralInteger">
        <body>A literal integer is a specification of an integer value.</body>
      </ownedComment>
      <generalization xmi:type="uml:Generalization" xmi:id="LiteralInteger-_generalization.0" general="LiteralSpecification"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="LiteralInteger-value" name="value" visibility="public">
        <ownedComment xmi:type="uml:Comment" xmi:id="LiteralInteger-value-_ownedComment.0" annotatedElement="LiteralInteger-value">
          <body>The specified Integer value.</body>
        </ownedComment>
        <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Integer"/>
        <defaultValue xmi:type="uml:LiteralInteger" xmi:id="LiteralInteger-value-_defaultValue"/>
      </ownedAttribute>
      <ownedOperation xmi:type="uml:Operation" xmi:id="LiteralInteger-integerValue" name="integerValue" visibility="public" isQuery="true" redefinedOperation="ValueSpecification-integerValue" bodyCondition="LiteralInteger-integerValue-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="LiteralInteger-integerValue-_ownedComment.0" annotatedElement="LiteralInteger-integerValue">
          <body>The query integerValue() gives the value.</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="LiteralInteger-integerValue-spec" name="spec" constrainedElement="LiteralInteger-integerValue">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="LiteralInteger-integerValue-spec-_specification">
            <language>OCL</language>
            <body>result = value</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="LiteralInteger-integerValue-result" name="result" visibility="public" direction="return">
          <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Integer"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:type="uml:Operation" xmi:id="LiteralInteger-isComputable" name="isComputable" visibility="public" isQuery="true" redefinedOperation="ValueSpecification-isComputable" bodyCondition="LiteralInteger-isComputable-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="LiteralInteger-isComputable-_ownedComment.0" annotatedElement="LiteralInteger-isComputable">
          <body>The query isComputable() is redefined to be true.</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="LiteralInteger-isComputable-spec" name="spec" constrainedElement="LiteralInteger-isComputable">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="LiteralInteger-isComputable-spec-_specification">
            <language>OCL</language>
            <body>result = true</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="LiteralInteger-isComputable-result" name="result" visibility="public" direction="return">
          <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="LiteralNull" name="LiteralNull">
      <ownedComment xmi:type="uml:Comment" xmi:id="LiteralNull-_ownedComment.0" annotatedElement="LiteralNull">
        <body>A literal null specifies the lack of a value.</body>
      </ownedComment>
      <generalization xmi:type="uml:Generalization" xmi:id="LiteralNull-_generalization.0" general="LiteralSpecification"/>
      <ownedOperation xmi:type="uml:Operation" xmi:id="LiteralNull-isComputable" name="isComputable" visibility="public" isQuery="true" redefinedOperation="ValueSpecification-isComputable" bodyCondition="LiteralNull-isComputable-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="LiteralNull-isComputable-_ownedComment.0" annotatedElement="LiteralNull-isComputable">
          <body>The query isComputable() is redefined to be true.</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="LiteralNull-isComputable-spec" name="spec" constrainedElement="LiteralNull-isComputable">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="LiteralNull-isComputable-spec-_specification">
            <language>OCL</language>
            <body>result = true</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="LiteralNull-isComputable-result" name="result" visibility="public" direction="return">
          <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:type="uml:Operation" xmi:id="LiteralNull-isNull" name="isNull" visibility="public" isQuery="true" redefinedOperation="ValueSpecification-isNull" bodyCondition="LiteralNull-isNull-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="LiteralNull-isNull-_ownedComment.0" annotatedElement="LiteralNull-isNull">
          <body>The query isNull() returns true.</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="LiteralNull-isNull-spec" name="spec" constrainedElement="LiteralNull-isNull">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="LiteralNull-isNull-spec-_specification">
            <language>OCL</language>
            <body>result = true</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="LiteralNull-isNull-result" name="result" visibility="public" direction="return">
          <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="LiteralReal" name="LiteralReal">
      <ownedComment xmi:type="uml:Comment" xmi:id="LiteralReal-_ownedComment.0" annotatedElement="LiteralReal">
        <body>A literal real is a specification of a real value.</body>
      </ownedComment>
      <generalization xmi:type="uml:Generalization" xmi:id="LiteralReal-_generalization.0" general="LiteralSpecification"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="LiteralReal-value" name="value" visibility="public">
        <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Real"/>
      </ownedAttribute>
      <ownedOperation xmi:type="uml:Operation" xmi:id="LiteralReal-isComputable" name="isComputable" visibility="public" isQuery="true" redefinedOperation="ValueSpecification-isComputable" bodyCondition="LiteralReal-isComputable-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="LiteralReal-isComputable-_ownedComment.0" annotatedElement="LiteralReal-isComputable">
          <body>The query isComputable() is redefined to be true.</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="LiteralReal-isComputable-spec" name="spec" constrainedElement="LiteralReal-isComputable">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="LiteralReal-isComputable-spec-_specification">
            <language>OCL</language>
            <body>result = true</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="LiteralReal-isComputable-result" name="result" visibility="public" direction="return">
          <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:type="uml:Operation" xmi:id="LiteralReal-realValue" name="realValue" visibility="public" isQuery="true" redefinedOperation="ValueSpecification-realValue" bodyCondition="LiteralReal-realValue-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="LiteralReal-realValue-_ownedComment.0" annotatedElement="LiteralReal-realValue">
          <body>The query realValue() gives the value.</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="LiteralReal-realValue-spec" name="spec" constrainedElement="LiteralReal-realValue">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="LiteralReal-realValue-spec-_specification">
            <language>OCL</language>
            <body>result = value</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="LiteralReal-realValue-result" name="result" visibility="public" direction="return">
          <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Real"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="LiteralSpecification" name="LiteralSpecification" isAbstract="true">
      <ownedComment xmi:type="uml:Comment" xmi:id="LiteralSpecification-_ownedComment.0" annotatedElement="LiteralSpecification">
        <body>A literal specification identifies a literal constant being modeled.</body>
      </ownedComment>
      <generalization xmi:type="uml:Generalization" xmi:id="LiteralSpecification-_generalization.0" general="ValueSpecification"/>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="LiteralString" name="LiteralString">
      <ownedComment xmi:type="uml:Comment" xmi:id="LiteralString-_ownedComment.0" annotatedElement="LiteralString">
        <body>A literal string is a specification of a string value.</body>
      </ownedComment>
      <generalization xmi:type="uml:Generalization" xmi:id="LiteralString-_generalization.0" general="LiteralSpecification"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="LiteralString-value" name="value" visibility="public">
        <ownedComment xmi:type="uml:Comment" xmi:id="LiteralString-value-_ownedComment.0" annotatedElement="LiteralString-value">
          <body>The specified String value.</body>
        </ownedComment>
        <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#String"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="LiteralString-value-_lowerValue"/>
      </ownedAttribute>
      <ownedOperation xmi:type="uml:Operation" xmi:id="LiteralString-isComputable" name="isComputable" visibility="public" isQuery="true" redefinedOperation="ValueSpecification-isComputable" bodyCondition="LiteralString-isComputable-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="LiteralString-isComputable-_ownedComment.0" annotatedElement="LiteralString-isComputable">
          <body>The query isComputable() is redefined to be true.</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="LiteralString-isComputable-spec" name="spec" constrainedElement="LiteralString-isComputable">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="LiteralString-isComputable-spec-_specification">
            <language>OCL</language>
            <body>result = true</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="LiteralString-isComputable-result" name="result" visibility="public" direction="return">
          <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:type="uml:Operation" xmi:id="LiteralString-stringValue" name="stringValue" visibility="public" isQuery="true" redefinedOperation="ValueSpecification-stringValue" bodyCondition="LiteralString-stringValue-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="LiteralString-stringValue-_ownedComment.0" annotatedElement="LiteralString-stringValue">
          <body>The query stringValue() gives the value.</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="LiteralString-stringValue-spec" name="spec" constrainedElement="LiteralString-stringValue">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="LiteralString-stringValue-spec-_specification">
            <language>OCL</language>
            <body>result = value</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="LiteralString-stringValue-result" name="result" visibility="public" direction="return">
          <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#String"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="LiteralUnlimitedNatural" name="LiteralUnlimitedNatural">
      <ownedComment xmi:type="uml:Comment" xmi:id="LiteralUnlimitedNatural-_ownedComment.0" annotatedElement="LiteralUnlimitedNatural">
        <body>A literal unlimited natural is a specification of an unlimited natural number.</body>
      </ownedComment>
      <generalization xmi:type="uml:Generalization" xmi:id="LiteralUnlimitedNatural-_generalization.0" general="LiteralSpecification"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="LiteralUnlimitedNatural-value" name="value" visibility="public">
        <ownedComment xmi:type="uml:Comment" xmi:id="LiteralUnlimitedNatural-value-_ownedComment.0" annotatedElement="LiteralUnlimitedNatural-value">
          <body>The specified UnlimitedNatural value.</body>
        </ownedComment>
        <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#UnlimitedNatural"/>
        <defaultValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="LiteralUnlimitedNatural-value-_defaultValue"/>
      </ownedAttribute>
      <ownedOperation xmi:type="uml:Operation" xmi:id="LiteralUnlimitedNatural-isComputable" name="isComputable" visibility="public" isQuery="true" redefinedOperation="ValueSpecification-isComputable" bodyCondition="LiteralUnlimitedNatural-isComputable-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="LiteralUnlimitedNatural-isComputable-_ownedComment.0" annotatedElement="LiteralUnlimitedNatural-isComputable">
          <body>The query isComputable() is redefined to be true.</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="LiteralUnlimitedNatural-isComputable-spec" name="spec" constrainedElement="LiteralUnlimitedNatural-isComputable">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="LiteralUnlimitedNatural-isComputable-spec-_specification">
            <language>OCL</language>
            <body>result = true</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="LiteralUnlimitedNatural-isComputable-result" name="result" visibility="public" direction="return">
          <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:type="uml:Operation" xmi:id="LiteralUnlimitedNatural-unlimitedValue" name="unlimitedValue" visibility="public" isQuery="true" redefinedOperation="ValueSpecification-unlimitedValue" bodyCondition="LiteralUnlimitedNatural-unlimitedValue-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="LiteralUnlimitedNatural-unlimitedValue-_ownedComment.0" annotatedElement="LiteralUnlimitedNatural-unlimitedValue">
          <body>The query unlimitedValue() gives the value.</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="LiteralUnlimitedNatural-unlimitedValue-spec" name="spec" constrainedElement="LiteralUnlimitedNatural-unlimitedValue">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="LiteralUnlimitedNatural-unlimitedValue-spec-_specification">
            <language>OCL</language>
            <body>result = value</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="LiteralUnlimitedNatural-unlimitedValue-result" name="result" visibility="public" direction="return">
          <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#UnlimitedNatural"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="Message" name="Message">
      <ownedComment xmi:type="uml:Comment" xmi:id="Message-_ownedComment.0" annotatedElement="Message">
        <body>A message defines a particular communication between lifelines of an interaction.</body>
      </ownedComment>
      <ownedRule xmi:type="uml:Constraint" xmi:id="Message-sending_receiving_message_event" name="sending_receiving_message_event" constrainedElement="Message">
        <ownedComment xmi:type="uml:Comment" xmi:id="Message-sending_receiving_message_event-_ownedComment.0" annotatedElement="Message-sending_receiving_message_event">
          <body>If the sendEvent and the receiveEvent of the same Message are on the same Lifeline, the sendEvent must be ordered before the receiveEvent.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="Message-sending_receiving_message_event-_specification">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:type="uml:Constraint" xmi:id="Message-signature_is_signal" name="signature_is_signal" constrainedElement="Message">
        <ownedComment xmi:type="uml:Comment" xmi:id="Message-signature_is_signal-_ownedComment.0" annotatedElement="Message-signature_is_signal">
          <body>In the case when the Message signature is a Signal, the arguments of the Message must correspond to the attributes of the Signal. A Message Argument corresponds to a Signal Attribute if the Arguement is of the same Class or a specialization of that of the Attribute.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="Message-signature_is_signal-_specification">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:type="uml:Constraint" xmi:id="Message-cannot_cross_boundaries" name="cannot_cross_boundaries" constrainedElement="Message">
        <ownedComment xmi:type="uml:Comment" xmi:id="Message-cannot_cross_boundaries-_ownedComment.0" annotatedElement="Message-cannot_cross_boundaries">
          <body>Messages cannot cross bounderies of CombinedFragments or their operands.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="Message-cannot_cross_boundaries-_specification">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:type="uml:Constraint" xmi:id="Message-arguments" name="arguments" constrainedElement="Message">
        <ownedComment xmi:type="uml:Comment" xmi:id="Message-arguments-_ownedComment.0" annotatedElement="Message-arguments">
          <body>Arguments of a Message must only be: i) attributes of the sending lifeline ii) constants iii) symbolic values (which are wildcard values representing any legal value) iv) explicit parameters of the enclosing Interaction v) attributes of the class owning the Interaction</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="Message-arguments-_specification">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:type="uml:Constraint" xmi:id="Message-signature_is_operation" name="signature_is_operation" constrainedElement="Message">
        <ownedComment xmi:type="uml:Comment" xmi:id="Message-signature_is_operation-_ownedComment.0" annotatedElement="Message-signature_is_operation">
          <body>In the case when the Message signature is an Operation, the arguments of the Message must correspond to the parameters of the Operation. A Parameter corresponds to an Argument if the Argument is of the same Class or a specialization of that of the Parameter.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="Message-signature_is_operation-_specification">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:type="uml:Constraint" xmi:id="Message-occurrence_specifications" name="occurrence_specifications" constrainedElement="Message">
        <ownedComment xmi:type="uml:Comment" xmi:id="Message-occurrence_specifications-_ownedComment.0" annotatedElement="Message-occurrence_specifications">
          <body>If the MessageEnds are both OccurrenceSpecifications then the connector must go between the Parts represented by the Lifelines of the two MessageEnds.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="Message-occurrence_specifications-_specification">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:type="uml:Constraint" xmi:id="Message-signature_refer_to" name="signature_refer_to" constrainedElement="Message">
        <ownedComment xmi:type="uml:Comment" xmi:id="Message-signature_refer_to-_ownedComment.0" annotatedElement="Message-signature_refer_to">
          <body>The signature must either refer an Operation (in which case messageSort is either synchCall or asynchCall) or a Signal (in which case messageSort is asynchSignal). The name of the NamedElement referenced by signature must be the same as that of the Message.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="Message-signature_refer_to-_specification">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <generalization xmi:type="uml:Generalization" xmi:id="Message-_generalization.0" general="NamedElement"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Message-argument" name="argument" visibility="public" type="ValueSpecification" isOrdered="true" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_argument_message">
        <ownedComment xmi:type="uml:Comment" xmi:id="Message-argument-_ownedComment.0" annotatedElement="Message-argument">
          <body>The arguments of the Message</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Message-argument-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Message-argument-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Message-connector" name="connector" visibility="public" type="Connector" association="A_connector_message">
        <ownedComment xmi:type="uml:Comment" xmi:id="Message-connector-_ownedComment.0" annotatedElement="Message-connector">
          <body>The Connector on which this Message is sent.</body>
        </ownedComment>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Message-connector-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Message-interaction" name="interaction" visibility="public" type="Interaction" subsettedProperty="NamedElement-namespace" association="A_message_interaction">
        <ownedComment xmi:type="uml:Comment" xmi:id="Message-interaction-_ownedComment.0" annotatedElement="Message-interaction">
          <body>The enclosing Interaction owning the Message</body>
        </ownedComment>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Message-messageKind" name="messageKind" visibility="public" type="MessageKind" isReadOnly="true" isDerived="true">
        <ownedComment xmi:type="uml:Comment" xmi:id="Message-messageKind-_ownedComment.0" annotatedElement="Message-messageKind">
          <body>The derived kind of the Message (complete, lost, found or unknown)</body>
        </ownedComment>
        <defaultValue xmi:type="uml:InstanceValue" xmi:id="Message-messageKind-_defaultValue" type="MessageKind" instance="MessageKind-unknown"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Message-messageSort" name="messageSort" visibility="public" type="MessageSort">
        <ownedComment xmi:type="uml:Comment" xmi:id="Message-messageSort-_ownedComment.0" annotatedElement="Message-messageSort">
          <body>The sort of communication reflected by the Message</body>
        </ownedComment>
        <defaultValue xmi:type="uml:InstanceValue" xmi:id="Message-messageSort-_defaultValue" type="MessageSort" instance="MessageSort-synchCall"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Message-receiveEvent" name="receiveEvent" visibility="public" type="MessageEnd" subsettedProperty="A_message_messageEnd-messageEnd" association="A_receiveEvent_endMessage">
        <ownedComment xmi:type="uml:Comment" xmi:id="Message-receiveEvent-_ownedComment.0" annotatedElement="Message-receiveEvent">
          <body>References the Receiving of the Message</body>
        </ownedComment>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Message-receiveEvent-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Message-sendEvent" name="sendEvent" visibility="public" type="MessageEnd" subsettedProperty="A_message_messageEnd-messageEnd" association="A_sendEvent_endMessage">
        <ownedComment xmi:type="uml:Comment" xmi:id="Message-sendEvent-_ownedComment.0" annotatedElement="Message-sendEvent">
          <body>References the Sending of the Message.</body>
        </ownedComment>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Message-sendEvent-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Message-signature" name="signature" visibility="public" type="NamedElement" association="A_signature_message">
        <ownedComment xmi:type="uml:Comment" xmi:id="Message-signature-_ownedComment.0" annotatedElement="Message-signature">
          <body>The signature of the Message is the specification of its content. It refers either an Operation or a Signal.</body>
        </ownedComment>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Message-signature-_lowerValue"/>
      </ownedAttribute>
      <ownedOperation xmi:type="uml:Operation" xmi:id="Message-messageKind.1" name="messageKind" visibility="public" isQuery="true" bodyCondition="Message-messageKind.1-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="Message-messageKind.1-_ownedComment.0" annotatedElement="Message-messageKind.1">
          <body>Missing derivation for Message::/messageKind : MessageKind</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="Message-messageKind.1-spec" name="spec" constrainedElement="Message-messageKind.1 Message-messageKind">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="Message-messageKind.1-spec-_specification">
            <language>OCL</language>
            <body>true</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="Message-messageKind.1-result" name="result" visibility="public" type="MessageKind" direction="return"/>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="MessageEnd" name="MessageEnd" isAbstract="true">
      <ownedComment xmi:type="uml:Comment" xmi:id="MessageEnd-_ownedComment.0" annotatedElement="MessageEnd">
        <body>MessageEnd is an abstract specialization of NamedElement that represents what can occur at the end of a message.</body>
      </ownedComment>
      <generalization xmi:type="uml:Generalization" xmi:id="MessageEnd-_generalization.0" general="NamedElement"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="MessageEnd-message" name="message" visibility="public" type="Message" association="A_message_messageEnd">
        <ownedComment xmi:type="uml:Comment" xmi:id="MessageEnd-message-_ownedComment.0" annotatedElement="MessageEnd-message">
          <body>References a Message.</body>
        </ownedComment>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="MessageEnd-message-_lowerValue"/>
      </ownedAttribute>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="MessageEvent" name="MessageEvent" isAbstract="true">
      <ownedComment xmi:type="uml:Comment" xmi:id="MessageEvent-_ownedComment.0" annotatedElement="MessageEvent">
        <body>A message event specifies the receipt by an object of either a call or a signal.</body>
      </ownedComment>
      <generalization xmi:type="uml:Generalization" xmi:id="MessageEvent-_generalization.0" general="Event"/>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="MessageOccurrenceSpecification" name="MessageOccurrenceSpecification">
      <ownedComment xmi:type="uml:Comment" xmi:id="MessageOccurrenceSpecification-_ownedComment.0" annotatedElement="MessageOccurrenceSpecification">
        <body>A message occurrence specification pecifies the occurrence of message events, such as sending and receiving of signals or invoking or receiving of operation calls. A message occurrence specification is a kind of message end. Messages are generated either by synchronous operation calls or asynchronous signal sends. They are received by the execution of corresponding accept event actions.</body>
      </ownedComment>
      <generalization xmi:type="uml:Generalization" xmi:id="MessageOccurrenceSpecification-_generalization.0" general="MessageEnd"/>
      <generalization xmi:type="uml:Generalization" xmi:id="MessageOccurrenceSpecification-_generalization.1" general="OccurrenceSpecification"/>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="MultiplicityElement" name="MultiplicityElement" isAbstract="true">
      <ownedComment xmi:type="uml:Comment" xmi:id="MultiplicityElement-_ownedComment.0" annotatedElement="MultiplicityElement">
        <body>A multiplicity is a definition of an inclusive interval of non-negative integers beginning with a lower bound and ending with a (possibly infinite) upper bound. A multiplicity element embeds this information to specify the allowable cardinalities for an instantiation of this element.</body>
      </ownedComment>
      <ownedRule xmi:type="uml:Constraint" xmi:id="MultiplicityElement-value_specification_constant" name="value_specification_constant" constrainedElement="MultiplicityElement">
        <ownedComment xmi:type="uml:Comment" xmi:id="MultiplicityElement-value_specification_constant-_ownedComment.0" annotatedElement="MultiplicityElement-value_specification_constant">
          <body>If a non-literal ValueSpecification is used for the lower or upper bound, then that specification must be a constant expression.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="MultiplicityElement-value_specification_constant-_specification">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:type="uml:Constraint" xmi:id="MultiplicityElement-value_specification_no_side_effects" name="value_specification_no_side_effects" constrainedElement="MultiplicityElement">
        <ownedComment xmi:type="uml:Comment" xmi:id="MultiplicityElement-value_specification_no_side_effects-_ownedComment.0" annotatedElement="MultiplicityElement-value_specification_no_side_effects">
          <body>If a non-literal ValueSpecification is used for the lower or upper bound, then evaluating that specification must not have side effects.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="MultiplicityElement-value_specification_no_side_effects-_specification">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:type="uml:Constraint" xmi:id="MultiplicityElement-upper_ge_lower" name="upper_ge_lower" constrainedElement="MultiplicityElement">
        <ownedComment xmi:type="uml:Comment" xmi:id="MultiplicityElement-upper_ge_lower-_ownedComment.0" annotatedElement="MultiplicityElement-upper_ge_lower">
          <body>The upper bound must be greater than or equal to the lower bound.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="MultiplicityElement-upper_ge_lower-_specification">
          <language>OCL</language>
          <body>(upperBound()-&gt;notEmpty() and lowerBound()-&gt;notEmpty()) implies upperBound() &gt;= lowerBound()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:type="uml:Constraint" xmi:id="MultiplicityElement-lower_ge_0" name="lower_ge_0" constrainedElement="MultiplicityElement">
        <ownedComment xmi:type="uml:Comment" xmi:id="MultiplicityElement-lower_ge_0-_ownedComment.0" annotatedElement="MultiplicityElement-lower_ge_0">
          <body>The lower bound must be a non-negative integer literal.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="MultiplicityElement-lower_ge_0-_specification">
          <language>OCL</language>
          <body>lowerBound()-&gt;notEmpty() implies lowerBound() &gt;= 0</body>
        </specification>
      </ownedRule>
      <generalization xmi:type="uml:Generalization" xmi:id="MultiplicityElement-_generalization.0" general="Element"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="MultiplicityElement-isOrdered" name="isOrdered" visibility="public">
        <ownedComment xmi:type="uml:Comment" xmi:id="MultiplicityElement-isOrdered-_ownedComment.0" annotatedElement="MultiplicityElement-isOrdered">
          <body>For a multivalued multiplicity, this attribute specifies whether the values in an instantiation of this element are sequentially ordered.</body>
        </ownedComment>
        <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="MultiplicityElement-isOrdered-_defaultValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="MultiplicityElement-isUnique" name="isUnique" visibility="public">
        <ownedComment xmi:type="uml:Comment" xmi:id="MultiplicityElement-isUnique-_ownedComment.0" annotatedElement="MultiplicityElement-isUnique">
          <body>For a multivalued multiplicity, this attributes specifies whether the values in an instantiation of this element are unique.</body>
        </ownedComment>
        <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="MultiplicityElement-isUnique-_defaultValue" value="true"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="MultiplicityElement-lower" name="lower" visibility="public" isDerived="true">
        <ownedComment xmi:type="uml:Comment" xmi:id="MultiplicityElement-lower-_ownedComment.0" annotatedElement="MultiplicityElement-lower">
          <body>Specifies the lower bound of the multiplicity interval.</body>
        </ownedComment>
        <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Integer"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="MultiplicityElement-lower-_lowerValue"/>
        <defaultValue xmi:type="uml:LiteralInteger" xmi:id="MultiplicityElement-lower-_defaultValue" value="1"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="MultiplicityElement-lowerValue" name="lowerValue" visibility="public" type="ValueSpecification" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_lowerValue_owningLower">
        <ownedComment xmi:type="uml:Comment" xmi:id="MultiplicityElement-lowerValue-_ownedComment.0" annotatedElement="MultiplicityElement-lowerValue">
          <body>The specification of the lower bound for this multiplicity.</body>
        </ownedComment>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="MultiplicityElement-lowerValue-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="MultiplicityElement-upper" name="upper" visibility="public" isDerived="true">
        <ownedComment xmi:type="uml:Comment" xmi:id="MultiplicityElement-upper-_ownedComment.0" annotatedElement="MultiplicityElement-upper">
          <body>Specifies the upper bound of the multiplicity interval.</body>
        </ownedComment>
        <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#UnlimitedNatural"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="MultiplicityElement-upper-_lowerValue"/>
        <defaultValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="MultiplicityElement-upper-_defaultValue" value="1"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="MultiplicityElement-upperValue" name="upperValue" visibility="public" type="ValueSpecification" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_upperValue_owningUpper">
        <ownedComment xmi:type="uml:Comment" xmi:id="MultiplicityElement-upperValue-_ownedComment.0" annotatedElement="MultiplicityElement-upperValue">
          <body>The specification of the upper bound for this multiplicity.</body>
        </ownedComment>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="MultiplicityElement-upperValue-_lowerValue"/>
      </ownedAttribute>
      <ownedOperation xmi:type="uml:Operation" xmi:id="MultiplicityElement-compatibleWith" name="compatibleWith" visibility="public" isQuery="true" bodyCondition="MultiplicityElement-compatibleWith-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="MultiplicityElement-compatibleWith-_ownedComment.0" annotatedElement="MultiplicityElement-compatibleWith">
          <body>The operation compatibleWith takes another multiplicity as input. It checks if one multiplicity is compatible with another.</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="MultiplicityElement-compatibleWith-spec" name="spec" constrainedElement="MultiplicityElement-compatibleWith">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="MultiplicityElement-compatibleWith-spec-_specification">
            <language>OCL</language>
            <body>result = Integer.allInstances()-&gt;forAll(i : Integer | self.includesCardinality(i) implies other.includesCardinality(i))</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="MultiplicityElement-compatibleWith-result" name="result" visibility="public" direction="return">
          <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
        </ownedParameter>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="MultiplicityElement-compatibleWith-other" name="other" visibility="public" type="MultiplicityElement"/>
      </ownedOperation>
      <ownedOperation xmi:type="uml:Operation" xmi:id="MultiplicityElement-includesCardinality" name="includesCardinality" visibility="public" isQuery="true" precondition="MultiplicityElement-includesCardinality-pre" bodyCondition="MultiplicityElement-includesCardinality-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="MultiplicityElement-includesCardinality-_ownedComment.0" annotatedElement="MultiplicityElement-includesCardinality">
          <body>The query includesCardinality() checks whether the specified cardinality is valid for this multiplicity.</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="MultiplicityElement-includesCardinality-pre" name="pre" constrainedElement="MultiplicityElement-includesCardinality">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="MultiplicityElement-includesCardinality-pre-_specification">
            <language>OCL</language>
            <body>upperBound()-&gt;notEmpty() and lowerBound()-&gt;notEmpty()</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:type="uml:Constraint" xmi:id="MultiplicityElement-includesCardinality-spec" name="spec" constrainedElement="MultiplicityElement-includesCardinality">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="MultiplicityElement-includesCardinality-spec-_specification">
            <language>OCL</language>
            <body>result = (lowerBound() &lt;= C) and (upperBound() &gt;= C)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="MultiplicityElement-includesCardinality-result" name="result" visibility="public" direction="return">
          <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
        </ownedParameter>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="MultiplicityElement-includesCardinality-C" name="C" visibility="public">
          <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Integer"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:type="uml:Operation" xmi:id="MultiplicityElement-includesMultiplicity" name="includesMultiplicity" visibility="public" isQuery="true" precondition="MultiplicityElement-includesMultiplicity-pre" bodyCondition="MultiplicityElement-includesMultiplicity-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="MultiplicityElement-includesMultiplicity-_ownedComment.0" annotatedElement="MultiplicityElement-includesMultiplicity">
          <body>The query includesMultiplicity() checks whether this multiplicity includes all the cardinalities allowed by the specified multiplicity.</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="MultiplicityElement-includesMultiplicity-pre" name="pre" constrainedElement="MultiplicityElement-includesMultiplicity">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="MultiplicityElement-includesMultiplicity-pre-_specification">
            <language>OCL</language>
            <body>self.upperBound()-&gt;notEmpty() and self.lowerBound()-&gt;notEmpty() and M.upperBound()-&gt;notEmpty() and M.lowerBound()-&gt;notEmpty()</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:type="uml:Constraint" xmi:id="MultiplicityElement-includesMultiplicity-spec" name="spec" constrainedElement="MultiplicityElement-includesMultiplicity">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="MultiplicityElement-includesMultiplicity-spec-_specification">
            <language>OCL</language>
            <body>result = (self.lowerBound() &lt;= M.lowerBound()) and (self.upperBound() &gt;= M.upperBound())</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="MultiplicityElement-includesMultiplicity-result" name="result" visibility="public" direction="return">
          <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
        </ownedParameter>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="MultiplicityElement-includesMultiplicity-M" name="M" visibility="public" type="MultiplicityElement"/>
      </ownedOperation>
      <ownedOperation xmi:type="uml:Operation" xmi:id="MultiplicityElement-is" name="is" visibility="public" isQuery="true" bodyCondition="MultiplicityElement-is-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="MultiplicityElement-is-_ownedComment.0" annotatedElement="MultiplicityElement-is">
          <body>The operation is determines if the upper and lower bound of the ranges are the ones given.</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="MultiplicityElement-is-spec" name="spec" constrainedElement="MultiplicityElement-is">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="MultiplicityElement-is-spec-_specification">
            <language>OCL</language>
            <body>result = (lowerbound = self.lowerbound and upperbound = self.upperbound)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="MultiplicityElement-is-result" name="result" visibility="public" direction="return">
          <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
        </ownedParameter>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="MultiplicityElement-is-lowerbound" name="lowerbound" visibility="public">
          <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Integer"/>
        </ownedParameter>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="MultiplicityElement-is-upperbound" name="upperbound" visibility="public">
          <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Integer"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:type="uml:Operation" xmi:id="MultiplicityElement-isMultivalued" name="isMultivalued" visibility="public" isQuery="true" precondition="MultiplicityElement-isMultivalued-pre" bodyCondition="MultiplicityElement-isMultivalued-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="MultiplicityElement-isMultivalued-_ownedComment.0" annotatedElement="MultiplicityElement-isMultivalued">
          <body>The query isMultivalued() checks whether this multiplicity has an upper bound greater than one.</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="MultiplicityElement-isMultivalued-pre" name="pre" constrainedElement="MultiplicityElement-isMultivalued">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="MultiplicityElement-isMultivalued-pre-_specification">
            <language>OCL</language>
            <body>upperBound()-&gt;notEmpty()</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:type="uml:Constraint" xmi:id="MultiplicityElement-isMultivalued-spec" name="spec" constrainedElement="MultiplicityElement-isMultivalued">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="MultiplicityElement-isMultivalued-spec-_specification">
            <language>OCL</language>
            <body>result = upperBound() &gt; 1</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="MultiplicityElement-isMultivalued-result" name="result" visibility="public" direction="return">
          <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:type="uml:Operation" xmi:id="MultiplicityElement-lower.1" name="lower" visibility="public" isQuery="true" bodyCondition="MultiplicityElement-lower.1-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="MultiplicityElement-lower.1-_ownedComment.0" annotatedElement="MultiplicityElement-lower.1">
          <body>The derived lower attribute must equal the lowerBound.</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="MultiplicityElement-lower.1-spec" name="spec" constrainedElement="MultiplicityElement-lower.1 MultiplicityElement-lower">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="MultiplicityElement-lower.1-spec-_specification">
            <language>OCL</language>
            <body>result = lowerBound()</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="MultiplicityElement-lower.1-result" name="result" visibility="public" direction="return">
          <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Integer"/>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="MultiplicityElement-lower.1-result-_lowerValue"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:type="uml:Operation" xmi:id="MultiplicityElement-lowerBound" name="lowerBound" visibility="public" isQuery="true" bodyCondition="MultiplicityElement-lowerBound-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="MultiplicityElement-lowerBound-_ownedComment.0" annotatedElement="MultiplicityElement-lowerBound">
          <body>The query lowerBound() returns the lower bound of the multiplicity as an integer.</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="MultiplicityElement-lowerBound-spec" name="spec" constrainedElement="MultiplicityElement-lowerBound">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="MultiplicityElement-lowerBound-spec-_specification">
            <language>OCL</language>
            <body>result = if lowerValue-&gt;isEmpty() then 1 else lowerValue.integerValue() endif</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="MultiplicityElement-lowerBound-result" name="result" visibility="public" direction="return">
          <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Integer"/>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="MultiplicityElement-lowerBound-result-_lowerValue"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:type="uml:Operation" xmi:id="MultiplicityElement-upper.1" name="upper" visibility="public" isQuery="true" bodyCondition="MultiplicityElement-upper.1-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="MultiplicityElement-upper.1-_ownedComment.0" annotatedElement="MultiplicityElement-upper.1">
          <body>The derived upper attribute must equal the upperBound.</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="MultiplicityElement-upper.1-spec" name="spec" constrainedElement="MultiplicityElement-upper.1 MultiplicityElement-upper">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="MultiplicityElement-upper.1-spec-_specification">
            <language>OCL</language>
            <body>result = upperBound()</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="MultiplicityElement-upper.1-result" name="result" visibility="public" direction="return">
          <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#UnlimitedNatural"/>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="MultiplicityElement-upper.1-result-_lowerValue"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:type="uml:Operation" xmi:id="MultiplicityElement-upperBound" name="upperBound" visibility="public" isQuery="true" bodyCondition="MultiplicityElement-upperBound-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="MultiplicityElement-upperBound-_ownedComment.0" annotatedElement="MultiplicityElement-upperBound">
          <body>The query upperBound() returns the upper bound of the multiplicity for a bounded multiplicity as an unlimited natural.</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="MultiplicityElement-upperBound-spec" name="spec" constrainedElement="MultiplicityElement-upperBound">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="MultiplicityElement-upperBound-spec-_specification">
            <language>OCL</language>
            <body>result = if upperValue-&gt;isEmpty() then 1 else upperValue.unlimitedValue() endif</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="MultiplicityElement-upperBound-result" name="result" visibility="public" direction="return">
          <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#UnlimitedNatural"/>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="MultiplicityElement-upperBound-result-_lowerValue"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="NamedElement" name="NamedElement" isAbstract="true">
      <ownedComment xmi:type="uml:Comment" xmi:id="NamedElement-_ownedComment.0" annotatedElement="NamedElement">
        <body>A named element is an element in a model that may have a name.</body>
      </ownedComment>
      <ownedRule xmi:type="uml:Constraint" xmi:id="NamedElement-visibility_needs_ownership" name="visibility_needs_ownership" constrainedElement="NamedElement">
        <ownedComment xmi:type="uml:Comment" xmi:id="NamedElement-visibility_needs_ownership-_ownedComment.0" annotatedElement="NamedElement-visibility_needs_ownership">
          <body>If a NamedElement is not owned by a Namespace, it does not have a visibility.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="NamedElement-visibility_needs_ownership-_specification">
          <language>OCL</language>
          <body>namespace-&gt;isEmpty() implies visibility-&gt;isEmpty()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:type="uml:Constraint" xmi:id="NamedElement-has_qualified_name" name="has_qualified_name" constrainedElement="NamedElement">
        <ownedComment xmi:type="uml:Comment" xmi:id="NamedElement-has_qualified_name-_ownedComment.0" annotatedElement="NamedElement-has_qualified_name">
          <body>When there is a name, and all of the containing namespaces have a name, the qualified name is constructed from the names of the containing namespaces.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="NamedElement-has_qualified_name-_specification">
          <language>OCL</language>
          <body>(self.name-&gt;notEmpty() and self.allNamespaces()-&gt;select(ns | ns.name-&gt;isEmpty())-&gt;isEmpty()) implies
  self.qualifiedName = self.allNamespaces()-&gt;iterate( ns : Namespace; result: String = self.name | ns.name-&gt;union(self.separator())-&gt;union(result))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:type="uml:Constraint" xmi:id="NamedElement-has_no_qualified_name" name="has_no_qualified_name" constrainedElement="NamedElement">
        <ownedComment xmi:type="uml:Comment" xmi:id="NamedElement-has_no_qualified_name-_ownedComment.0" annotatedElement="NamedElement-has_no_qualified_name">
          <body>If there is no name, or one of the containing namespaces has no name, there is no qualified name.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="NamedElement-has_no_qualified_name-_specification">
          <language>OCL</language>
          <body>(self.name-&gt;isEmpty() or self.allNamespaces()-&gt;select(ns | ns.name-&gt;isEmpty())-&gt;notEmpty())
  implies self.qualifiedName-&gt;isEmpty()</body>
        </specification>
      </ownedRule>
      <generalization xmi:type="uml:Generalization" xmi:id="NamedElement-_generalization.0" general="Element"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="NamedElement-clientDependency" name="clientDependency" visibility="public" type="Dependency" subsettedProperty="A_source_directedRelationship-directedRelationship" association="A_clientDependency_client">
        <ownedComment xmi:type="uml:Comment" xmi:id="NamedElement-clientDependency-_ownedComment.0" annotatedElement="NamedElement-clientDependency">
          <body>Indicates the dependencies that reference the client.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="NamedElement-clientDependency-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="NamedElement-clientDependency-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="NamedElement-name" name="name" visibility="public">
        <ownedComment xmi:type="uml:Comment" xmi:id="NamedElement-name-_ownedComment.0" annotatedElement="NamedElement-name">
          <body>The name of the NamedElement.</body>
        </ownedComment>
        <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#String"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="NamedElement-name-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="NamedElement-namespace" name="namespace" visibility="public" type="Namespace" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="Element-owner A_member_memberNamespace-memberNamespace" association="A_ownedMember_namespace">
        <ownedComment xmi:type="uml:Comment" xmi:id="NamedElement-namespace-_ownedComment.0" annotatedElement="NamedElement-namespace">
          <body>Specifies the namespace that owns the NamedElement.</body>
        </ownedComment>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="NamedElement-namespace-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="NamedElement-qualifiedName" name="qualifiedName" visibility="public" isReadOnly="true" isDerived="true">
        <ownedComment xmi:type="uml:Comment" xmi:id="NamedElement-qualifiedName-_ownedComment.0" annotatedElement="NamedElement-qualifiedName">
          <body>A name which allows the NamedElement to be identified within a hierarchy of nested Namespaces. It is constructed from the names of the containing namespaces starting at the root of the hierarchy and ending with the name of the NamedElement itself.</body>
        </ownedComment>
        <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#String"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="NamedElement-qualifiedName-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="NamedElement-visibility" name="visibility" visibility="public" type="VisibilityKind">
        <ownedComment xmi:type="uml:Comment" xmi:id="NamedElement-visibility-_ownedComment.0" annotatedElement="NamedElement-visibility">
          <body>Determines where the NamedElement appears within different Namespaces within the overall model, and its accessibility.</body>
        </ownedComment>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="NamedElement-visibility-_lowerValue"/>
      </ownedAttribute>
      <ownedOperation xmi:type="uml:Operation" xmi:id="NamedElement-allNamespaces" name="allNamespaces" visibility="public" isQuery="true" bodyCondition="NamedElement-allNamespaces-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="NamedElement-allNamespaces-_ownedComment.0" annotatedElement="NamedElement-allNamespaces">
          <body>The query allNamespaces() gives the sequence of namespaces in which the NamedElement is nested, working outwards.</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="NamedElement-allNamespaces-spec" name="spec" constrainedElement="NamedElement-allNamespaces">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="NamedElement-allNamespaces-spec-_specification">
            <language>OCL</language>
            <body>result = if self.namespace-&gt;isEmpty()
then Sequence{}
else self.namespace.allNamespaces()-&gt;prepend(self.namespace)
endif</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="NamedElement-allNamespaces-result" name="result" visibility="public" type="Namespace" isOrdered="true" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="NamedElement-allNamespaces-result-_upperValue" value="*"/>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="NamedElement-allNamespaces-result-_lowerValue"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:type="uml:Operation" xmi:id="NamedElement-isDistinguishableFrom" name="isDistinguishableFrom" visibility="public" isQuery="true" bodyCondition="NamedElement-isDistinguishableFrom-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="NamedElement-isDistinguishableFrom-_ownedComment.0" annotatedElement="NamedElement-isDistinguishableFrom">
          <body>The query isDistinguishableFrom() determines whether two NamedElements may logically co-exist within a Namespace. By default, two named elements are distinguishable if (a) they have unrelated types or (b) they have related types but different names.</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="NamedElement-isDistinguishableFrom-spec" name="spec" constrainedElement="NamedElement-isDistinguishableFrom">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="NamedElement-isDistinguishableFrom-spec-_specification">
            <language>OCL</language>
            <body>result = if self.oclIsKindOf(n.oclType) or n.oclIsKindOf(self.oclType)
then ns.getNamesOfMember(self)-&gt;intersection(ns.getNamesOfMember(n))-&gt;isEmpty()
else true
endif</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="NamedElement-isDistinguishableFrom-result" name="result" visibility="public" direction="return">
          <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
        </ownedParameter>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="NamedElement-isDistinguishableFrom-n" name="n" visibility="public" type="NamedElement"/>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="NamedElement-isDistinguishableFrom-ns" name="ns" visibility="public" type="Namespace"/>
      </ownedOperation>
      <ownedOperation xmi:type="uml:Operation" xmi:id="NamedElement-namespace.1" name="namespace" visibility="public" isQuery="true" bodyCondition="NamedElement-namespace.1-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="NamedElement-namespace.1-_ownedComment.0" annotatedElement="NamedElement-namespace.1">
          <body>Missing derivation for NamedElement::/namespace : Namespace</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="NamedElement-namespace.1-spec" name="spec" constrainedElement="NamedElement-namespace.1 NamedElement-namespace">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="NamedElement-namespace.1-spec-_specification">
            <language>OCL</language>
            <body>true</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="NamedElement-namespace.1-result" name="result" visibility="public" type="Namespace" direction="return">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="NamedElement-namespace.1-result-_lowerValue"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:type="uml:Operation" xmi:id="NamedElement-qualifiedName.1" name="qualifiedName" visibility="public" isQuery="true" bodyCondition="NamedElement-qualifiedName.1-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="NamedElement-qualifiedName.1-_ownedComment.0" annotatedElement="NamedElement-qualifiedName.1">
          <body>When there is a name, and all of the containing namespaces have a name, the qualified name is constructed from the names of the containing namespaces.</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="NamedElement-qualifiedName.1-spec" name="spec" constrainedElement="NamedElement-qualifiedName.1 NamedElement-qualifiedName">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="NamedElement-qualifiedName.1-spec-_specification">
            <language>OCL</language>
            <body>result = if self.name-&gt;notEmpty() and self.allNamespaces()-&gt;select(ns | ns.name-&gt;isEmpty())-&gt;isEmpty()
then 
    self.allNamespaces()-&gt;iterate( ns : Namespace; result: String = self.name | ns.name-&gt;union(self.separator())-&gt;union(result))
else
    Set{}
endif</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="NamedElement-qualifiedName.1-result" name="result" visibility="public" direction="return">
          <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#String"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:type="uml:Operation" xmi:id="NamedElement-separator" name="separator" visibility="public" isQuery="true" bodyCondition="NamedElement-separator-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="NamedElement-separator-_ownedComment.0" annotatedElement="NamedElement-separator">
          <body>The query separator() gives the string that is used to separate names when constructing a qualified name.</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="NamedElement-separator-spec" name="spec" constrainedElement="NamedElement-separator">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="NamedElement-separator-spec-_specification">
            <language>OCL</language>
            <body>result = '::'</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="NamedElement-separator-result" name="result" visibility="public" direction="return">
          <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#String"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="Namespace" name="Namespace" isAbstract="true">
      <ownedComment xmi:type="uml:Comment" xmi:id="Namespace-_ownedComment.0" annotatedElement="Namespace">
        <body>A namespace is an element in a model that contains a set of named elements that can be identified by name.</body>
      </ownedComment>
      <ownedRule xmi:type="uml:Constraint" xmi:id="Namespace-members_distinguishable" name="members_distinguishable" constrainedElement="Namespace">
        <ownedComment xmi:type="uml:Comment" xmi:id="Namespace-members_distinguishable-_ownedComment.0" annotatedElement="Namespace-members_distinguishable">
          <body>All the members of a Namespace are distinguishable within it.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="Namespace-members_distinguishable-_specification">
          <language>OCL</language>
          <body>membersAreDistinguishable()</body>
        </specification>
      </ownedRule>
      <generalization xmi:type="uml:Generalization" xmi:id="Namespace-_generalization.0" general="NamedElement"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Namespace-elementImport" name="elementImport" visibility="public" type="ElementImport" aggregation="composite" subsettedProperty="Element-ownedElement A_source_directedRelationship-directedRelationship" association="A_elementImport_importingNamespace">
        <ownedComment xmi:type="uml:Comment" xmi:id="Namespace-elementImport-_ownedComment.0" annotatedElement="Namespace-elementImport">
          <body>References the ElementImports owned by the Namespace.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Namespace-elementImport-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Namespace-elementImport-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Namespace-importedMember" name="importedMember" visibility="public" type="PackageableElement" isReadOnly="true" isDerived="true" subsettedProperty="Namespace-member" association="A_importedMember_namespace">
        <ownedComment xmi:type="uml:Comment" xmi:id="Namespace-importedMember-_ownedComment.0" annotatedElement="Namespace-importedMember">
          <body>References the PackageableElements that are members of this Namespace as a result of either PackageImports or ElementImports.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Namespace-importedMember-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Namespace-importedMember-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Namespace-member" name="member" visibility="public" type="NamedElement" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="A_member_memberNamespace">
        <ownedComment xmi:type="uml:Comment" xmi:id="Namespace-member-_ownedComment.0" annotatedElement="Namespace-member">
          <body>A collection of NamedElements identifiable within the Namespace, either by being owned or by being introduced by importing or inheritance.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Namespace-member-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Namespace-member-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Namespace-ownedMember" name="ownedMember" visibility="public" type="NamedElement" isReadOnly="true" isDerived="true" isDerivedUnion="true" aggregation="composite" subsettedProperty="Element-ownedElement Namespace-member" association="A_ownedMember_namespace">
        <ownedComment xmi:type="uml:Comment" xmi:id="Namespace-ownedMember-_ownedComment.0" annotatedElement="Namespace-ownedMember">
          <body>A collection of NamedElements owned by the Namespace.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Namespace-ownedMember-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Namespace-ownedMember-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Namespace-ownedRule" name="ownedRule" visibility="public" type="Constraint" aggregation="composite" subsettedProperty="Namespace-ownedMember" association="A_ownedRule_context">
        <ownedComment xmi:type="uml:Comment" xmi:id="Namespace-ownedRule-_ownedComment.0" annotatedElement="Namespace-ownedRule">
          <body>Specifies a set of Constraints owned by this Namespace.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Namespace-ownedRule-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Namespace-ownedRule-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Namespace-packageImport" name="packageImport" visibility="public" type="PackageImport" aggregation="composite" subsettedProperty="Element-ownedElement A_source_directedRelationship-directedRelationship" association="A_packageImport_importingNamespace">
        <ownedComment xmi:type="uml:Comment" xmi:id="Namespace-packageImport-_ownedComment.0" annotatedElement="Namespace-packageImport">
          <body>References the PackageImports owned by the Namespace.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Namespace-packageImport-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Namespace-packageImport-_lowerValue"/>
      </ownedAttribute>
      <ownedOperation xmi:type="uml:Operation" xmi:id="Namespace-excludeCollisions" name="excludeCollisions" visibility="public" isQuery="true" bodyCondition="Namespace-excludeCollisions-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="Namespace-excludeCollisions-_ownedComment.0" annotatedElement="Namespace-excludeCollisions">
          <body>The query excludeCollisions() excludes from a set of PackageableElements any that would not be distinguishable from each other in this namespace.</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="Namespace-excludeCollisions-spec" name="spec" constrainedElement="Namespace-excludeCollisions">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="Namespace-excludeCollisions-spec-_specification">
            <language>OCL</language>
            <body>result = imps-&gt;reject(imp1 | imps.exists(imp2 | not imp1.isDistinguishableFrom(imp2, self)))</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="Namespace-excludeCollisions-result" name="result" visibility="public" type="PackageableElement" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Namespace-excludeCollisions-result-_upperValue" value="*"/>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Namespace-excludeCollisions-result-_lowerValue"/>
        </ownedParameter>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="Namespace-excludeCollisions-imps" name="imps" visibility="public" type="PackageableElement">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Namespace-excludeCollisions-imps-_upperValue" value="*"/>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Namespace-excludeCollisions-imps-_lowerValue"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:type="uml:Operation" xmi:id="Namespace-getNamesOfMember" name="getNamesOfMember" visibility="public" isQuery="true" bodyCondition="Namespace-getNamesOfMember-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="Namespace-getNamesOfMember-_ownedComment.0" annotatedElement="Namespace-getNamesOfMember">
          <body>The query getNamesOfMember() gives a set of all of the names that a member would have in a Namespace. In general a member can have multiple names in a Namespace if it is imported more than once with different aliases. The query takes account of importing. It gives back the set of names that an element would have in an importing namespace, either because it is owned, or if not owned then imported individually, or if not individually then from a package.</body>
        </ownedComment>
        <ownedComment xmi:type="uml:Comment" xmi:id="Namespace-getNamesOfMember-_ownedComment.1" annotatedElement="Namespace-getNamesOfMember">
          <body>The query getNamesOfMember() takes importing into account. It gives back the set of names that an element would have in an importing namespace, either because it is owned, or if not owned then imported individually, or if not individually then from a package.</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="Namespace-getNamesOfMember-spec" name="spec" constrainedElement="Namespace-getNamesOfMember">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="Namespace-getNamesOfMember-spec-_specification">
            <language>OCL</language>
            <body>result = if self.ownedMember -&gt;includes(element)
then Set{}-&gt;include(element.name)
else let elementImports: ElementImport = self.elementImport-&gt;select(ei | ei.importedElement = element) in
  if elementImports-&gt;notEmpty()
  then elementImports-&gt;collect(el | el.getName())
  else self.packageImport-&gt;select(pi | pi.importedPackage.visibleMembers()-&gt;includes(element))-&gt; collect(pi | pi.importedPackage.getNamesOfMember(element))
  endif
endif</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="Namespace-getNamesOfMember-result" name="result" visibility="public" direction="return">
          <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#String"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Namespace-getNamesOfMember-result-_upperValue" value="*"/>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Namespace-getNamesOfMember-result-_lowerValue"/>
        </ownedParameter>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="Namespace-getNamesOfMember-element" name="element" visibility="public" type="NamedElement"/>
      </ownedOperation>
      <ownedOperation xmi:type="uml:Operation" xmi:id="Namespace-importMembers" name="importMembers" visibility="public" isQuery="true" bodyCondition="Namespace-importMembers-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="Namespace-importMembers-_ownedComment.0" annotatedElement="Namespace-importMembers">
          <body>The query importMembers() defines which of a set of PackageableElements are actually imported into the namespace. This excludes hidden ones, i.e., those which have names that conflict with names of owned members, and also excludes elements which would have the same name when imported.</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="Namespace-importMembers-spec" name="spec" constrainedElement="Namespace-importMembers">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="Namespace-importMembers-spec-_specification">
            <language>OCL</language>
            <body>result = self.excludeCollisions(imps)-&gt;select(imp | self.ownedMember-&gt;forAll(mem |
mem.imp.isDistinguishableFrom(mem, self)))</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="Namespace-importMembers-result" name="result" visibility="public" type="PackageableElement" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Namespace-importMembers-result-_upperValue" value="*"/>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Namespace-importMembers-result-_lowerValue"/>
        </ownedParameter>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="Namespace-importMembers-imps" name="imps" visibility="public" type="PackageableElement">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Namespace-importMembers-imps-_upperValue" value="*"/>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Namespace-importMembers-imps-_lowerValue"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:type="uml:Operation" xmi:id="Namespace-importedMember.1" name="importedMember" visibility="public" isQuery="true" bodyCondition="Namespace-importedMember.1-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="Namespace-importedMember.1-_ownedComment.0" annotatedElement="Namespace-importedMember.1">
          <body>The importedMember property is derived from the ElementImports and the PackageImports. References the PackageableElements that are members of this Namespace as a result of either PackageImports or ElementImports.</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="Namespace-importedMember.1-spec" name="spec" constrainedElement="Namespace-importedMember.1 Namespace-importedMember">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="Namespace-importedMember.1-spec-_specification">
            <language>OCL</language>
            <body>result = self.importMembers(self.elementImport.importedElement.asSet()-
&gt;union(self.packageImport.importedPackage-&gt;collect(p | p.visibleMembers())))</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="Namespace-importedMember.1-result" name="result" visibility="public" type="PackageableElement" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Namespace-importedMember.1-result-_upperValue" value="*"/>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Namespace-importedMember.1-result-_lowerValue"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:type="uml:Operation" xmi:id="Namespace-membersAreDistinguishable" name="membersAreDistinguishable" visibility="public" isQuery="true" bodyCondition="Namespace-membersAreDistinguishable-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="Namespace-membersAreDistinguishable-_ownedComment.0" annotatedElement="Namespace-membersAreDistinguishable">
          <body>The Boolean query membersAreDistinguishable() determines whether all of the namespace's members are distinguishable within it.</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="Namespace-membersAreDistinguishable-spec" name="spec" constrainedElement="Namespace-membersAreDistinguishable">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="Namespace-membersAreDistinguishable-spec-_specification">
            <language>OCL</language>
            <body>result = self.member-&gt;forAll( memb |
self.member-&gt;excluding(memb)-&gt;forAll(other |
memb.isDistinguishableFrom(other, self)))</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="Namespace-membersAreDistinguishable-result" name="result" visibility="public" direction="return">
          <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:type="uml:Operation" xmi:id="Namespace-ownedMember.1" name="ownedMember" visibility="public" isQuery="true" bodyCondition="Namespace-ownedMember.1-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="Namespace-ownedMember.1-_ownedComment.0" annotatedElement="Namespace-ownedMember.1">
          <body>Missing derivation for Namespace::/ownedMember : NamedElement</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="Namespace-ownedMember.1-spec" name="spec" constrainedElement="Namespace-ownedMember.1 Namespace-ownedMember">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="Namespace-ownedMember.1-spec-_specification">
            <language>OCL</language>
            <body>true</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="Namespace-ownedMember.1-result" name="result" visibility="public" type="NamedElement" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Namespace-ownedMember.1-result-_upperValue" value="*"/>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Namespace-ownedMember.1-result-_lowerValue"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="ObjectFlow" name="ObjectFlow">
      <ownedComment xmi:type="uml:Comment" xmi:id="ObjectFlow-_ownedComment.0" annotatedElement="ObjectFlow">
        <body>An object flow is an activity edge that can have objects or data passing along it.</body>
      </ownedComment>
      <ownedRule xmi:type="uml:Constraint" xmi:id="ObjectFlow-same_upper_bounds" name="same_upper_bounds" constrainedElement="ObjectFlow">
        <ownedComment xmi:type="uml:Comment" xmi:id="ObjectFlow-same_upper_bounds-_ownedComment.0" annotatedElement="ObjectFlow-same_upper_bounds">
          <body>Object nodes connected by an object flow, with optionally intervening control nodes, must have the same upper bounds.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="ObjectFlow-same_upper_bounds-_specification">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:type="uml:Constraint" xmi:id="ObjectFlow-compatible_types" name="compatible_types" constrainedElement="ObjectFlow">
        <ownedComment xmi:type="uml:Comment" xmi:id="ObjectFlow-compatible_types-_ownedComment.0" annotatedElement="ObjectFlow-compatible_types">
          <body>Object nodes connected by an object flow, with optionally intervening control nodes, must have compatible types. In particular, the downstream object node type must be the same or a supertype of the upstream object node type.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="ObjectFlow-compatible_types-_specification">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:type="uml:Constraint" xmi:id="ObjectFlow-no_actions" name="no_actions" constrainedElement="ObjectFlow">
        <ownedComment xmi:type="uml:Comment" xmi:id="ObjectFlow-no_actions-_ownedComment.0" annotatedElement="ObjectFlow-no_actions">
          <body>Object flows may not have actions at either end.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="ObjectFlow-no_actions-_specification">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <generalization xmi:type="uml:Generalization" xmi:id="ObjectFlow-_generalization.0" general="ActivityEdge"/>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="ObjectNode" name="ObjectNode" isAbstract="true">
      <ownedComment xmi:type="uml:Comment" xmi:id="ObjectNode-_ownedComment.0" annotatedElement="ObjectNode">
        <body>An object node is an abstract activity node that is part of defining object flow in an activity.</body>
      </ownedComment>
      <ownedRule xmi:type="uml:Constraint" xmi:id="ObjectNode-object_flow_edges" name="object_flow_edges" constrainedElement="ObjectNode">
        <ownedComment xmi:type="uml:Comment" xmi:id="ObjectNode-object_flow_edges-_ownedComment.0" annotatedElement="ObjectNode-object_flow_edges">
          <body>All edges coming into or going out of object nodes must be object flow edges.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="ObjectNode-object_flow_edges-_specification">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <generalization xmi:type="uml:Generalization" xmi:id="ObjectNode-_generalization.0" general="ActivityNode"/>
      <generalization xmi:type="uml:Generalization" xmi:id="ObjectNode-_generalization.1" general="TypedElement"/>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="OccurrenceSpecification" name="OccurrenceSpecification">
      <ownedComment xmi:type="uml:Comment" xmi:id="OccurrenceSpecification-_ownedComment.0" annotatedElement="OccurrenceSpecification">
        <body>An occurrence specification is the basic semantic unit of interactions. The sequences of occurrences specified by them are the meanings of interactions.</body>
      </ownedComment>
      <generalization xmi:type="uml:Generalization" xmi:id="OccurrenceSpecification-_generalization.0" general="InteractionFragment"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="OccurrenceSpecification-covered" name="covered" visibility="public" type="Lifeline" redefinedProperty="InteractionFragment-covered" association="A_covered_events">
        <ownedComment xmi:type="uml:Comment" xmi:id="OccurrenceSpecification-covered-_ownedComment.0" annotatedElement="OccurrenceSpecification-covered">
          <body>References the Lifeline on which the OccurrenceSpecification appears.</body>
        </ownedComment>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="OccurrenceSpecification-toAfter" name="toAfter" visibility="public" type="GeneralOrdering" association="A_before_toAfter">
        <ownedComment xmi:type="uml:Comment" xmi:id="OccurrenceSpecification-toAfter-_ownedComment.0" annotatedElement="OccurrenceSpecification-toAfter">
          <body>References the GeneralOrderings that specify EventOcurrences that must occur after this OccurrenceSpecification</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="OccurrenceSpecification-toAfter-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="OccurrenceSpecification-toAfter-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="OccurrenceSpecification-toBefore" name="toBefore" visibility="public" type="GeneralOrdering" association="A_toBefore_after">
        <ownedComment xmi:type="uml:Comment" xmi:id="OccurrenceSpecification-toBefore-_ownedComment.0" annotatedElement="OccurrenceSpecification-toBefore">
          <body>References the GeneralOrderings that specify EventOcurrences that must occur before this OccurrenceSpecification</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="OccurrenceSpecification-toBefore-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="OccurrenceSpecification-toBefore-_lowerValue"/>
      </ownedAttribute>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="OpaqueAction" name="OpaqueAction">
      <ownedComment xmi:type="uml:Comment" xmi:id="OpaqueAction-_ownedComment.0" annotatedElement="OpaqueAction">
        <body>An action with implementation-specific semantics.</body>
      </ownedComment>
      <generalization xmi:type="uml:Generalization" xmi:id="OpaqueAction-_generalization.0" general="Action"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="OpaqueAction-body" name="body" visibility="public" isOrdered="true" isUnique="false">
        <ownedComment xmi:type="uml:Comment" xmi:id="OpaqueAction-body-_ownedComment.0" annotatedElement="OpaqueAction-body">
          <body>Specifies the action in one or more languages.</body>
        </ownedComment>
        <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#String"/>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="OpaqueAction-body-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="OpaqueAction-body-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="OpaqueAction-inputValue" name="inputValue" visibility="public" type="InputPin" aggregation="composite" subsettedProperty="Action-input" association="A_inputValue_opaqueAction">
        <ownedComment xmi:type="uml:Comment" xmi:id="OpaqueAction-inputValue-_ownedComment.0" annotatedElement="OpaqueAction-inputValue">
          <body>Provides input to the action.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="OpaqueAction-inputValue-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="OpaqueAction-inputValue-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="OpaqueAction-language" name="language" visibility="public" isOrdered="true">
        <ownedComment xmi:type="uml:Comment" xmi:id="OpaqueAction-language-_ownedComment.0" annotatedElement="OpaqueAction-language">
          <body>Languages the body strings use, in the same order as the body strings</body>
        </ownedComment>
        <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#String"/>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="OpaqueAction-language-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="OpaqueAction-language-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="OpaqueAction-outputValue" name="outputValue" visibility="public" type="OutputPin" aggregation="composite" subsettedProperty="Action-output" association="A_outputValue_opaqueAction">
        <ownedComment xmi:type="uml:Comment" xmi:id="OpaqueAction-outputValue-_ownedComment.0" annotatedElement="OpaqueAction-outputValue">
          <body>Takes output from the action.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="OpaqueAction-outputValue-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="OpaqueAction-outputValue-_lowerValue"/>
      </ownedAttribute>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="OpaqueBehavior" name="OpaqueBehavior">
      <ownedComment xmi:type="uml:Comment" xmi:id="OpaqueBehavior-_ownedComment.0" annotatedElement="OpaqueBehavior">
        <body>An behavior with implementation-specific semantics.</body>
      </ownedComment>
      <generalization xmi:type="uml:Generalization" xmi:id="OpaqueBehavior-_generalization.0" general="Behavior"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="OpaqueBehavior-body" name="body" visibility="public" isOrdered="true" isUnique="false">
        <ownedComment xmi:type="uml:Comment" xmi:id="OpaqueBehavior-body-_ownedComment.0" annotatedElement="OpaqueBehavior-body">
          <body>Specifies the behavior in one or more languages.</body>
        </ownedComment>
        <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#String"/>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="OpaqueBehavior-body-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="OpaqueBehavior-body-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="OpaqueBehavior-language" name="language" visibility="public" isOrdered="true">
        <ownedComment xmi:type="uml:Comment" xmi:id="OpaqueBehavior-language-_ownedComment.0" annotatedElement="OpaqueBehavior-language">
          <body>Languages the body strings use in the same order as the body strings.</body>
        </ownedComment>
        <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#String"/>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="OpaqueBehavior-language-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="OpaqueBehavior-language-_lowerValue"/>
      </ownedAttribute>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="OpaqueExpression" name="OpaqueExpression">
      <ownedComment xmi:type="uml:Comment" xmi:id="OpaqueExpression-_ownedComment.0" annotatedElement="OpaqueExpression">
        <body>Provides a mechanism for precisely defining the behavior of an opaque expression. An opaque expression is defined by a behavior restricted to return one result.</body>
      </ownedComment>
      <ownedComment xmi:type="uml:Comment" xmi:id="OpaqueExpression-_ownedComment.1" annotatedElement="OpaqueExpression">
        <body>An opaque expression is an uninterpreted textual statement that denotes a (possibly empty) set of values when evaluated in a context.</body>
      </ownedComment>
      <ownedRule xmi:type="uml:Constraint" xmi:id="OpaqueExpression-one_return_result_parameter" name="one_return_result_parameter" constrainedElement="OpaqueExpression">
        <ownedComment xmi:type="uml:Comment" xmi:id="OpaqueExpression-one_return_result_parameter-_ownedComment.0" annotatedElement="OpaqueExpression-one_return_result_parameter">
          <body>The behavior must have exactly one return result parameter.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="OpaqueExpression-one_return_result_parameter-_specification">
          <language>OCL</language>
          <body>self.behavior.notEmpty() implies
  self.behavior.ownedParameter-&gt;select(p | p.direction=#return)-&gt;size() = 1</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:type="uml:Constraint" xmi:id="OpaqueExpression-only_return_result_parameters" name="only_return_result_parameters" constrainedElement="OpaqueExpression">
        <ownedComment xmi:type="uml:Comment" xmi:id="OpaqueExpression-only_return_result_parameters-_ownedComment.0" annotatedElement="OpaqueExpression-only_return_result_parameters">
          <body>The behavior may only have return result parameters.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="OpaqueExpression-only_return_result_parameters-_specification">
          <language>OCL</language>
          <body>self.behavior.notEmpty() implies
  self.behavior.ownedParameters-&gt;select(p | p.direction&lt;&gt;#return)-&gt;isEmpty()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:type="uml:Constraint" xmi:id="OpaqueExpression-language_body_size" name="language_body_size" constrainedElement="OpaqueExpression">
        <ownedComment xmi:type="uml:Comment" xmi:id="OpaqueExpression-language_body_size-_ownedComment.0" annotatedElement="OpaqueExpression-language_body_size">
          <body>If the language attribute is not empty, then the size of the body and language arrays must be the same.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="OpaqueExpression-language_body_size-_specification">
          <language>OCL</language>
          <body>language-&gt;notEmpty() implies (body-&gt;size() = language-&gt;size())</body>
        </specification>
      </ownedRule>
      <generalization xmi:type="uml:Generalization" xmi:id="OpaqueExpression-_generalization.0" general="ValueSpecification"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="OpaqueExpression-behavior" name="behavior" visibility="public" type="Behavior" association="A_behavior_opaqueExpression">
        <ownedComment xmi:type="uml:Comment" xmi:id="OpaqueExpression-behavior-_ownedComment.0" annotatedElement="OpaqueExpression-behavior">
          <body>Specifies the behavior of the opaque expression.</body>
        </ownedComment>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="OpaqueExpression-behavior-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="OpaqueExpression-body" name="body" visibility="public" isOrdered="true" isUnique="false">
        <ownedComment xmi:type="uml:Comment" xmi:id="OpaqueExpression-body-_ownedComment.0" annotatedElement="OpaqueExpression-body">
          <body>The text of the expression, possibly in multiple languages.</body>
        </ownedComment>
        <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#String"/>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="OpaqueExpression-body-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="OpaqueExpression-body-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="OpaqueExpression-language" name="language" visibility="public" isOrdered="true">
        <ownedComment xmi:type="uml:Comment" xmi:id="OpaqueExpression-language-_ownedComment.0" annotatedElement="OpaqueExpression-language">
          <body>Specifies the languages in which the expression is stated. The interpretation of the expression body depends on the languages. If the languages are unspecified, they might be implicit from the expression body or the context. Languages are matched to body strings by order.</body>
        </ownedComment>
        <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#String"/>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="OpaqueExpression-language-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="OpaqueExpression-language-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="OpaqueExpression-result" name="result" visibility="public" type="Parameter" isReadOnly="true" isDerived="true" association="A_result_opaqueExpression">
        <ownedComment xmi:type="uml:Comment" xmi:id="OpaqueExpression-result-_ownedComment.0" annotatedElement="OpaqueExpression-result">
          <body>Restricts an opaque expression to return exactly one return result. When the invocation of the opaque expression completes, a single set of values is returned to its owner. This association is derived from the single return result parameter of the associated behavior.</body>
        </ownedComment>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="OpaqueExpression-result-_lowerValue"/>
      </ownedAttribute>
      <ownedOperation xmi:type="uml:Operation" xmi:id="OpaqueExpression-isIntegral" name="isIntegral" visibility="public" isQuery="true" bodyCondition="OpaqueExpression-isIntegral-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="OpaqueExpression-isIntegral-_ownedComment.0" annotatedElement="OpaqueExpression-isIntegral">
          <body>The query isIntegral() tells whether an expression is intended to produce an integer.</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="OpaqueExpression-isIntegral-spec" name="spec" constrainedElement="OpaqueExpression-isIntegral">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="OpaqueExpression-isIntegral-spec-_specification">
            <language>OCL</language>
            <body>result = false</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="OpaqueExpression-isIntegral-result" name="result" visibility="public" direction="return">
          <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:type="uml:Operation" xmi:id="OpaqueExpression-isNonNegative" name="isNonNegative" visibility="public" isQuery="true" precondition="OpaqueExpression-isNonNegative-pre" bodyCondition="OpaqueExpression-isNonNegative-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="OpaqueExpression-isNonNegative-_ownedComment.0" annotatedElement="OpaqueExpression-isNonNegative">
          <body>The query isNonNegative() tells whether an integer expression has a non-negative value.</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="OpaqueExpression-isNonNegative-spec" name="spec" constrainedElement="OpaqueExpression-isNonNegative">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="OpaqueExpression-isNonNegative-spec-_specification">
            <language>OCL</language>
            <body>result = false</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:type="uml:Constraint" xmi:id="OpaqueExpression-isNonNegative-pre" name="pre" constrainedElement="OpaqueExpression-isNonNegative">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="OpaqueExpression-isNonNegative-pre-_specification">
            <language>OCL</language>
            <body>self.isIntegral()</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="OpaqueExpression-isNonNegative-result" name="result" visibility="public" direction="return">
          <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:type="uml:Operation" xmi:id="OpaqueExpression-isPositive" name="isPositive" visibility="public" isQuery="true" precondition="OpaqueExpression-isPositive-pre" bodyCondition="OpaqueExpression-isPositive-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="OpaqueExpression-isPositive-_ownedComment.0" annotatedElement="OpaqueExpression-isPositive">
          <body>The query isPositive() tells whether an integer expression has a positive value.</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="OpaqueExpression-isPositive-pre" name="pre" constrainedElement="OpaqueExpression-isPositive">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="OpaqueExpression-isPositive-pre-_specification">
            <language>OCL</language>
            <body>self.isIntegral()</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:type="uml:Constraint" xmi:id="OpaqueExpression-isPositive-spec" name="spec" constrainedElement="OpaqueExpression-isPositive">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="OpaqueExpression-isPositive-spec-_specification">
            <language>OCL</language>
            <body>result = false</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="OpaqueExpression-isPositive-result" name="result" visibility="public" direction="return">
          <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:type="uml:Operation" xmi:id="OpaqueExpression-result.1" name="result" visibility="public" isQuery="true" bodyCondition="OpaqueExpression-result.1-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="OpaqueExpression-result.1-_ownedComment.0" annotatedElement="OpaqueExpression-result.1">
          <body>Missing derivation for OpaqueExpression::/result : Parameter</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="OpaqueExpression-result.1-spec" name="spec" constrainedElement="OpaqueExpression-result.1 OpaqueExpression-result">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="OpaqueExpression-result.1-spec-_specification">
            <language>OCL</language>
            <body>true</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="OpaqueExpression-result.1-result" name="result" visibility="public" type="Parameter" direction="return">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="OpaqueExpression-result.1-result-_lowerValue"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:type="uml:Operation" xmi:id="OpaqueExpression-value" name="value" visibility="public" isQuery="true" precondition="OpaqueExpression-value-pre" bodyCondition="OpaqueExpression-value-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="OpaqueExpression-value-_ownedComment.0" annotatedElement="OpaqueExpression-value">
          <body>The query value() gives an integer value for an expression intended to produce one.</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="OpaqueExpression-value-spec" name="spec" constrainedElement="OpaqueExpression-value">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="OpaqueExpression-value-spec-_specification">
            <language>OCL</language>
            <body>true</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:type="uml:Constraint" xmi:id="OpaqueExpression-value-pre" name="pre" constrainedElement="OpaqueExpression-value">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="OpaqueExpression-value-pre-_specification">
            <language>OCL</language>
            <body>self.isIntegral()</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="OpaqueExpression-value-result" name="result" visibility="public" direction="return">
          <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Integer"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="Operation" name="Operation">
      <ownedComment xmi:type="uml:Comment" xmi:id="Operation-_ownedComment.0" annotatedElement="Operation">
        <body>An operation may invoke both the execution of method behaviors as well as other behavioral responses.</body>
      </ownedComment>
      <ownedComment xmi:type="uml:Comment" xmi:id="Operation-_ownedComment.1" annotatedElement="Operation">
        <body>An operation is a behavioral feature of a classifier that specifies the name, type, parameters, and constraints for invoking an associated behavior.</body>
      </ownedComment>
      <ownedRule xmi:type="uml:Constraint" xmi:id="Operation-only_body_for_query" name="only_body_for_query" constrainedElement="Operation">
        <ownedComment xmi:type="uml:Comment" xmi:id="Operation-only_body_for_query-_ownedComment.0" annotatedElement="Operation-only_body_for_query">
          <body>A bodyCondition can only be specified for a query operation.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="Operation-only_body_for_query-_specification">
          <language>OCL</language>
          <body>bodyCondition-&gt;notEmpty() implies isQuery</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:type="uml:Constraint" xmi:id="Operation-at_most_one_return" name="at_most_one_return" constrainedElement="Operation">
        <ownedComment xmi:type="uml:Comment" xmi:id="Operation-at_most_one_return-_ownedComment.0" annotatedElement="Operation-at_most_one_return">
          <body>An operation can have at most one return parameter; i.e., an owned parameter with the direction set to 'return'</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="Operation-at_most_one_return-_specification">
          <language>OCL</language>
          <body>self.ownedParameter-&gt;select(par | par.direction = #return)-&gt;size() &lt;= 1</body>
        </specification>
      </ownedRule>
      <generalization xmi:type="uml:Generalization" xmi:id="Operation-_generalization.0" general="BehavioralFeature"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Operation-bodyCondition" name="bodyCondition" visibility="public" type="Constraint" aggregation="composite" subsettedProperty="Namespace-ownedRule" association="A_bodyCondition_bodyContext">
        <ownedComment xmi:type="uml:Comment" xmi:id="Operation-bodyCondition-_ownedComment.0" annotatedElement="Operation-bodyCondition">
          <body>An optional Constraint on the result values of an invocation of this Operation.</body>
        </ownedComment>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Operation-bodyCondition-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Operation-class" name="class" visibility="public" type="Class" subsettedProperty="RedefinableElement-redefinitionContext Feature-featuringClassifier NamedElement-namespace" association="A_ownedOperation_class">
        <ownedComment xmi:type="uml:Comment" xmi:id="Operation-class-_ownedComment.0" annotatedElement="Operation-class">
          <body>The class that owns the operation.</body>
        </ownedComment>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Operation-class-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Operation-datatype" name="datatype" visibility="public" type="DataType" subsettedProperty="RedefinableElement-redefinitionContext Feature-featuringClassifier NamedElement-namespace" association="A_ownedOperation_datatype">
        <ownedComment xmi:type="uml:Comment" xmi:id="Operation-datatype-_ownedComment.0" annotatedElement="Operation-datatype">
          <body>The DataType that owns this Operation.</body>
        </ownedComment>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Operation-datatype-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Operation-interface" name="interface" visibility="public" type="Interface" subsettedProperty="RedefinableElement-redefinitionContext Feature-featuringClassifier NamedElement-namespace" association="A_ownedOperation_interface">
        <ownedComment xmi:type="uml:Comment" xmi:id="Operation-interface-_ownedComment.0" annotatedElement="Operation-interface">
          <body>The Interface that owns this Operation.</body>
        </ownedComment>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Operation-interface-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Operation-isOrdered" name="isOrdered" visibility="public" isReadOnly="true" isDerived="true">
        <ownedComment xmi:type="uml:Comment" xmi:id="Operation-isOrdered-_ownedComment.0" annotatedElement="Operation-isOrdered">
          <body>Specifies whether the return parameter is ordered or not, if present.</body>
        </ownedComment>
        <ownedComment xmi:type="uml:Comment" xmi:id="Operation-isOrdered-_ownedComment.1" annotatedElement="Operation-isOrdered">
          <body>This information is derived from the return result for this Operation.</body>
        </ownedComment>
        <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Operation-isOrdered-_defaultValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Operation-isQuery" name="isQuery" visibility="public">
        <ownedComment xmi:type="uml:Comment" xmi:id="Operation-isQuery-_ownedComment.0" annotatedElement="Operation-isQuery">
          <body>Specifies whether an execution of the BehavioralFeature leaves the state of the system unchanged (isQuery=true) or whether side effects may occur (isQuery=false).</body>
        </ownedComment>
        <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Operation-isQuery-_defaultValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Operation-isUnique" name="isUnique" visibility="public" isReadOnly="true" isDerived="true">
        <ownedComment xmi:type="uml:Comment" xmi:id="Operation-isUnique-_ownedComment.0" annotatedElement="Operation-isUnique">
          <body>Specifies whether the return parameter is unique or not, if present.</body>
        </ownedComment>
        <ownedComment xmi:type="uml:Comment" xmi:id="Operation-isUnique-_ownedComment.1" annotatedElement="Operation-isUnique">
          <body>This information is derived from the return result for this Operation.</body>
        </ownedComment>
        <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Operation-isUnique-_defaultValue" value="true"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Operation-lower" name="lower" visibility="public" isReadOnly="true" isDerived="true">
        <ownedComment xmi:type="uml:Comment" xmi:id="Operation-lower-_ownedComment.0" annotatedElement="Operation-lower">
          <body>Specifies the lower multiplicity of the return parameter, if present.</body>
        </ownedComment>
        <ownedComment xmi:type="uml:Comment" xmi:id="Operation-lower-_ownedComment.1" annotatedElement="Operation-lower">
          <body>This information is derived from the return result for this Operation.</body>
        </ownedComment>
        <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Integer"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Operation-lower-_lowerValue"/>
        <defaultValue xmi:type="uml:LiteralInteger" xmi:id="Operation-lower-_defaultValue" value="1"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Operation-ownedParameter" name="ownedParameter" visibility="public" type="Parameter" isOrdered="true" aggregation="composite" redefinedProperty="BehavioralFeature-ownedParameter" association="A_ownedParameter_operation">
        <ownedComment xmi:type="uml:Comment" xmi:id="Operation-ownedParameter-_ownedComment.0" annotatedElement="Operation-ownedParameter">
          <body>Specifies the ordered set of formal parameters of this BehavioralFeature.</body>
        </ownedComment>
        <ownedComment xmi:type="uml:Comment" xmi:id="Operation-ownedParameter-_ownedComment.1" annotatedElement="Operation-ownedParameter">
          <body>Specifies the parameters owned by this Operation.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Operation-ownedParameter-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Operation-ownedParameter-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Operation-postcondition" name="postcondition" visibility="public" type="Constraint" aggregation="composite" subsettedProperty="Namespace-ownedRule" association="A_postcondition_postContext">
        <ownedComment xmi:type="uml:Comment" xmi:id="Operation-postcondition-_ownedComment.0" annotatedElement="Operation-postcondition">
          <body>An optional set of Constraints specifying the state of the system when the Operation is completed.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Operation-postcondition-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Operation-postcondition-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Operation-precondition" name="precondition" visibility="public" type="Constraint" aggregation="composite" subsettedProperty="Namespace-ownedRule" association="A_precondition_preContext">
        <ownedComment xmi:type="uml:Comment" xmi:id="Operation-precondition-_ownedComment.0" annotatedElement="Operation-precondition">
          <body>An optional set of Constraints on the state of the system when the Operation is invoked.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Operation-precondition-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Operation-precondition-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Operation-raisedException" name="raisedException" visibility="public" type="Type" redefinedProperty="BehavioralFeature-raisedException" association="A_raisedException_operation">
        <ownedComment xmi:type="uml:Comment" xmi:id="Operation-raisedException-_ownedComment.0" annotatedElement="Operation-raisedException">
          <body>References the Types representing exceptions that may be raised during an invocation of this operation.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Operation-raisedException-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Operation-raisedException-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Operation-redefinedOperation" name="redefinedOperation" visibility="public" type="Operation" subsettedProperty="RedefinableElement-redefinedElement" association="A_redefinedOperation_operation">
        <ownedComment xmi:type="uml:Comment" xmi:id="Operation-redefinedOperation-_ownedComment.0" annotatedElement="Operation-redefinedOperation">
          <body>References the Operations that are redefined by this Operation.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Operation-redefinedOperation-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Operation-redefinedOperation-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Operation-type" name="type" visibility="public" type="Type" isReadOnly="true" isDerived="true" association="A_type_operation">
        <ownedComment xmi:type="uml:Comment" xmi:id="Operation-type-_ownedComment.0" annotatedElement="Operation-type">
          <body>Specifies the return result of the operation, if present.</body>
        </ownedComment>
        <ownedComment xmi:type="uml:Comment" xmi:id="Operation-type-_ownedComment.1" annotatedElement="Operation-type">
          <body>This information is derived from the return result for this Operation.</body>
        </ownedComment>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Operation-type-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Operation-upper" name="upper" visibility="public" isReadOnly="true" isDerived="true">
        <ownedComment xmi:type="uml:Comment" xmi:id="Operation-upper-_ownedComment.0" annotatedElement="Operation-upper">
          <body>Specifies the upper multiplicity of the return parameter, if present.</body>
        </ownedComment>
        <ownedComment xmi:type="uml:Comment" xmi:id="Operation-upper-_ownedComment.1" annotatedElement="Operation-upper">
          <body>This information is derived from the return result for this Operation.</body>
        </ownedComment>
        <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#UnlimitedNatural"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Operation-upper-_lowerValue"/>
        <defaultValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Operation-upper-_defaultValue" value="1"/>
      </ownedAttribute>
      <ownedOperation xmi:type="uml:Operation" xmi:id="Operation-isConsistentWith" name="isConsistentWith" visibility="public" isQuery="true" precondition="Operation-isConsistentWith-pre" redefinedOperation="RedefinableElement-isConsistentWith" bodyCondition="Operation-isConsistentWith-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="Operation-isConsistentWith-_ownedComment.0" annotatedElement="Operation-isConsistentWith">
          <body>A redefining operation is consistent with a redefined operation if it has the same number of owned parameters, and the type of each owned parameter conforms to the type of the corresponding redefined parameter.</body>
        </ownedComment>
        <ownedComment xmi:type="uml:Comment" xmi:id="Operation-isConsistentWith-_ownedComment.1" annotatedElement="Operation-isConsistentWith">
          <body>The query isConsistentWith() specifies, for any two Operations in a context in which redefinition is possible, whether redefinition would be consistent in the sense of maintaining type covariance. Other senses of consistency may be required, for example to determine consistency in the sense of contravariance. Users may define alternative queries under names different from 'isConsistentWith()', as for example, users may define a query named 'isContravariantWith()'.</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="Operation-isConsistentWith-spec" name="spec" constrainedElement="Operation-isConsistentWith">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="Operation-isConsistentWith-spec-_specification">
            <language>OCL</language>
            <body>result = redefinee.oclIsKindOf(Operation) and
let op : Operation = redefinee.oclAsType(Operation) in
	self.ownedParameter-&gt;size() = op.ownedParameter-&gt;size() and
	Sequence{1..self.ownedParameter-&gt;size()}-&gt;
		forAll(i |op.ownedParameter-&gt;at(1).type.conformsTo(self.ownedParameter-&gt;at(i).type))</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:type="uml:Constraint" xmi:id="Operation-isConsistentWith-pre" name="pre" constrainedElement="Operation-isConsistentWith">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="Operation-isConsistentWith-pre-_specification">
            <language>OCL</language>
            <body>redefinee.isRedefinitionContextValid(self)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="Operation-isConsistentWith-result" name="result" visibility="public" direction="return">
          <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
        </ownedParameter>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="Operation-isConsistentWith-redefinee" name="redefinee" visibility="public" type="RedefinableElement"/>
      </ownedOperation>
      <ownedOperation xmi:type="uml:Operation" xmi:id="Operation-isOrdered.1" name="isOrdered" visibility="public" isQuery="true" bodyCondition="Operation-isOrdered.1-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="Operation-isOrdered.1-_ownedComment.0" annotatedElement="Operation-isOrdered.1">
          <body>If this operation has a return parameter, isOrdered equals the value of isOrdered for that parameter. Otherwise isOrdered is false.</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="Operation-isOrdered.1-spec" name="spec" constrainedElement="Operation-isOrdered.1 Operation-isOrdered">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="Operation-isOrdered.1-spec-_specification">
            <language>OCL</language>
            <body>result = if returnResult()-&gt;notEmpty() then returnResult()-&gt;any().isOrdered else false endif</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="Operation-isOrdered.1-result" name="result" visibility="public" direction="return">
          <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:type="uml:Operation" xmi:id="Operation-isUnique.1" name="isUnique" visibility="public" isQuery="true" bodyCondition="Operation-isUnique.1-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="Operation-isUnique.1-_ownedComment.0" annotatedElement="Operation-isUnique.1">
          <body>If this operation has a return parameter, isUnique equals the value of isUnique for that parameter. Otherwise isUnique is true.</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="Operation-isUnique.1-spec" name="spec" constrainedElement="Operation-isUnique.1 Operation-isUnique">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="Operation-isUnique.1-spec-_specification">
            <language>OCL</language>
            <body>result = if returnResult()-&gt;notEmpty() then returnResult()-&gt;any().isUnique else true endif</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="Operation-isUnique.1-result" name="result" visibility="public" direction="return">
          <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:type="uml:Operation" xmi:id="Operation-lower.1" name="lower" visibility="public" isQuery="true" bodyCondition="Operation-lower.1-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="Operation-lower.1-_ownedComment.0" annotatedElement="Operation-lower.1">
          <body>If this operation has a return parameter, lower equals the value of lower for that parameter. Otherwise lower is not defined.</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="Operation-lower.1-spec" name="spec" constrainedElement="Operation-lower.1 Operation-lower">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="Operation-lower.1-spec-_specification">
            <language>OCL</language>
            <body>result = if returnResult()-&gt;notEmpty() then returnResult()-&gt;any().lower else Set{} endif</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="Operation-lower.1-result" name="result" visibility="public" direction="return">
          <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Integer"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:type="uml:Operation" xmi:id="Operation-returnResult" name="returnResult" visibility="public" isQuery="true" bodyCondition="Operation-returnResult-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="Operation-returnResult-_ownedComment.0" annotatedElement="Operation-returnResult">
          <body>The query returnResult() returns the set containing the return parameter of the Operation if one exists, otherwise, it returns an empty set</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="Operation-returnResult-spec" name="spec" constrainedElement="Operation-returnResult">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="Operation-returnResult-spec-_specification">
            <language>OCL</language>
            <body>result = ownedParameter-&gt;select (par | par.direction = #return)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="Operation-returnResult-result" name="result" visibility="public" type="Parameter" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Operation-returnResult-result-_upperValue" value="*"/>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Operation-returnResult-result-_lowerValue"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:type="uml:Operation" xmi:id="Operation-type.1" name="type" visibility="public" isQuery="true" bodyCondition="Operation-type.1-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="Operation-type.1-_ownedComment.0" annotatedElement="Operation-type.1">
          <body>If this operation has a return parameter, type equals the value of type for that parameter. Otherwise type is not defined.</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="Operation-type.1-spec" name="spec" constrainedElement="Operation-type.1 Operation-type">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="Operation-type.1-spec-_specification">
            <language>OCL</language>
            <body>result = if returnResult()-&gt;notEmpty() then returnResult()-&gt;any().type else Set{} endif</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="Operation-type.1-result" name="result" visibility="public" type="Type" direction="return"/>
      </ownedOperation>
      <ownedOperation xmi:type="uml:Operation" xmi:id="Operation-upper.1" name="upper" visibility="public" isQuery="true" bodyCondition="Operation-upper.1-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="Operation-upper.1-_ownedComment.0" annotatedElement="Operation-upper.1">
          <body>If this operation has a return parameter, upper equals the value of upper for that parameter. Otherwise upper is not defined.</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="Operation-upper.1-spec" name="spec" constrainedElement="Operation-upper.1 Operation-upper">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="Operation-upper.1-spec-_specification">
            <language>OCL</language>
            <body>result = if returnResult()-&gt;notEmpty() then returnResult()-&gt;any().upper else Set{} endif</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="Operation-upper.1-result" name="result" visibility="public" direction="return">
          <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#UnlimitedNatural"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="OutputPin" name="OutputPin">
      <ownedComment xmi:type="uml:Comment" xmi:id="OutputPin-_ownedComment.0" annotatedElement="OutputPin">
        <body>An output pin is a pin that holds output values produced by an action.</body>
      </ownedComment>
      <generalization xmi:type="uml:Generalization" xmi:id="OutputPin-_generalization.0" general="Pin"/>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="Package" name="Package">
      <ownedComment xmi:type="uml:Comment" xmi:id="Package-_ownedComment.0" annotatedElement="Package">
        <body>A package is used to group elements, and provides a namespace for the grouped elements.</body>
      </ownedComment>
      <ownedRule xmi:type="uml:Constraint" xmi:id="Package-elements_public_or_private" name="elements_public_or_private" constrainedElement="Package">
        <ownedComment xmi:type="uml:Comment" xmi:id="Package-elements_public_or_private-_ownedComment.0" annotatedElement="Package-elements_public_or_private">
          <body>If an element that is owned by a package has visibility, it is public or private.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="Package-elements_public_or_private-_specification">
          <language>OCL</language>
          <body>self.ownedElements-&gt;forAll(e | e.visibility-&gt;notEmpty() implies e.visbility = #public or e.visibility = #private)</body>
        </specification>
      </ownedRule>
      <generalization xmi:type="uml:Generalization" xmi:id="Package-_generalization.0" general="PackageableElement"/>
      <generalization xmi:type="uml:Generalization" xmi:id="Package-_generalization.1" general="Namespace"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Package-URI" name="URI" visibility="public">
        <ownedComment xmi:type="uml:Comment" xmi:id="Package-URI-_ownedComment.0" annotatedElement="Package-URI">
          <body>Provides an identifier for the package that can be used for many purposes. A URI is the universally unique identification of the package following the IETF URI specification, RFC 2396 http://www.ietf.org/rfc/rfc2396.txt and it must comply with those syntax rules.</body>
        </ownedComment>
        <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#String"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Package-URI-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Package-nestedPackage" name="nestedPackage" visibility="public" type="Package" isDerived="true" aggregation="composite" subsettedProperty="Package-packagedElement" association="A_nestedPackage_nestingPackage">
        <ownedComment xmi:type="uml:Comment" xmi:id="Package-nestedPackage-_ownedComment.0" annotatedElement="Package-nestedPackage">
          <body>References the packaged elements that are Packages.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Package-nestedPackage-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Package-nestedPackage-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Package-nestingPackage" name="nestingPackage" visibility="public" type="Package" subsettedProperty="A_packagedElement_owningPackage-owningPackage" association="A_nestedPackage_nestingPackage">
        <ownedComment xmi:type="uml:Comment" xmi:id="Package-nestingPackage-_ownedComment.0" annotatedElement="Package-nestingPackage">
          <body>References the Package that owns this Package.</body>
        </ownedComment>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Package-nestingPackage-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Package-ownedType" name="ownedType" visibility="public" type="Type" isDerived="true" aggregation="composite" subsettedProperty="Package-packagedElement" association="A_ownedType_package">
        <ownedComment xmi:type="uml:Comment" xmi:id="Package-ownedType-_ownedComment.0" annotatedElement="Package-ownedType">
          <body>References the packaged elements that are Types.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Package-ownedType-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Package-ownedType-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Package-packageMerge" name="packageMerge" visibility="public" type="PackageMerge" aggregation="composite" subsettedProperty="Element-ownedElement A_source_directedRelationship-directedRelationship" association="A_packageMerge_receivingPackage">
        <ownedComment xmi:type="uml:Comment" xmi:id="Package-packageMerge-_ownedComment.0" annotatedElement="Package-packageMerge">
          <body>References the PackageMerges that are owned by this Package.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Package-packageMerge-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Package-packageMerge-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Package-packagedElement" name="packagedElement" visibility="public" type="PackageableElement" aggregation="composite" subsettedProperty="Namespace-ownedMember" association="A_packagedElement_owningPackage">
        <ownedComment xmi:type="uml:Comment" xmi:id="Package-packagedElement-_ownedComment.0" annotatedElement="Package-packagedElement">
          <body>Specifies the packageable elements that are owned by this Package.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Package-packagedElement-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Package-packagedElement-_lowerValue"/>
      </ownedAttribute>
      <ownedOperation xmi:type="uml:Operation" xmi:id="Package-makesVisible" name="makesVisible" visibility="public" isQuery="true" precondition="Package-makesVisible-pre" bodyCondition="Package-makesVisible-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="Package-makesVisible-_ownedComment.0" annotatedElement="Package-makesVisible">
          <body>The query makesVisible() defines whether a Package makes an element visible outside itself. Elements with no visibility and elements with public visibility are made visible.</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="Package-makesVisible-spec" name="spec" constrainedElement="Package-makesVisible">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="Package-makesVisible-spec-_specification">
            <language>OCL</language>
            <body>result = (ownedMember-&gt;includes(el)) or
(elementImport-&gt;select(ei|ei.importedElement = #public)-&gt;collect(ei|ei.importedElement)-&gt;includes(el)) or
(packageImport-&gt;select(pi|pi.visibility = #public)-&gt;collect(pi|pi.importedPackage.member-&gt;includes(el))-&gt;notEmpty())</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:type="uml:Constraint" xmi:id="Package-makesVisible-pre" name="pre" constrainedElement="Package-makesVisible">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="Package-makesVisible-pre-_specification">
            <language>OCL</language>
            <body>self.member-&gt;includes(el)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="Package-makesVisible-result" name="result" visibility="public" direction="return">
          <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
        </ownedParameter>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="Package-makesVisible-el" name="el" visibility="public" type="NamedElement"/>
      </ownedOperation>
      <ownedOperation xmi:type="uml:Operation" xmi:id="Package-mustBeOwned" name="mustBeOwned" visibility="public" isQuery="true" redefinedOperation="Element-mustBeOwned" bodyCondition="Package-mustBeOwned-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="Package-mustBeOwned-_ownedComment.0" annotatedElement="Package-mustBeOwned">
          <body>The query mustBeOwned() indicates whether elements of this type must have an owner.</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="Package-mustBeOwned-spec" name="spec" constrainedElement="Package-mustBeOwned">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="Package-mustBeOwned-spec-_specification">
            <language>OCL</language>
            <body>result = false</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="Package-mustBeOwned-result" name="result" visibility="public" direction="return">
          <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:type="uml:Operation" xmi:id="Package-nestedPackage.1" name="nestedPackage" visibility="public" isQuery="true" bodyCondition="Package-nestedPackage.1-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="Package-nestedPackage.1-_ownedComment.0" annotatedElement="Package-nestedPackage.1">
          <body>Missing derivation for Package::/nestedPackage : Package</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="Package-nestedPackage.1-spec" name="spec" constrainedElement="Package-nestedPackage.1 Package-nestedPackage">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="Package-nestedPackage.1-spec-_specification">
            <language>OCL</language>
            <body>true</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="Package-nestedPackage.1-result" name="result" visibility="public" type="Package" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Package-nestedPackage.1-result-_upperValue" value="*"/>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Package-nestedPackage.1-result-_lowerValue"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:type="uml:Operation" xmi:id="Package-ownedType.1" name="ownedType" visibility="public" isQuery="true" bodyCondition="Package-ownedType.1-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="Package-ownedType.1-_ownedComment.0" annotatedElement="Package-ownedType.1">
          <body>Missing derivation for Package::/ownedType : Type</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="Package-ownedType.1-spec" name="spec" constrainedElement="Package-ownedType.1 Package-ownedType">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="Package-ownedType.1-spec-_specification">
            <language>OCL</language>
            <body>true</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="Package-ownedType.1-result" name="result" visibility="public" type="Type" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Package-ownedType.1-result-_upperValue" value="*"/>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Package-ownedType.1-result-_lowerValue"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:type="uml:Operation" xmi:id="Package-visibleMembers" name="visibleMembers" visibility="public" isQuery="true" bodyCondition="Package-visibleMembers-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="Package-visibleMembers-_ownedComment.0" annotatedElement="Package-visibleMembers">
          <body>The query visibleMembers() defines which members of a Package can be accessed outside it.</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="Package-visibleMembers-spec" name="spec" constrainedElement="Package-visibleMembers">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="Package-visibleMembers-spec-_specification">
            <language>OCL</language>
            <body>result = member-&gt;select( m | self.makesVisible(m))</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="Package-visibleMembers-result" name="result" visibility="public" type="PackageableElement" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Package-visibleMembers-result-_upperValue" value="*"/>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Package-visibleMembers-result-_lowerValue"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="PackageImport" name="PackageImport">
      <ownedComment xmi:type="uml:Comment" xmi:id="PackageImport-_ownedComment.0" annotatedElement="PackageImport">
        <body>A package import is a relationship that allows the use of unqualified names to refer to package members from other namespaces.</body>
      </ownedComment>
      <ownedRule xmi:type="uml:Constraint" xmi:id="PackageImport-public_or_private" name="public_or_private" constrainedElement="PackageImport">
        <ownedComment xmi:type="uml:Comment" xmi:id="PackageImport-public_or_private-_ownedComment.0" annotatedElement="PackageImport-public_or_private">
          <body>The visibility of a PackageImport is either public or private.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="PackageImport-public_or_private-_specification">
          <language>OCL</language>
          <body>self.visibility = #public or self.visibility = #private</body>
        </specification>
      </ownedRule>
      <generalization xmi:type="uml:Generalization" xmi:id="PackageImport-_generalization.0" general="DirectedRelationship"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="PackageImport-importedPackage" name="importedPackage" visibility="public" type="Package" subsettedProperty="DirectedRelationship-target" association="A_importedPackage_packageImport">
        <ownedComment xmi:type="uml:Comment" xmi:id="PackageImport-importedPackage-_ownedComment.0" annotatedElement="PackageImport-importedPackage">
          <body>Specifies the Package whose members are imported into a Namespace.</body>
        </ownedComment>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="PackageImport-importingNamespace" name="importingNamespace" visibility="public" type="Namespace" subsettedProperty="Element-owner DirectedRelationship-source" association="A_packageImport_importingNamespace">
        <ownedComment xmi:type="uml:Comment" xmi:id="PackageImport-importingNamespace-_ownedComment.0" annotatedElement="PackageImport-importingNamespace">
          <body>Specifies the Namespace that imports the members from a Package.</body>
        </ownedComment>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="PackageImport-visibility" name="visibility" visibility="public" type="VisibilityKind">
        <ownedComment xmi:type="uml:Comment" xmi:id="PackageImport-visibility-_ownedComment.0" annotatedElement="PackageImport-visibility">
          <body>Specifies the visibility of the imported PackageableElements within the importing Namespace, i.e., whether imported elements will in turn be visible to other packages that use that importingPackage as an importedPackage. If the PackageImport is public, the imported elements will be visible outside the package, while if it is private they will not.</body>
        </ownedComment>
        <defaultValue xmi:type="uml:InstanceValue" xmi:id="PackageImport-visibility-_defaultValue" type="VisibilityKind" instance="VisibilityKind-public"/>
      </ownedAttribute>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="PackageMerge" name="PackageMerge">
      <ownedComment xmi:type="uml:Comment" xmi:id="PackageMerge-_ownedComment.0" annotatedElement="PackageMerge">
        <body>A package merge defines how the contents of one package are extended by the contents of another package.</body>
      </ownedComment>
      <generalization xmi:type="uml:Generalization" xmi:id="PackageMerge-_generalization.0" general="DirectedRelationship"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="PackageMerge-mergedPackage" name="mergedPackage" visibility="public" type="Package" subsettedProperty="DirectedRelationship-target" association="A_mergedPackage_packageMerge">
        <ownedComment xmi:type="uml:Comment" xmi:id="PackageMerge-mergedPackage-_ownedComment.0" annotatedElement="PackageMerge-mergedPackage">
          <body>References the Package that is to be merged with the receiving package of the PackageMerge.</body>
        </ownedComment>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="PackageMerge-receivingPackage" name="receivingPackage" visibility="public" type="Package" subsettedProperty="Element-owner DirectedRelationship-source" association="A_packageMerge_receivingPackage">
        <ownedComment xmi:type="uml:Comment" xmi:id="PackageMerge-receivingPackage-_ownedComment.0" annotatedElement="PackageMerge-receivingPackage">
          <body>References the Package that is being extended with the contents of the merged package of the PackageMerge.</body>
        </ownedComment>
      </ownedAttribute>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="PackageableElement" name="PackageableElement" isAbstract="true">
      <ownedComment xmi:type="uml:Comment" xmi:id="PackageableElement-_ownedComment.0" annotatedElement="PackageableElement">
        <body>A packageable element indicates a named element that may be owned directly by a package.</body>
      </ownedComment>
      <generalization xmi:type="uml:Generalization" xmi:id="PackageableElement-_generalization.0" general="NamedElement"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="PackageableElement-visibility" name="visibility" visibility="public" type="VisibilityKind" redefinedProperty="NamedElement-visibility">
        <ownedComment xmi:type="uml:Comment" xmi:id="PackageableElement-visibility-_ownedComment.0" annotatedElement="PackageableElement-visibility">
          <body>Indicates that packageable elements must always have a visibility, i.e., visibility is not optional.</body>
        </ownedComment>
        <defaultValue xmi:type="uml:InstanceValue" xmi:id="PackageableElement-visibility-_defaultValue" type="VisibilityKind" instance="VisibilityKind-public"/>
      </ownedAttribute>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="Parameter" name="Parameter">
      <ownedComment xmi:type="uml:Comment" xmi:id="Parameter-_ownedComment.0" annotatedElement="Parameter">
        <body>A parameter is a specification of an argument used to pass information into or out of an invocation of a behavioral feature.</body>
      </ownedComment>
      <generalization xmi:type="uml:Generalization" xmi:id="Parameter-_generalization.0" general="TypedElement"/>
      <generalization xmi:type="uml:Generalization" xmi:id="Parameter-_generalization.1" general="MultiplicityElement"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Parameter-default" name="default" visibility="public" isDerived="true">
        <ownedComment xmi:type="uml:Comment" xmi:id="Parameter-default-_ownedComment.0" annotatedElement="Parameter-default">
          <body>Specifies a String that represents a value to be used when no argument is supplied for the Parameter.</body>
        </ownedComment>
        <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#String"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Parameter-default-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Parameter-defaultValue" name="defaultValue" visibility="public" type="ValueSpecification" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_defaultValue_owningParameter">
        <ownedComment xmi:type="uml:Comment" xmi:id="Parameter-defaultValue-_ownedComment.0" annotatedElement="Parameter-defaultValue">
          <body>Specifies a ValueSpecification that represents a value to be used when no argument is supplied for the Parameter.</body>
        </ownedComment>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Parameter-defaultValue-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Parameter-direction" name="direction" visibility="public" type="ParameterDirectionKind">
        <ownedComment xmi:type="uml:Comment" xmi:id="Parameter-direction-_ownedComment.0" annotatedElement="Parameter-direction">
          <body>Indicates whether a parameter is being sent into or out of a behavioral element.</body>
        </ownedComment>
        <defaultValue xmi:type="uml:InstanceValue" xmi:id="Parameter-direction-_defaultValue" type="ParameterDirectionKind" instance="ParameterDirectionKind-in"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Parameter-operation" name="operation" visibility="public" type="Operation" subsettedProperty="A_ownedParameter_ownerFormalParam-ownerFormalParam" association="A_ownedParameter_operation">
        <ownedComment xmi:type="uml:Comment" xmi:id="Parameter-operation-_ownedComment.0" annotatedElement="Parameter-operation">
          <body>References the Operation owning this parameter.</body>
        </ownedComment>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Parameter-operation-_lowerValue"/>
      </ownedAttribute>
      <ownedOperation xmi:type="uml:Operation" xmi:id="Parameter-default.1" name="default" visibility="public" isQuery="true" bodyCondition="Parameter-default.1-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="Parameter-default.1-_ownedComment.0" annotatedElement="Parameter-default.1">
          <body>Missing derivation for Parameter::/default : String</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="Parameter-default.1-spec" name="spec" constrainedElement="Parameter-default.1 Parameter-default">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="Parameter-default.1-spec-_specification">
            <language>OCL</language>
            <body>true</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="Parameter-default.1-result" name="result" visibility="public" direction="return">
          <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#String"/>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Parameter-default.1-result-_lowerValue"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="Pin" name="Pin" isAbstract="true">
      <ownedComment xmi:type="uml:Comment" xmi:id="Pin-_ownedComment.0" annotatedElement="Pin">
        <body>A pin is a typed element and multiplicity element that provides values to actions and accept result values from them.</body>
      </ownedComment>
      <ownedComment xmi:type="uml:Comment" xmi:id="Pin-_ownedComment.1" annotatedElement="Pin">
        <body>A pin is an object node for inputs and outputs to actions.</body>
      </ownedComment>
      <generalization xmi:type="uml:Generalization" xmi:id="Pin-_generalization.0" general="MultiplicityElement"/>
      <generalization xmi:type="uml:Generalization" xmi:id="Pin-_generalization.1" general="ObjectNode"/>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="PrimitiveType" name="PrimitiveType">
      <ownedComment xmi:type="uml:Comment" xmi:id="PrimitiveType-_ownedComment.0" annotatedElement="PrimitiveType">
        <body>A primitive type defines a predefined data type, without any relevant substructure (i.e., it has no parts in the context of UML). A primitive datatype may have an algebra and operations defined outside of UML, for example, mathematically.</body>
      </ownedComment>
      <generalization xmi:type="uml:Generalization" xmi:id="PrimitiveType-_generalization.0" general="DataType"/>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="Property" name="Property">
      <ownedComment xmi:type="uml:Comment" xmi:id="Property-_ownedComment.0" annotatedElement="Property">
        <body>A property is a structural feature of a classifier that characterizes instances of the classifier. A property related by ownedAttribute to a classifier (other than an association) represents an attribute and might also represent an association end. It relates an instance of the class to a value or set of values of the type of the attribute. A property related by memberEnd or its specializations to an association represents an end of the association. The type of the property is the type of the end of the association.</body>
      </ownedComment>
      <ownedComment xmi:type="uml:Comment" xmi:id="Property-_ownedComment.1" annotatedElement="Property">
        <body>A property represents a set of instances that are owned by a containing classifier instance.</body>
      </ownedComment>
      <ownedRule xmi:type="uml:Constraint" xmi:id="Property-multiplicity_of_composite" name="multiplicity_of_composite" constrainedElement="Property">
        <ownedComment xmi:type="uml:Comment" xmi:id="Property-multiplicity_of_composite-_ownedComment.0" annotatedElement="Property-multiplicity_of_composite">
          <body>A multiplicity on an aggregate end of a composite aggregation must not have an upper bound greater than 1.</body>
        </ownedComment>
        <ownedComment xmi:type="uml:Comment" xmi:id="Property-multiplicity_of_composite-_ownedComment.1" annotatedElement="Property-multiplicity_of_composite">
          <body>A multiplicity of a composite aggregation must not have an upper bound greater than 1.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="Property-multiplicity_of_composite-_specification">
          <language>OCL</language>
          <body>isComposite implies (upperBound()-&gt;isEmpty() or upperBound() &lt;= 1)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:type="uml:Constraint" xmi:id="Property-redefined_property_inherited" name="redefined_property_inherited" constrainedElement="Property">
        <ownedComment xmi:type="uml:Comment" xmi:id="Property-redefined_property_inherited-_ownedComment.0" annotatedElement="Property-redefined_property_inherited">
          <body>A redefined property must be inherited from a more general classifier containing the redefining property.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="Property-redefined_property_inherited-_specification">
          <language>OCL</language>
          <body>if (redefinedProperty-&gt;notEmpty()) then
  (redefinitionContext-&gt;notEmpty() and
      redefinedProperty-&gt;forAll(rp|
        ((redefinitionContext-&gt;collect(fc|
          fc.allParents()))-&gt;asSet())-&gt;collect(c| c.allFeatures())-&gt;asSet()-&gt;includes(rp))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:type="uml:Constraint" xmi:id="Property-subsetting_context_conforms" name="subsetting_context_conforms" constrainedElement="Property">
        <ownedComment xmi:type="uml:Comment" xmi:id="Property-subsetting_context_conforms-_ownedComment.0" annotatedElement="Property-subsetting_context_conforms">
          <body>Subsetting may only occur when the context of the subsetting property conforms to the context of the subsetted property.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="Property-subsetting_context_conforms-_specification">
          <language>OCL</language>
          <body>self.subsettedProperty-&gt;notEmpty() implies
  (self.subsettingContext()-&gt;notEmpty() and self.subsettingContext()-&gt;forAll (sc |
    self.subsettedProperty-&gt;forAll(sp |
      sp.subsettingContext()-&gt;exists(c | sc.conformsTo(c)))))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:type="uml:Constraint" xmi:id="Property-subsetting_rules" name="subsetting_rules" constrainedElement="Property">
        <ownedComment xmi:type="uml:Comment" xmi:id="Property-subsetting_rules-_ownedComment.0" annotatedElement="Property-subsetting_rules">
          <body>A subsetting property may strengthen the type of the subsetted property, and its upper bound may be less.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="Property-subsetting_rules-_specification">
          <language>OCL</language>
          <body>self.subsettedProperty-&gt;forAll(sp |
  self.type.conformsTo(sp.type) and
    ((self.upperBound()-&gt;notEmpty() and sp.upperBound()-&gt;notEmpty()) implies
      self.upperBound()&lt;=sp.upperBound() ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:type="uml:Constraint" xmi:id="Property-derived_union_is_read_only" name="derived_union_is_read_only" constrainedElement="Property">
        <ownedComment xmi:type="uml:Comment" xmi:id="Property-derived_union_is_read_only-_ownedComment.0" annotatedElement="Property-derived_union_is_read_only">
          <body>A derived union is read only.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="Property-derived_union_is_read_only-_specification">
          <language>OCL</language>
          <body>isDerivedUnion implies isReadOnly</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:type="uml:Constraint" xmi:id="Property-derived_union_is_derived" name="derived_union_is_derived" constrainedElement="Property">
        <ownedComment xmi:type="uml:Comment" xmi:id="Property-derived_union_is_derived-_ownedComment.0" annotatedElement="Property-derived_union_is_derived">
          <body>A derived union is derived.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="Property-derived_union_is_derived-_specification">
          <language>OCL</language>
          <body>isDerivedUnion implies isDerived</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:type="uml:Constraint" xmi:id="Property-subsetted_property_names" name="subsetted_property_names" constrainedElement="Property">
        <ownedComment xmi:type="uml:Comment" xmi:id="Property-subsetted_property_names-_ownedComment.0" annotatedElement="Property-subsetted_property_names">
          <body>A property may not subset a property with the same name.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="Property-subsetted_property_names-_specification">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <generalization xmi:type="uml:Generalization" xmi:id="Property-_generalization.0" general="StructuralFeature"/>
      <generalization xmi:type="uml:Generalization" xmi:id="Property-_generalization.1" general="ConnectableElement"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Property-aggregation" name="aggregation" visibility="public" type="AggregationKind">
        <ownedComment xmi:type="uml:Comment" xmi:id="Property-aggregation-_ownedComment.0" annotatedElement="Property-aggregation">
          <body>Specifies the kind of aggregation that applies to the Property.</body>
        </ownedComment>
        <defaultValue xmi:type="uml:InstanceValue" xmi:id="Property-aggregation-_defaultValue" type="AggregationKind" instance="AggregationKind-none"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Property-association" name="association" visibility="public" type="Association" subsettedProperty="A_member_memberNamespace-memberNamespace" association="A_memberEnd_association">
        <ownedComment xmi:type="uml:Comment" xmi:id="Property-association-_ownedComment.0" annotatedElement="Property-association">
          <body>References the association of which this property is a member, if any.</body>
        </ownedComment>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Property-association-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Property-class" name="class" visibility="public" type="Class" subsettedProperty="A_attribute_classifier-classifier A_ownedAttribute_structuredClassifier-structuredClassifier NamedElement-namespace" association="A_ownedAttribute_class">
        <ownedComment xmi:type="uml:Comment" xmi:id="Property-class-_ownedComment.0" annotatedElement="Property-class">
          <body>References the Class that owns the Property.</body>
        </ownedComment>
        <ownedComment xmi:type="uml:Comment" xmi:id="Property-class-_ownedComment.1" annotatedElement="Property-class">
          <body>References the Class that owns the Property.</body>
        </ownedComment>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Property-class-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Property-datatype" name="datatype" visibility="public" type="DataType" subsettedProperty="A_attribute_classifier-classifier NamedElement-namespace" association="A_ownedAttribute_datatype">
        <ownedComment xmi:type="uml:Comment" xmi:id="Property-datatype-_ownedComment.0" annotatedElement="Property-datatype">
          <body>The DataType that owns this Property.</body>
        </ownedComment>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Property-datatype-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Property-default" name="default" visibility="public" isDerived="true">
        <ownedComment xmi:type="uml:Comment" xmi:id="Property-default-_ownedComment.0" annotatedElement="Property-default">
          <body>Specifies a String that represents a value to be used when no argument is supplied for the Property.</body>
        </ownedComment>
        <ownedComment xmi:type="uml:Comment" xmi:id="Property-default-_ownedComment.1" annotatedElement="Property-default">
          <body>A String that is evaluated to give a default value for the Property when an object of the owning Classifier is instantiated.</body>
        </ownedComment>
        <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#String"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Property-default-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Property-defaultValue" name="defaultValue" visibility="public" type="ValueSpecification" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_defaultValue_owningProperty">
        <ownedComment xmi:type="uml:Comment" xmi:id="Property-defaultValue-_ownedComment.0" annotatedElement="Property-defaultValue">
          <body>A ValueSpecification that is evaluated to give a default value for the Property when an object of the owning Classifier is instantiated.</body>
        </ownedComment>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Property-defaultValue-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Property-interface" name="interface" visibility="public" type="Interface" subsettedProperty="A_attribute_classifier-classifier NamedElement-namespace" association="A_ownedAttribute_interface">
        <ownedComment xmi:type="uml:Comment" xmi:id="Property-interface-_ownedComment.0" annotatedElement="Property-interface">
          <body>References the Interface that owns the Property</body>
        </ownedComment>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Property-interface-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Property-isComposite" name="isComposite" visibility="public" isDerived="true">
        <ownedComment xmi:type="uml:Comment" xmi:id="Property-isComposite-_ownedComment.0" annotatedElement="Property-isComposite">
          <body>If isComposite is true, the object containing the attribute is a container for the object or value contained in the attribute.</body>
        </ownedComment>
        <ownedComment xmi:type="uml:Comment" xmi:id="Property-isComposite-_ownedComment.1" annotatedElement="Property-isComposite">
          <body>This is a derived value, indicating whether the aggregation of the Property is composite or not.</body>
        </ownedComment>
        <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Property-isComposite-_defaultValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Property-isDerived" name="isDerived" visibility="public">
        <ownedComment xmi:type="uml:Comment" xmi:id="Property-isDerived-_ownedComment.0" annotatedElement="Property-isDerived">
          <body>If isDerived is true, the value of the attribute is derived from information elsewhere.</body>
        </ownedComment>
        <ownedComment xmi:type="uml:Comment" xmi:id="Property-isDerived-_ownedComment.1" annotatedElement="Property-isDerived">
          <body>Specifies whether the Property is derived, i.e., whether its value or values can be computed from other information.</body>
        </ownedComment>
        <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Property-isDerived-_defaultValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Property-isDerivedUnion" name="isDerivedUnion" visibility="public">
        <ownedComment xmi:type="uml:Comment" xmi:id="Property-isDerivedUnion-_ownedComment.0" annotatedElement="Property-isDerivedUnion">
          <body>Specifies whether the property is derived as the union of all of the properties that are constrained to subset it.</body>
        </ownedComment>
        <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Property-isDerivedUnion-_defaultValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Property-isID" name="isID" visibility="public">
        <ownedComment xmi:type="uml:Comment" xmi:id="Property-isID-_ownedComment.0" annotatedElement="Property-isID">
          <body>True indicates this property can be used to uniquely identify an instance of the containing Class.</body>
        </ownedComment>
        <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Property-isID-_defaultValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Property-isReadOnly" name="isReadOnly" visibility="public" redefinedProperty="StructuralFeature-isReadOnly">
        <ownedComment xmi:type="uml:Comment" xmi:id="Property-isReadOnly-_ownedComment.0" annotatedElement="Property-isReadOnly">
          <body>If true, the attribute may only be read, and not written.</body>
        </ownedComment>
        <ownedComment xmi:type="uml:Comment" xmi:id="Property-isReadOnly-_ownedComment.1" annotatedElement="Property-isReadOnly">
          <body>If isReadOnly is true, the attribute may not be written to after initialization.</body>
        </ownedComment>
        <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Property-isReadOnly-_defaultValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Property-opposite" name="opposite" visibility="public" type="Property" isDerived="true" association="A_opposite_property">
        <ownedComment xmi:type="uml:Comment" xmi:id="Property-opposite-_ownedComment.0" annotatedElement="Property-opposite">
          <body>In the case where the property is one navigable end of a binary association with both ends navigable, this gives the other end.</body>
        </ownedComment>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Property-opposite-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Property-owningAssociation" name="owningAssociation" visibility="public" type="Association" subsettedProperty="RedefinableElement-redefinitionContext Property-association Feature-featuringClassifier NamedElement-namespace" association="A_ownedEnd_owningAssociation">
        <ownedComment xmi:type="uml:Comment" xmi:id="Property-owningAssociation-_ownedComment.0" annotatedElement="Property-owningAssociation">
          <body>References the owning association of this property, if any.</body>
        </ownedComment>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Property-owningAssociation-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Property-redefinedProperty" name="redefinedProperty" visibility="public" type="Property" subsettedProperty="RedefinableElement-redefinedElement" association="A_redefinedProperty_property">
        <ownedComment xmi:type="uml:Comment" xmi:id="Property-redefinedProperty-_ownedComment.0" annotatedElement="Property-redefinedProperty">
          <body>References the properties that are redefined by this property.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Property-redefinedProperty-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Property-redefinedProperty-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Property-subsettedProperty" name="subsettedProperty" visibility="public" type="Property" association="A_subsettedProperty_property">
        <ownedComment xmi:type="uml:Comment" xmi:id="Property-subsettedProperty-_ownedComment.0" annotatedElement="Property-subsettedProperty">
          <body>References the properties of which this property is constrained to be a subset.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Property-subsettedProperty-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Property-subsettedProperty-_lowerValue"/>
      </ownedAttribute>
      <ownedOperation xmi:type="uml:Operation" xmi:id="Property-default.1" name="default" visibility="public" isQuery="true" bodyCondition="Property-default.1-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="Property-default.1-_ownedComment.0" annotatedElement="Property-default.1">
          <body>Missing derivation for Property::/default : String</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="Property-default.1-spec" name="spec" constrainedElement="Property-default.1 Property-default">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="Property-default.1-spec-_specification">
            <language>OCL</language>
            <body>true</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="Property-default.1-result" name="result" visibility="public" direction="return">
          <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#String"/>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Property-default.1-result-_lowerValue"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:type="uml:Operation" xmi:id="Property-isAttribute" name="isAttribute" visibility="public" isQuery="true" bodyCondition="Property-isAttribute-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="Property-isAttribute-_ownedComment.0" annotatedElement="Property-isAttribute">
          <body>The query isAttribute() is true if the Property is defined as an attribute of some classifier.</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="Property-isAttribute-spec" name="spec" constrainedElement="Property-isAttribute">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="Property-isAttribute-spec-_specification">
            <language>OCL</language>
            <body>result = Classifier.allInstances-&gt;exists(c | c.attribute-&gt;includes(p))</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="Property-isAttribute-result" name="result" visibility="public" direction="return">
          <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
        </ownedParameter>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="Property-isAttribute-p" name="p" visibility="public" type="Property"/>
      </ownedOperation>
      <ownedOperation xmi:type="uml:Operation" xmi:id="Property-isComposite.1" name="isComposite" visibility="public" isQuery="true" bodyCondition="Property-isComposite.1-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="Property-isComposite.1-_ownedComment.0" annotatedElement="Property-isComposite.1">
          <body>The value of isComposite is true only if aggregation is composite.</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="Property-isComposite.1-spec" name="spec" constrainedElement="Property-isComposite.1 Property-isComposite">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="Property-isComposite.1-spec-_specification">
            <language>OCL</language>
            <body>result = (self.aggregation = #composite)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="Property-isComposite.1-result" name="result" visibility="public" direction="return">
          <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:type="uml:Operation" xmi:id="Property-isConsistentWith" name="isConsistentWith" visibility="public" isQuery="true" precondition="Property-isConsistentWith-pre" redefinedOperation="RedefinableElement-isConsistentWith" bodyCondition="Property-isConsistentWith-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="Property-isConsistentWith-_ownedComment.0" annotatedElement="Property-isConsistentWith">
          <body>The query isConsistentWith() specifies, for any two Properties in a context in which redefinition is possible, whether redefinition would be logically consistent. A redefining property is consistent with a redefined property if the type of the redefining property conforms to the type of the redefined property, and the multiplicity of the redefining property (if specified) is contained in the multiplicity of the redefined property.</body>
        </ownedComment>
        <ownedComment xmi:type="uml:Comment" xmi:id="Property-isConsistentWith-_ownedComment.1" annotatedElement="Property-isConsistentWith">
          <body>The query isConsistentWith() specifies, for any two Properties in a context in which redefinition is possible, whether redefinition would be logically consistent. A redefining property is consistent with a redefined property if the type of the redefining property conforms to the type of the redefined property, the multiplicity of the redefining property (if specified) is contained in the multiplicity of the redefined property.</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="Property-isConsistentWith-pre" name="pre" constrainedElement="Property-isConsistentWith">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="Property-isConsistentWith-pre-_specification">
            <language>OCL</language>
            <body>redefinee.isRedefinitionContextValid(self)</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:type="uml:Constraint" xmi:id="Property-isConsistentWith-spec" name="spec" constrainedElement="Property-isConsistentWith">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="Property-isConsistentWith-spec-_specification">
            <language>OCL</language>
            <body>result = redefinee.oclIsKindOf(Property) and 
  let prop : Property = redefinee.oclAsType(Property) in 
  (prop.type.conformsTo(self.type) and 
  ((prop.lowerBound()-&gt;notEmpty() and self.lowerBound()-&gt;notEmpty()) implies prop.lowerBound() &gt;= self.lowerBound()) and 
  ((prop.upperBound()-&gt;notEmpty() and self.upperBound()-&gt;notEmpty()) implies prop.lowerBound() &lt;= self.lowerBound()) and 
  (self.isComposite implies prop.isComposite))</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="Property-isConsistentWith-result" name="result" visibility="public" direction="return">
          <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
        </ownedParameter>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="Property-isConsistentWith-redefinee" name="redefinee" visibility="public" type="RedefinableElement"/>
      </ownedOperation>
      <ownedOperation xmi:type="uml:Operation" xmi:id="Property-isNavigable" name="isNavigable" visibility="public" isQuery="true" bodyCondition="Property-isNavigable-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="Property-isNavigable-_ownedComment.0" annotatedElement="Property-isNavigable">
          <body>The query isNavigable() indicates whether it is possible to navigate across the property.</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="Property-isNavigable-spec" name="spec" constrainedElement="Property-isNavigable">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="Property-isNavigable-spec-_specification">
            <language>OCL</language>
            <body>result = not classifier-&gt;isEmpty() or association.owningAssociation.navigableOwnedEnd-&gt;includes(self)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="Property-isNavigable-result" name="result" visibility="public" direction="return">
          <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:type="uml:Operation" xmi:id="Property-opposite.1" name="opposite" visibility="public" isQuery="true" bodyCondition="Property-opposite.1-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="Property-opposite.1-_ownedComment.0" annotatedElement="Property-opposite.1">
          <body>If this property is owned by a class, associated with a binary association, and the other end of the association is also owned by a class, then opposite gives the other end.</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="Property-opposite.1-spec" name="spec" constrainedElement="Property-opposite.1 Property-opposite">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="Property-opposite.1-spec-_specification">
            <language>OCL</language>
            <body>result = if owningAssociation-&gt;isEmpty() and association.memberEnd-&gt;size() = 2
  then
    let otherEnd = (association.memberEnd - self)-&gt;any() in
      if otherEnd.owningAssociation-&gt;isEmpty() then otherEnd else Set{} endif
    else Set {}
    endif</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="Property-opposite.1-result" name="result" visibility="public" type="Property" direction="return"/>
      </ownedOperation>
      <ownedOperation xmi:type="uml:Operation" xmi:id="Property-subsettingContext" name="subsettingContext" visibility="public" isQuery="true" bodyCondition="Property-subsettingContext-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="Property-subsettingContext-_ownedComment.0" annotatedElement="Property-subsettingContext">
          <body>The query subsettingContext() gives the context for subsetting a property. It consists, in the case of an attribute, of the corresponding classifier, and in the case of an association end, all of the classifiers at the other ends.</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="Property-subsettingContext-spec" name="spec" constrainedElement="Property-subsettingContext">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="Property-subsettingContext-spec-_specification">
            <language>OCL</language>
            <body>result = if association-&gt;notEmpty()
then association.endType-type
else if classifier-&gt;notEmpty() then Set{classifier} else Set{} endif
endif</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="Property-subsettingContext-result" name="result" visibility="public" type="Type" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Property-subsettingContext-result-_upperValue" value="*"/>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Property-subsettingContext-result-_lowerValue"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="Realization" name="Realization">
      <ownedComment xmi:type="uml:Comment" xmi:id="Realization-_ownedComment.0" annotatedElement="Realization">
        <body>Realization is a specialized abstraction relationship between two sets of model elements, one representing a specification (the supplier) and the other represents an implementation of the latter (the client). Realization can be used to model stepwise refinement, optimizations, transformations, templates, model synthesis, framework composition, etc.</body>
      </ownedComment>
      <generalization xmi:type="uml:Generalization" xmi:id="Realization-_generalization.0" general="Abstraction"/>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="Reception" name="Reception">
      <ownedComment xmi:type="uml:Comment" xmi:id="Reception-_ownedComment.0" annotatedElement="Reception">
        <body>A reception is a declaration stating that a classifier is prepared to react to the receipt of a signal. A reception designates a signal and specifies the expected behavioral response. The details of handling a signal are specified by the behavior associated with the reception or the classifier itself.</body>
      </ownedComment>
      <ownedRule xmi:type="uml:Constraint" xmi:id="Reception-not_query" name="not_query" constrainedElement="Reception">
        <ownedComment xmi:type="uml:Comment" xmi:id="Reception-not_query-_ownedComment.0" annotatedElement="Reception-not_query">
          <body>A Reception can not be a query.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="Reception-not_query-_specification">
          <language>OCL</language>
          <body>not self.isQuery</body>
        </specification>
      </ownedRule>
      <generalization xmi:type="uml:Generalization" xmi:id="Reception-_generalization.0" general="BehavioralFeature"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Reception-signal" name="signal" visibility="public" type="Signal" association="A_signal_reception">
        <ownedComment xmi:type="uml:Comment" xmi:id="Reception-signal-_ownedComment.0" annotatedElement="Reception-signal">
          <body>The signal that this reception handles.</body>
        </ownedComment>
      </ownedAttribute>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="RedefinableElement" name="RedefinableElement" isAbstract="true">
      <ownedComment xmi:type="uml:Comment" xmi:id="RedefinableElement-_ownedComment.0" annotatedElement="RedefinableElement">
        <body>A redefinable element is an element that, when defined in the context of a classifier, can be redefined more specifically or differently in the context of another classifier that specializes (directly or indirectly) the context classifier.</body>
      </ownedComment>
      <ownedRule xmi:type="uml:Constraint" xmi:id="RedefinableElement-redefinition_context_valid" name="redefinition_context_valid" constrainedElement="RedefinableElement">
        <ownedComment xmi:type="uml:Comment" xmi:id="RedefinableElement-redefinition_context_valid-_ownedComment.0" annotatedElement="RedefinableElement-redefinition_context_valid">
          <body>At least one of the redefinition contexts of the redefining element must be a specialization of at least one of the redefinition contexts for each redefined element.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="RedefinableElement-redefinition_context_valid-_specification">
          <language>OCL</language>
          <body>self.redefinedElement-&gt;forAll(e | self.isRedefinitionContextValid(e))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:type="uml:Constraint" xmi:id="RedefinableElement-redefinition_consistent" name="redefinition_consistent" constrainedElement="RedefinableElement">
        <ownedComment xmi:type="uml:Comment" xmi:id="RedefinableElement-redefinition_consistent-_ownedComment.0" annotatedElement="RedefinableElement-redefinition_consistent">
          <body>A redefining element must be consistent with each redefined element.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="RedefinableElement-redefinition_consistent-_specification">
          <language>OCL</language>
          <body>self.redefinedElement-&gt;forAll(re | re.isConsistentWith(self))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:type="uml:Constraint" xmi:id="RedefinableElement-non_leaf_redefinition" name="non_leaf_redefinition" constrainedElement="RedefinableElement">
        <ownedComment xmi:type="uml:Comment" xmi:id="RedefinableElement-non_leaf_redefinition-_ownedComment.0" annotatedElement="RedefinableElement-non_leaf_redefinition">
          <body>A redefinable element can only redefine non-leaf redefinable elements</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="RedefinableElement-non_leaf_redefinition-_specification">
          <language>OCL</language>
          <body>self.redefinedElement-&gt;forAll(not isLeaf)</body>
        </specification>
      </ownedRule>
      <generalization xmi:type="uml:Generalization" xmi:id="RedefinableElement-_generalization.0" general="NamedElement"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="RedefinableElement-isLeaf" name="isLeaf" visibility="public">
        <ownedComment xmi:type="uml:Comment" xmi:id="RedefinableElement-isLeaf-_ownedComment.0" annotatedElement="RedefinableElement-isLeaf">
          <body>Indicates whether it is possible to further redefine a RedefinableElement. If the value is true, then it is not possible to further redefine the RedefinableElement. Note that this property is preserved through package merge operations; that is, the capability to redefine a RedefinableElement (i.e., isLeaf=false) must be preserved in the resulting RedefinableElement of a package merge operation where a RedefinableElement with isLeaf=false is merged with a matching RedefinableElement with isLeaf=true: the resulting RedefinableElement will have isLeaf=false. Default value is false.</body>
        </ownedComment>
        <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="RedefinableElement-isLeaf-_defaultValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="RedefinableElement-redefinedElement" name="redefinedElement" visibility="public" type="RedefinableElement" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="A_redefinedElement_redefinableElement">
        <ownedComment xmi:type="uml:Comment" xmi:id="RedefinableElement-redefinedElement-_ownedComment.0" annotatedElement="RedefinableElement-redefinedElement">
          <body>The redefinable element that is being redefined by this element.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="RedefinableElement-redefinedElement-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="RedefinableElement-redefinedElement-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="RedefinableElement-redefinitionContext" name="redefinitionContext" visibility="public" type="Classifier" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="A_redefinitionContext_redefinableElement">
        <ownedComment xmi:type="uml:Comment" xmi:id="RedefinableElement-redefinitionContext-_ownedComment.0" annotatedElement="RedefinableElement-redefinitionContext">
          <body>References the contexts that this element may be redefined from.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="RedefinableElement-redefinitionContext-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="RedefinableElement-redefinitionContext-_lowerValue"/>
      </ownedAttribute>
      <ownedOperation xmi:type="uml:Operation" xmi:id="RedefinableElement-isConsistentWith" name="isConsistentWith" visibility="public" isQuery="true" precondition="RedefinableElement-isConsistentWith-pre" bodyCondition="RedefinableElement-isConsistentWith-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="RedefinableElement-isConsistentWith-_ownedComment.0" annotatedElement="RedefinableElement-isConsistentWith">
          <body>The query isConsistentWith() specifies, for any two RedefinableElements in a context in which redefinition is possible, whether redefinition would be logically consistent. By default, this is false; this operation must be overridden for subclasses of RedefinableElement to define the consistency conditions.</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="RedefinableElement-isConsistentWith-spec" name="spec" constrainedElement="RedefinableElement-isConsistentWith">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="RedefinableElement-isConsistentWith-spec-_specification">
            <language>OCL</language>
            <body>result = false</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:type="uml:Constraint" xmi:id="RedefinableElement-isConsistentWith-pre" name="pre" constrainedElement="RedefinableElement-isConsistentWith">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="RedefinableElement-isConsistentWith-pre-_specification">
            <language>OCL</language>
            <body>redefinee.isRedefinitionContextValid(self)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="RedefinableElement-isConsistentWith-result" name="result" visibility="public" direction="return">
          <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
        </ownedParameter>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="RedefinableElement-isConsistentWith-redefinee" name="redefinee" visibility="public" type="RedefinableElement"/>
      </ownedOperation>
      <ownedOperation xmi:type="uml:Operation" xmi:id="RedefinableElement-isRedefinitionContextValid" name="isRedefinitionContextValid" visibility="public" isQuery="true" bodyCondition="RedefinableElement-isRedefinitionContextValid-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="RedefinableElement-isRedefinitionContextValid-_ownedComment.0" annotatedElement="RedefinableElement-isRedefinitionContextValid">
          <body>The query isRedefinitionContextValid() specifies whether the redefinition contexts of this RedefinableElement are properly related to the redefinition contexts of the specified RedefinableElement to allow this element to redefine the other. By default at least one of the redefinition contexts of this element must be a specialization of at least one of the redefinition contexts of the specified element.</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="RedefinableElement-isRedefinitionContextValid-spec" name="spec" constrainedElement="RedefinableElement-isRedefinitionContextValid">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="RedefinableElement-isRedefinitionContextValid-spec-_specification">
            <language>OCL</language>
            <body>result = redefinitionContext-&gt;exists(c | c.allParents()-&gt;includes(redefined.redefinitionContext)))</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="RedefinableElement-isRedefinitionContextValid-result" name="result" visibility="public" direction="return">
          <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
        </ownedParameter>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="RedefinableElement-isRedefinitionContextValid-redefined" name="redefined" visibility="public" type="RedefinableElement"/>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="Relationship" name="Relationship" isAbstract="true">
      <ownedComment xmi:type="uml:Comment" xmi:id="Relationship-_ownedComment.0" annotatedElement="Relationship">
        <body>Relationship is an abstract concept that specifies some kind of relationship between elements.</body>
      </ownedComment>
      <generalization xmi:type="uml:Generalization" xmi:id="Relationship-_generalization.0" general="Element"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Relationship-relatedElement" name="relatedElement" visibility="public" type="Element" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="A_relatedElement_relationship">
        <ownedComment xmi:type="uml:Comment" xmi:id="Relationship-relatedElement-_ownedComment.0" annotatedElement="Relationship-relatedElement">
          <body>Specifies the elements related by the Relationship.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Relationship-relatedElement-_upperValue" value="*"/>
      </ownedAttribute>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="SendSignalAction" name="SendSignalAction">
      <ownedComment xmi:type="uml:Comment" xmi:id="SendSignalAction-_ownedComment.0" annotatedElement="SendSignalAction">
        <body>A send signal action is an action that creates a signal instance from its inputs, and transmits it to the target object, where it may cause the firing of a state machine transition or the execution of an activity. The argument values are available to the execution of associated behaviors. The requestor continues execution immediately. Any reply message is ignored and is not transmitted to the requestor. If the input is already a signal instance, use a send object action.</body>
      </ownedComment>
      <ownedRule xmi:type="uml:Constraint" xmi:id="SendSignalAction-type_ordering_multiplicity" name="type_ordering_multiplicity" constrainedElement="SendSignalAction">
        <ownedComment xmi:type="uml:Comment" xmi:id="SendSignalAction-type_ordering_multiplicity-_ownedComment.0" annotatedElement="SendSignalAction-type_ordering_multiplicity">
          <body>The type, ordering, and multiplicity of an argument pin must be the same as the corresponding attribute of the signal.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="SendSignalAction-type_ordering_multiplicity-_specification">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:type="uml:Constraint" xmi:id="SendSignalAction-number_order" name="number_order" constrainedElement="SendSignalAction">
        <ownedComment xmi:type="uml:Comment" xmi:id="SendSignalAction-number_order-_ownedComment.0" annotatedElement="SendSignalAction-number_order">
          <body>The number and order of argument pins must be the same as the number and order of attributes in the signal.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="SendSignalAction-number_order-_specification">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <generalization xmi:type="uml:Generalization" xmi:id="SendSignalAction-_generalization.0" general="InvocationAction"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="SendSignalAction-signal" name="signal" visibility="public" type="Signal" association="A_signal_sendSignalAction">
        <ownedComment xmi:type="uml:Comment" xmi:id="SendSignalAction-signal-_ownedComment.0" annotatedElement="SendSignalAction-signal">
          <body>The type of signal transmitted to the target object.</body>
        </ownedComment>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="SendSignalAction-target" name="target" visibility="public" type="InputPin" aggregation="composite" subsettedProperty="Action-input" association="A_target_sendSignalAction">
        <ownedComment xmi:type="uml:Comment" xmi:id="SendSignalAction-target-_ownedComment.0" annotatedElement="SendSignalAction-target">
          <body>The target object to which the signal is sent.</body>
        </ownedComment>
      </ownedAttribute>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="Signal" name="Signal">
      <ownedComment xmi:type="uml:Comment" xmi:id="Signal-_ownedComment.0" annotatedElement="Signal">
        <body>A signal is a specification of send request instances communicated between objects. The receiving object handles the received request instances as specified by its receptions. The data carried by a send request (which was passed to it by the send invocation occurrence that caused that request) are represented as attributes of the signal. A signal is defined independently of the classifiers handling the signal occurrence.</body>
      </ownedComment>
      <generalization xmi:type="uml:Generalization" xmi:id="Signal-_generalization.0" general="Classifier"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Signal-ownedAttribute" name="ownedAttribute" visibility="public" type="Property" isOrdered="true" aggregation="composite" subsettedProperty="Namespace-ownedMember Classifier-attribute" association="A_ownedAttribute_owningSignal">
        <ownedComment xmi:type="uml:Comment" xmi:id="Signal-ownedAttribute-_ownedComment.0" annotatedElement="Signal-ownedAttribute">
          <body>The attributes owned by the signal.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Signal-ownedAttribute-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Signal-ownedAttribute-_lowerValue"/>
      </ownedAttribute>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="SignalEvent" name="SignalEvent">
      <ownedComment xmi:type="uml:Comment" xmi:id="SignalEvent-_ownedComment.0" annotatedElement="SignalEvent">
        <body>A signal event represents the receipt of an asynchronous signal instance. A signal event may, for example, cause a state machine to trigger a transition.</body>
      </ownedComment>
      <generalization xmi:type="uml:Generalization" xmi:id="SignalEvent-_generalization.0" general="MessageEvent"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="SignalEvent-signal" name="signal" visibility="public" type="Signal" association="A_signal_signalEvent">
        <ownedComment xmi:type="uml:Comment" xmi:id="SignalEvent-signal-_ownedComment.0" annotatedElement="SignalEvent-signal">
          <body>The specific signal that is associated with this event.</body>
        </ownedComment>
      </ownedAttribute>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="Slot" name="Slot">
      <ownedComment xmi:type="uml:Comment" xmi:id="Slot-_ownedComment.0" annotatedElement="Slot">
        <body>A slot specifies that an entity modeled by an instance specification has a value or values for a specific structural feature.</body>
      </ownedComment>
      <generalization xmi:type="uml:Generalization" xmi:id="Slot-_generalization.0" general="Element"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Slot-definingFeature" name="definingFeature" visibility="public" type="StructuralFeature" association="A_definingFeature_slot">
        <ownedComment xmi:type="uml:Comment" xmi:id="Slot-definingFeature-_ownedComment.0" annotatedElement="Slot-definingFeature">
          <body>The structural feature that specifies the values that may be held by the slot.</body>
        </ownedComment>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Slot-owningInstance" name="owningInstance" visibility="public" type="InstanceSpecification" subsettedProperty="Element-owner" association="A_slot_owningInstance">
        <ownedComment xmi:type="uml:Comment" xmi:id="Slot-owningInstance-_ownedComment.0" annotatedElement="Slot-owningInstance">
          <body>The instance specification that owns this slot.</body>
        </ownedComment>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Slot-value" name="value" visibility="public" type="ValueSpecification" isOrdered="true" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_value_owningSlot">
        <ownedComment xmi:type="uml:Comment" xmi:id="Slot-value-_ownedComment.0" annotatedElement="Slot-value">
          <body>The value or values corresponding to the defining feature for the owning instance specification.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Slot-value-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Slot-value-_lowerValue"/>
      </ownedAttribute>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="StateInvariant" name="StateInvariant">
      <ownedComment xmi:type="uml:Comment" xmi:id="StateInvariant-_ownedComment.0" annotatedElement="StateInvariant">
        <body>A state invariant is a runtime constraint on the participants of the interaction. It may be used to specify a variety of different kinds of constraints, such as values of attributes or variables, internal or external states, and so on. A state invariant is an interaction fragment and it is placed on a lifeline.</body>
      </ownedComment>
      <generalization xmi:type="uml:Generalization" xmi:id="StateInvariant-_generalization.0" general="InteractionFragment"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="StateInvariant-covered" name="covered" visibility="public" type="Lifeline" redefinedProperty="InteractionFragment-covered" association="A_covered_stateInvariant">
        <ownedComment xmi:type="uml:Comment" xmi:id="StateInvariant-covered-_ownedComment.0" annotatedElement="StateInvariant-covered">
          <body>References the Lifeline on which the StateInvariant appears.</body>
        </ownedComment>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="StateInvariant-invariant" name="invariant" visibility="public" type="Constraint" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_invariant_stateInvariant">
        <ownedComment xmi:type="uml:Comment" xmi:id="StateInvariant-invariant-_ownedComment.0" annotatedElement="StateInvariant-invariant">
          <body>A Constraint that should hold at runtime for this StateInvariant</body>
        </ownedComment>
      </ownedAttribute>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="StructuralFeature" name="StructuralFeature" isAbstract="true">
      <ownedComment xmi:type="uml:Comment" xmi:id="StructuralFeature-_ownedComment.0" annotatedElement="StructuralFeature">
        <body>By specializing multiplicity element, it supports a multiplicity that specifies valid cardinalities for the collection of values associated with an instantiation of the structural feature.</body>
      </ownedComment>
      <ownedComment xmi:type="uml:Comment" xmi:id="StructuralFeature-_ownedComment.1" annotatedElement="StructuralFeature">
        <body>A structural feature is a typed feature of a classifier that specifies the structure of instances of the classifier.</body>
      </ownedComment>
      <generalization xmi:type="uml:Generalization" xmi:id="StructuralFeature-_generalization.0" general="MultiplicityElement"/>
      <generalization xmi:type="uml:Generalization" xmi:id="StructuralFeature-_generalization.1" general="Feature"/>
      <generalization xmi:type="uml:Generalization" xmi:id="StructuralFeature-_generalization.2" general="TypedElement"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="StructuralFeature-isReadOnly" name="isReadOnly" visibility="public">
        <ownedComment xmi:type="uml:Comment" xmi:id="StructuralFeature-isReadOnly-_ownedComment.0" annotatedElement="StructuralFeature-isReadOnly">
          <body>States whether the feature's value may be modified by a client.</body>
        </ownedComment>
        <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="StructuralFeature-isReadOnly-_defaultValue"/>
      </ownedAttribute>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="StructuredClassifier" name="StructuredClassifier" isAbstract="true">
      <ownedComment xmi:type="uml:Comment" xmi:id="StructuredClassifier-_ownedComment.0" annotatedElement="StructuredClassifier">
        <body>A structured classifier is an abstract metaclass that represents any classifier whose behavior can be fully or partly described by the collaboration of owned or referenced instances.</body>
      </ownedComment>
      <ownedRule xmi:type="uml:Constraint" xmi:id="StructuredClassifier-multiplicities" name="multiplicities" constrainedElement="StructuredClassifier">
        <ownedComment xmi:type="uml:Comment" xmi:id="StructuredClassifier-multiplicities-_ownedComment.0" annotatedElement="StructuredClassifier-multiplicities">
          <body>The multiplicities on connected elements must be consistent.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="StructuredClassifier-multiplicities-_specification">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <generalization xmi:type="uml:Generalization" xmi:id="StructuredClassifier-_generalization.0" general="Classifier"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="StructuredClassifier-ownedAttribute" name="ownedAttribute" visibility="public" type="Property" isOrdered="true" aggregation="composite" subsettedProperty="Namespace-ownedMember StructuredClassifier-role Classifier-attribute" association="A_ownedAttribute_structuredClassifier">
        <ownedComment xmi:type="uml:Comment" xmi:id="StructuredClassifier-ownedAttribute-_ownedComment.0" annotatedElement="StructuredClassifier-ownedAttribute">
          <body>References the properties owned by the classifier.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="StructuredClassifier-ownedAttribute-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="StructuredClassifier-ownedAttribute-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="StructuredClassifier-ownedConnector" name="ownedConnector" visibility="public" type="Connector" aggregation="composite" subsettedProperty="Namespace-ownedMember Classifier-feature A_redefinitionContext_redefinableElement-redefinableElement" association="A_ownedConnector_structuredClassifier">
        <ownedComment xmi:type="uml:Comment" xmi:id="StructuredClassifier-ownedConnector-_ownedComment.0" annotatedElement="StructuredClassifier-ownedConnector">
          <body>References the connectors owned by the classifier.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="StructuredClassifier-ownedConnector-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="StructuredClassifier-ownedConnector-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="StructuredClassifier-part" name="part" visibility="public" type="Property" isReadOnly="true" isDerived="true" association="A_part_structuredClassifier">
        <ownedComment xmi:type="uml:Comment" xmi:id="StructuredClassifier-part-_ownedComment.0" annotatedElement="StructuredClassifier-part">
          <body>References the properties specifying instances that the classifier owns by composition. This association is derived, selecting those owned properties where isComposite is true.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="StructuredClassifier-part-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="StructuredClassifier-part-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="StructuredClassifier-role" name="role" visibility="public" type="ConnectableElement" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="Namespace-member" association="A_role_structuredClassifier">
        <ownedComment xmi:type="uml:Comment" xmi:id="StructuredClassifier-role-_ownedComment.0" annotatedElement="StructuredClassifier-role">
          <body>References the roles that instances may play in this classifier.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="StructuredClassifier-role-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="StructuredClassifier-role-_lowerValue"/>
      </ownedAttribute>
      <ownedOperation xmi:type="uml:Operation" xmi:id="StructuredClassifier-part.1" name="part" visibility="public" isQuery="true" bodyCondition="StructuredClassifier-part.1-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="StructuredClassifier-part.1-_ownedComment.0" annotatedElement="StructuredClassifier-part.1">
          <body>Missing derivation for StructuredClassifier::/part : Property</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="StructuredClassifier-part.1-spec" name="spec" constrainedElement="StructuredClassifier-part.1 StructuredClassifier-part">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="StructuredClassifier-part.1-spec-_specification">
            <language>OCL</language>
            <body>true</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="StructuredClassifier-part.1-result" name="result" visibility="public" type="Property" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="StructuredClassifier-part.1-result-_upperValue" value="*"/>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="StructuredClassifier-part.1-result-_lowerValue"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="Substitution" name="Substitution">
      <ownedComment xmi:type="uml:Comment" xmi:id="Substitution-_ownedComment.0" annotatedElement="Substitution">
        <body>A substitution is a relationship between two classifiers signifies that the substituting classifier complies with the contract specified by the contract classifier. This implies that instances of the substituting classifier are runtime substitutable where instances of the contract classifier are expected.</body>
      </ownedComment>
      <generalization xmi:type="uml:Generalization" xmi:id="Substitution-_generalization.0" general="Realization"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Substitution-contract" name="contract" visibility="public" type="Classifier" subsettedProperty="Dependency-supplier" association="A_contract_substitution">
        <ownedComment xmi:type="uml:Comment" xmi:id="Substitution-contract-_ownedComment.0" annotatedElement="Substitution-contract">
          <body>The contract with which the substituting classifier complies.</body>
        </ownedComment>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Substitution-substitutingClassifier" name="substitutingClassifier" visibility="public" type="Classifier" subsettedProperty="Element-owner Dependency-client" association="A_substitution_substitutingClassifier">
        <ownedComment xmi:type="uml:Comment" xmi:id="Substitution-substitutingClassifier-_ownedComment.0" annotatedElement="Substitution-substitutingClassifier">
          <body>Instances of the substituting classifier are runtime substitutable where instances of the contract classifier are expected.</body>
        </ownedComment>
      </ownedAttribute>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="Trigger" name="Trigger">
      <ownedComment xmi:type="uml:Comment" xmi:id="Trigger-_ownedComment.0" annotatedElement="Trigger">
        <body>A trigger relates an event to a behavior that may affect an instance of the classifier.</body>
      </ownedComment>
      <generalization xmi:type="uml:Generalization" xmi:id="Trigger-_generalization.0" general="NamedElement"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Trigger-event" name="event" visibility="public" type="Event" association="A_event_trigger">
        <ownedComment xmi:type="uml:Comment" xmi:id="Trigger-event-_ownedComment.0" annotatedElement="Trigger-event">
          <body>The event that causes the trigger.</body>
        </ownedComment>
      </ownedAttribute>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="Type" name="Type" isAbstract="true">
      <ownedComment xmi:type="uml:Comment" xmi:id="Type-_ownedComment.0" annotatedElement="Type">
        <body>A type constrains the values represented by a typed element.</body>
      </ownedComment>
      <ownedComment xmi:type="uml:Comment" xmi:id="Type-_ownedComment.1" annotatedElement="Type">
        <body>A type is a named element that is used as the type for a typed element. A type can be contained in a package.</body>
      </ownedComment>
      <generalization xmi:type="uml:Generalization" xmi:id="Type-_generalization.0" general="PackageableElement"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="Type-package" name="package" visibility="public" type="Package" subsettedProperty="A_packagedElement_owningPackage-owningPackage" association="A_ownedType_package">
        <ownedComment xmi:type="uml:Comment" xmi:id="Type-package-_ownedComment.0" annotatedElement="Type-package">
          <body>Specifies the owning package of this classifier, if any.</body>
        </ownedComment>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Type-package-_lowerValue"/>
      </ownedAttribute>
      <ownedOperation xmi:type="uml:Operation" xmi:id="Type-conformsTo" name="conformsTo" visibility="public" isQuery="true" bodyCondition="Type-conformsTo-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="Type-conformsTo-_ownedComment.0" annotatedElement="Type-conformsTo">
          <body>The query conformsTo() gives true for a type that conforms to another. By default, two types do not conform to each other. This query is intended to be redefined for specific conformance situations.</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="Type-conformsTo-spec" name="spec" constrainedElement="Type-conformsTo">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="Type-conformsTo-spec-_specification">
            <language>OCL</language>
            <body>result = false</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="Type-conformsTo-result" name="result" visibility="public" direction="return">
          <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
        </ownedParameter>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="Type-conformsTo-other" name="other" visibility="public" type="Type"/>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="TypedElement" name="TypedElement" isAbstract="true">
      <ownedComment xmi:type="uml:Comment" xmi:id="TypedElement-_ownedComment.0" annotatedElement="TypedElement">
        <body>A typed element is a kind of named element that represents an element with a type.</body>
      </ownedComment>
      <ownedComment xmi:type="uml:Comment" xmi:id="TypedElement-_ownedComment.1" annotatedElement="TypedElement">
        <body>A typed element has a type.</body>
      </ownedComment>
      <generalization xmi:type="uml:Generalization" xmi:id="TypedElement-_generalization.0" general="NamedElement"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="TypedElement-type" name="type" visibility="public" type="Type" association="A_type_typedElement">
        <ownedComment xmi:type="uml:Comment" xmi:id="TypedElement-type-_ownedComment.0" annotatedElement="TypedElement-type">
          <body>This information is derived from the return result for this Operation.</body>
        </ownedComment>
        <ownedComment xmi:type="uml:Comment" xmi:id="TypedElement-type-_ownedComment.1" annotatedElement="TypedElement-type">
          <body>The type of the TypedElement.</body>
        </ownedComment>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="TypedElement-type-_lowerValue"/>
      </ownedAttribute>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="Usage" name="Usage">
      <ownedComment xmi:type="uml:Comment" xmi:id="Usage-_ownedComment.0" annotatedElement="Usage">
        <body>A usage is a relationship in which one element requires another element (or set of elements) for its full implementation or operation. A usage is a dependency in which the client requires the presence of the supplier.</body>
      </ownedComment>
      <generalization xmi:type="uml:Generalization" xmi:id="Usage-_generalization.0" general="Dependency"/>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="UseCase" name="UseCase">
      <ownedComment xmi:type="uml:Comment" xmi:id="UseCase-_ownedComment.0" annotatedElement="UseCase">
        <body>A use case is the specification of a set of actions performed by a system, which yields an observable result that is, typically, of value for one or more actors or other stakeholders of the system.</body>
      </ownedComment>
      <ownedRule xmi:type="uml:Constraint" xmi:id="UseCase-must_have_name" name="must_have_name" constrainedElement="UseCase">
        <ownedComment xmi:type="uml:Comment" xmi:id="UseCase-must_have_name-_ownedComment.0" annotatedElement="UseCase-must_have_name">
          <body>A UseCase must have a name.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="UseCase-must_have_name-_specification">
          <language>OCL</language>
          <body>self.name -&gt; notEmpty ()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:type="uml:Constraint" xmi:id="UseCase-binary_associations" name="binary_associations" constrainedElement="UseCase">
        <ownedComment xmi:type="uml:Comment" xmi:id="UseCase-binary_associations-_ownedComment.0" annotatedElement="UseCase-binary_associations">
          <body>UseCases can only be involved in binary Associations.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="UseCase-binary_associations-_specification">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:type="uml:Constraint" xmi:id="UseCase-no_association_to_use_case" name="no_association_to_use_case" constrainedElement="UseCase">
        <ownedComment xmi:type="uml:Comment" xmi:id="UseCase-no_association_to_use_case-_ownedComment.0" annotatedElement="UseCase-no_association_to_use_case">
          <body>UseCases can not have Associations to UseCases specifying the same subject.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="UseCase-no_association_to_use_case-_specification">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:type="uml:Constraint" xmi:id="UseCase-cannot_include_self" name="cannot_include_self" constrainedElement="UseCase">
        <ownedComment xmi:type="uml:Comment" xmi:id="UseCase-cannot_include_self-_ownedComment.0" annotatedElement="UseCase-cannot_include_self">
          <body>A use case cannot include use cases that directly or indirectly include it.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="UseCase-cannot_include_self-_specification">
          <language>OCL</language>
          <body>not self.allIncludedUseCases()-&gt;includes(self)</body>
        </specification>
      </ownedRule>
      <generalization xmi:type="uml:Generalization" xmi:id="UseCase-_generalization.0" general="BehavioredClassifier"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="UseCase-extend" name="extend" visibility="public" type="Extend" aggregation="composite" subsettedProperty="Namespace-ownedMember A_source_directedRelationship-directedRelationship" association="A_extend_extension">
        <ownedComment xmi:type="uml:Comment" xmi:id="UseCase-extend-_ownedComment.0" annotatedElement="UseCase-extend">
          <body>References the Extend relationships owned by this use case.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="UseCase-extend-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="UseCase-extend-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="UseCase-extensionPoint" name="extensionPoint" visibility="public" type="ExtensionPoint" aggregation="composite" subsettedProperty="Namespace-ownedMember" association="A_extensionPoint_useCase">
        <ownedComment xmi:type="uml:Comment" xmi:id="UseCase-extensionPoint-_ownedComment.0" annotatedElement="UseCase-extensionPoint">
          <body>References the ExtensionPoints owned by the use case.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="UseCase-extensionPoint-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="UseCase-extensionPoint-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="UseCase-include" name="include" visibility="public" type="Include" aggregation="composite" subsettedProperty="Namespace-ownedMember A_source_directedRelationship-directedRelationship" association="A_include_includingCase">
        <ownedComment xmi:type="uml:Comment" xmi:id="UseCase-include-_ownedComment.0" annotatedElement="UseCase-include">
          <body>References the Include relationships owned by this use case.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="UseCase-include-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="UseCase-include-_lowerValue"/>
      </ownedAttribute>
      <ownedAttribute xmi:type="uml:Property" xmi:id="UseCase-subject" name="subject" visibility="public" type="Classifier" association="A_subject_useCase">
        <ownedComment xmi:type="uml:Comment" xmi:id="UseCase-subject-_ownedComment.0" annotatedElement="UseCase-subject">
          <body>References the subjects to which this use case applies. The subject or its parts realize all the use cases that apply to this subject. Use cases need not be attached to any specific subject, however. The subject may, but need not, own the use cases that apply to it.</body>
        </ownedComment>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="UseCase-subject-_upperValue" value="*"/>
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="UseCase-subject-_lowerValue"/>
      </ownedAttribute>
      <ownedOperation xmi:type="uml:Operation" xmi:id="UseCase-allIncludedUseCases" name="allIncludedUseCases" visibility="public" isQuery="true" bodyCondition="UseCase-allIncludedUseCases-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="UseCase-allIncludedUseCases-_ownedComment.0" annotatedElement="UseCase-allIncludedUseCases">
          <body>The query allIncludedUseCases() returns the transitive closure of all use cases (directly or indirectly) included by this use case.</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="UseCase-allIncludedUseCases-spec" name="spec" constrainedElement="UseCase-allIncludedUseCases">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="UseCase-allIncludedUseCases-spec-_specification">
            <language>OCL</language>
            <body>result = self.include-&gt;union(self.include-&gt;collect(in | in.allIncludedUseCases()))</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="UseCase-allIncludedUseCases-result" name="result" visibility="public" type="UseCase" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="UseCase-allIncludedUseCases-result-_upperValue" value="*"/>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="UseCase-allIncludedUseCases-result-_lowerValue"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="ValuePin" name="ValuePin">
      <ownedComment xmi:type="uml:Comment" xmi:id="ValuePin-_ownedComment.0" annotatedElement="ValuePin">
        <body>A value pin is an input pin that provides a value by evaluating a value specification.</body>
      </ownedComment>
      <ownedRule xmi:type="uml:Constraint" xmi:id="ValuePin-compatible_type" name="compatible_type" constrainedElement="ValuePin">
        <ownedComment xmi:type="uml:Comment" xmi:id="ValuePin-compatible_type-_ownedComment.0" annotatedElement="ValuePin-compatible_type">
          <body>The type of value specification must be compatible with the type of the value pin.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="ValuePin-compatible_type-_specification">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:type="uml:Constraint" xmi:id="ValuePin-no_incoming_edges" name="no_incoming_edges" constrainedElement="ValuePin">
        <ownedComment xmi:type="uml:Comment" xmi:id="ValuePin-no_incoming_edges-_ownedComment.0" annotatedElement="ValuePin-no_incoming_edges">
          <body>Value pins have no incoming edges.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="ValuePin-no_incoming_edges-_specification">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <generalization xmi:type="uml:Generalization" xmi:id="ValuePin-_generalization.0" general="InputPin"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="ValuePin-value" name="value" visibility="public" type="ValueSpecification" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_value_valuePin">
        <ownedComment xmi:type="uml:Comment" xmi:id="ValuePin-value-_ownedComment.0" annotatedElement="ValuePin-value">
          <body>Value that the pin will provide.</body>
        </ownedComment>
      </ownedAttribute>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="ValueSpecification" name="ValueSpecification" isAbstract="true">
      <ownedComment xmi:type="uml:Comment" xmi:id="ValueSpecification-_ownedComment.0" annotatedElement="ValueSpecification">
        <body>A value specification is the specification of a (possibly empty) set of instances, including both objects and data values.</body>
      </ownedComment>
      <generalization xmi:type="uml:Generalization" xmi:id="ValueSpecification-_generalization.0" general="TypedElement"/>
      <generalization xmi:type="uml:Generalization" xmi:id="ValueSpecification-_generalization.1" general="PackageableElement"/>
      <ownedOperation xmi:type="uml:Operation" xmi:id="ValueSpecification-booleanValue" name="booleanValue" visibility="public" isQuery="true" bodyCondition="ValueSpecification-booleanValue-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="ValueSpecification-booleanValue-_ownedComment.0" annotatedElement="ValueSpecification-booleanValue">
          <body>The query booleanValue() gives a single Boolean value when one can be computed.</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="ValueSpecification-booleanValue-spec" name="spec" constrainedElement="ValueSpecification-booleanValue">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="ValueSpecification-booleanValue-spec-_specification">
            <language>OCL</language>
            <body>result = Set{}</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="ValueSpecification-booleanValue-result" name="result" visibility="public" direction="return">
          <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ValueSpecification-booleanValue-result-_lowerValue"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:type="uml:Operation" xmi:id="ValueSpecification-integerValue" name="integerValue" visibility="public" isQuery="true" bodyCondition="ValueSpecification-integerValue-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="ValueSpecification-integerValue-_ownedComment.0" annotatedElement="ValueSpecification-integerValue">
          <body>The query integerValue() gives a single Integer value when one can be computed.</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="ValueSpecification-integerValue-spec" name="spec" constrainedElement="ValueSpecification-integerValue">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="ValueSpecification-integerValue-spec-_specification">
            <language>OCL</language>
            <body>result = Set{}</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="ValueSpecification-integerValue-result" name="result" visibility="public" direction="return">
          <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Integer"/>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ValueSpecification-integerValue-result-_lowerValue"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:type="uml:Operation" xmi:id="ValueSpecification-isComputable" name="isComputable" visibility="public" isQuery="true" bodyCondition="ValueSpecification-isComputable-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="ValueSpecification-isComputable-_ownedComment.0" annotatedElement="ValueSpecification-isComputable">
          <body>The query isComputable() determines whether a value specification can be computed in a model. This operation cannot be fully defined in OCL. A conforming implementation is expected to deliver true for this operation for all value specifications that it can compute, and to compute all of those for which the operation is true. A conforming implementation is expected to be able to compute the value of all literals.</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="ValueSpecification-isComputable-spec" name="spec" constrainedElement="ValueSpecification-isComputable">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="ValueSpecification-isComputable-spec-_specification">
            <language>OCL</language>
            <body>result = false</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="ValueSpecification-isComputable-result" name="result" visibility="public" direction="return">
          <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:type="uml:Operation" xmi:id="ValueSpecification-isNull" name="isNull" visibility="public" isQuery="true" bodyCondition="ValueSpecification-isNull-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="ValueSpecification-isNull-_ownedComment.0" annotatedElement="ValueSpecification-isNull">
          <body>The query isNull() returns true when it can be computed that the value is null.</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="ValueSpecification-isNull-spec" name="spec" constrainedElement="ValueSpecification-isNull">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="ValueSpecification-isNull-spec-_specification">
            <language>OCL</language>
            <body>result = false</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="ValueSpecification-isNull-result" name="result" visibility="public" direction="return">
          <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:type="uml:Operation" xmi:id="ValueSpecification-realValue" name="realValue" visibility="public" isQuery="true" bodyCondition="ValueSpecification-realValue-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="ValueSpecification-realValue-_ownedComment.0" annotatedElement="ValueSpecification-realValue">
          <body>The query realValue() gives a single Real value when one can be computed.</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="ValueSpecification-realValue-spec" name="spec" constrainedElement="ValueSpecification-realValue">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="ValueSpecification-realValue-spec-_specification">
            <language>OCL</language>
            <body>result = Set{}</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="ValueSpecification-realValue-result" name="result" visibility="public" direction="return">
          <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Real"/>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ValueSpecification-realValue-result-_lowerValue"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:type="uml:Operation" xmi:id="ValueSpecification-stringValue" name="stringValue" visibility="public" isQuery="true" bodyCondition="ValueSpecification-stringValue-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="ValueSpecification-stringValue-_ownedComment.0" annotatedElement="ValueSpecification-stringValue">
          <body>The query stringValue() gives a single String value when one can be computed.</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="ValueSpecification-stringValue-spec" name="spec" constrainedElement="ValueSpecification-stringValue">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="ValueSpecification-stringValue-spec-_specification">
            <language>OCL</language>
            <body>result = Set{}</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="ValueSpecification-stringValue-result" name="result" visibility="public" direction="return">
          <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#String"/>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ValueSpecification-stringValue-result-_lowerValue"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:type="uml:Operation" xmi:id="ValueSpecification-unlimitedValue" name="unlimitedValue" visibility="public" isQuery="true" bodyCondition="ValueSpecification-unlimitedValue-spec">
        <ownedComment xmi:type="uml:Comment" xmi:id="ValueSpecification-unlimitedValue-_ownedComment.0" annotatedElement="ValueSpecification-unlimitedValue">
          <body>The query unlimitedValue() gives a single UnlimitedNatural value when one can be computed.</body>
        </ownedComment>
        <ownedRule xmi:type="uml:Constraint" xmi:id="ValueSpecification-unlimitedValue-spec" name="spec" constrainedElement="ValueSpecification-unlimitedValue">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="ValueSpecification-unlimitedValue-spec-_specification">
            <language>OCL</language>
            <body>result = Set{}</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:type="uml:Parameter" xmi:id="ValueSpecification-unlimitedValue-result" name="result" visibility="public" direction="return">
          <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#UnlimitedNatural"/>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ValueSpecification-unlimitedValue-result-_lowerValue"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Enumeration" xmi:id="AggregationKind" name="AggregationKind">
      <ownedComment xmi:type="uml:Comment" xmi:id="AggregationKind-_ownedComment.0" annotatedElement="AggregationKind">
        <body>AggregationKind is an enumeration type that specifies the literals for defining the kind of aggregation of a property.</body>
      </ownedComment>
      <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="AggregationKind-none" name="none" classifier="AggregationKind">
        <ownedComment xmi:type="uml:Comment" xmi:id="AggregationKind-none-_ownedComment.0" annotatedElement="AggregationKind-none">
          <body>Indicates that the property has no aggregation.</body>
        </ownedComment>
      </ownedLiteral>
      <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="AggregationKind-shared" name="shared" classifier="AggregationKind">
        <ownedComment xmi:type="uml:Comment" xmi:id="AggregationKind-shared-_ownedComment.0" annotatedElement="AggregationKind-shared">
          <body>Indicates that the property has a shared aggregation.</body>
        </ownedComment>
      </ownedLiteral>
      <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="AggregationKind-composite" name="composite" classifier="AggregationKind">
        <ownedComment xmi:type="uml:Comment" xmi:id="AggregationKind-composite-_ownedComment.0" annotatedElement="AggregationKind-composite">
          <body>Indicates that the property is aggregated compositely, i.e., the composite object has responsibility for the existence and storage of the composed objects (parts).</body>
        </ownedComment>
      </ownedLiteral>
    </packagedElement>
    <packagedElement xmi:type="uml:Enumeration" xmi:id="CallConcurrencyKind" name="CallConcurrencyKind">
      <ownedComment xmi:type="uml:Comment" xmi:id="CallConcurrencyKind-_ownedComment.0" annotatedElement="CallConcurrencyKind">
        <body>CallConcurrencyKind is an enumeration type.</body>
      </ownedComment>
      <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="CallConcurrencyKind-sequential" name="sequential" classifier="CallConcurrencyKind">
        <ownedComment xmi:type="uml:Comment" xmi:id="CallConcurrencyKind-sequential-_ownedComment.0" annotatedElement="CallConcurrencyKind-sequential">
          <body>No concurrency management mechanism is associated with the operation and, therefore, concurrency conflicts may occur. Instances that invoke a behavioral feature need to coordinate so that only one invocation to a target on any behavioral feature occurs at once.</body>
        </ownedComment>
      </ownedLiteral>
      <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="CallConcurrencyKind-guarded" name="guarded" classifier="CallConcurrencyKind">
        <ownedComment xmi:type="uml:Comment" xmi:id="CallConcurrencyKind-guarded-_ownedComment.0" annotatedElement="CallConcurrencyKind-guarded">
          <body>Multiple invocations of a behavioral feature may occur simultaneously to one instance, but only one is allowed to commence. The others are blocked until the performance of the currently executing behavioral feature is complete. It is the responsibility of the system designer to ensure that deadlocks do not occur due to simultaneous blocks.</body>
        </ownedComment>
      </ownedLiteral>
      <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="CallConcurrencyKind-concurrent" name="concurrent" classifier="CallConcurrencyKind">
        <ownedComment xmi:type="uml:Comment" xmi:id="CallConcurrencyKind-concurrent-_ownedComment.0" annotatedElement="CallConcurrencyKind-concurrent">
          <body>Multiple invocations of a behavioral feature may occur simultaneously to one instance and all of them may proceed concurrently.</body>
        </ownedComment>
      </ownedLiteral>
    </packagedElement>
    <packagedElement xmi:type="uml:Enumeration" xmi:id="MessageKind" name="MessageKind">
      <ownedComment xmi:type="uml:Comment" xmi:id="MessageKind-_ownedComment.0" annotatedElement="MessageKind">
        <body>This is an enumerated type that identifies the type of message.</body>
      </ownedComment>
      <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="MessageKind-complete" name="complete" classifier="MessageKind">
        <ownedComment xmi:type="uml:Comment" xmi:id="MessageKind-complete-_ownedComment.0" annotatedElement="MessageKind-complete">
          <body>sendEvent and receiveEvent are present</body>
        </ownedComment>
      </ownedLiteral>
      <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="MessageKind-lost" name="lost" classifier="MessageKind">
        <ownedComment xmi:type="uml:Comment" xmi:id="MessageKind-lost-_ownedComment.0" annotatedElement="MessageKind-lost">
          <body>sendEvent present and receiveEvent absent</body>
        </ownedComment>
      </ownedLiteral>
      <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="MessageKind-found" name="found" classifier="MessageKind">
        <ownedComment xmi:type="uml:Comment" xmi:id="MessageKind-found-_ownedComment.0" annotatedElement="MessageKind-found">
          <body>sendEvent absent and receiveEvent present</body>
        </ownedComment>
      </ownedLiteral>
      <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="MessageKind-unknown" name="unknown" classifier="MessageKind">
        <ownedComment xmi:type="uml:Comment" xmi:id="MessageKind-unknown-_ownedComment.0" annotatedElement="MessageKind-unknown">
          <body>sendEvent and receiveEvent absent (should not appear)</body>
        </ownedComment>
      </ownedLiteral>
    </packagedElement>
    <packagedElement xmi:type="uml:Enumeration" xmi:id="MessageSort" name="MessageSort">
      <ownedComment xmi:type="uml:Comment" xmi:id="MessageSort-_ownedComment.0" annotatedElement="MessageSort">
        <body>This is an enumerated type that identifies the type of communication action that was used to generate the message.</body>
      </ownedComment>
      <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="MessageSort-synchCall" name="synchCall" classifier="MessageSort">
        <ownedComment xmi:type="uml:Comment" xmi:id="MessageSort-synchCall-_ownedComment.0" annotatedElement="MessageSort-synchCall">
          <body>The message was generated by a synchronous call to an operation.</body>
        </ownedComment>
      </ownedLiteral>
      <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="MessageSort-asynchCall" name="asynchCall" classifier="MessageSort">
        <ownedComment xmi:type="uml:Comment" xmi:id="MessageSort-asynchCall-_ownedComment.0" annotatedElement="MessageSort-asynchCall">
          <body>The message was generated by an asynchronous call to an operation; i.e., a CallAction with isSynchronous = false.</body>
        </ownedComment>
      </ownedLiteral>
      <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="MessageSort-asynchSignal" name="asynchSignal" classifier="MessageSort">
        <ownedComment xmi:type="uml:Comment" xmi:id="MessageSort-asynchSignal-_ownedComment.0" annotatedElement="MessageSort-asynchSignal">
          <body>The message was generated by an asynchronous send action.</body>
        </ownedComment>
      </ownedLiteral>
      <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="MessageSort-createMessage" name="createMessage" classifier="MessageSort">
        <ownedComment xmi:type="uml:Comment" xmi:id="MessageSort-createMessage-_ownedComment.0" annotatedElement="MessageSort-createMessage">
          <body>The message designating the creation of another lifeline object.</body>
        </ownedComment>
      </ownedLiteral>
      <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="MessageSort-deleteMessage" name="deleteMessage" classifier="MessageSort">
        <ownedComment xmi:type="uml:Comment" xmi:id="MessageSort-deleteMessage-_ownedComment.0" annotatedElement="MessageSort-deleteMessage">
          <body>The message designating the termination of another lifeline.</body>
        </ownedComment>
      </ownedLiteral>
      <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="MessageSort-reply" name="reply" classifier="MessageSort">
        <ownedComment xmi:type="uml:Comment" xmi:id="MessageSort-reply-_ownedComment.0" annotatedElement="MessageSort-reply">
          <body>The message is a reply message to an operation call.</body>
        </ownedComment>
      </ownedLiteral>
    </packagedElement>
    <packagedElement xmi:type="uml:Enumeration" xmi:id="ParameterDirectionKind" name="ParameterDirectionKind">
      <ownedComment xmi:type="uml:Comment" xmi:id="ParameterDirectionKind-_ownedComment.0" annotatedElement="ParameterDirectionKind">
        <body>Parameter direction kind is an enumeration type that defines literals used to specify direction of parameters.</body>
      </ownedComment>
      <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="ParameterDirectionKind-in" name="in" classifier="ParameterDirectionKind">
        <ownedComment xmi:type="uml:Comment" xmi:id="ParameterDirectionKind-in-_ownedComment.0" annotatedElement="ParameterDirectionKind-in">
          <body>Indicates that parameter values are passed into the behavioral element by the caller.</body>
        </ownedComment>
      </ownedLiteral>
      <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="ParameterDirectionKind-inout" name="inout" classifier="ParameterDirectionKind">
        <ownedComment xmi:type="uml:Comment" xmi:id="ParameterDirectionKind-inout-_ownedComment.0" annotatedElement="ParameterDirectionKind-inout">
          <body>Indicates that parameter values are passed into a behavioral element by the caller and then back out to the caller from the behavioral element.</body>
        </ownedComment>
      </ownedLiteral>
      <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="ParameterDirectionKind-out" name="out" classifier="ParameterDirectionKind">
        <ownedComment xmi:type="uml:Comment" xmi:id="ParameterDirectionKind-out-_ownedComment.0" annotatedElement="ParameterDirectionKind-out">
          <body>Indicates that parameter values are passed from a behavioral element out to the caller.</body>
        </ownedComment>
      </ownedLiteral>
      <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="ParameterDirectionKind-return" name="return" classifier="ParameterDirectionKind">
        <ownedComment xmi:type="uml:Comment" xmi:id="ParameterDirectionKind-return-_ownedComment.0" annotatedElement="ParameterDirectionKind-return">
          <body>Indicates that parameter values are passed as return values from a behavioral element back to the caller.</body>
        </ownedComment>
      </ownedLiteral>
    </packagedElement>
    <packagedElement xmi:type="uml:Enumeration" xmi:id="VisibilityKind" name="VisibilityKind">
      <ownedComment xmi:type="uml:Comment" xmi:id="VisibilityKind-_ownedComment.0" annotatedElement="VisibilityKind">
        <body>VisibilityKind is an enumeration type that defines literals to determine the visibility of elements in a model.</body>
      </ownedComment>
      <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="VisibilityKind-public" name="public" classifier="VisibilityKind">
        <ownedComment xmi:type="uml:Comment" xmi:id="VisibilityKind-public-_ownedComment.0" annotatedElement="VisibilityKind-public">
          <body>A public element is visible to all elements that can access the contents of the namespace that owns it.</body>
        </ownedComment>
      </ownedLiteral>
      <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="VisibilityKind-private" name="private" classifier="VisibilityKind">
        <ownedComment xmi:type="uml:Comment" xmi:id="VisibilityKind-private-_ownedComment.0" annotatedElement="VisibilityKind-private">
          <body>A private element is only visible inside the namespace that owns it.</body>
        </ownedComment>
      </ownedLiteral>
      <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="VisibilityKind-protected" name="protected" classifier="VisibilityKind">
        <ownedComment xmi:type="uml:Comment" xmi:id="VisibilityKind-protected-_ownedComment.0" annotatedElement="VisibilityKind-protected">
          <body>A protected element is visible to elements that have a generalization relationship to the namespace that owns it.</body>
        </ownedComment>
      </ownedLiteral>
      <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="VisibilityKind-package" name="package" classifier="VisibilityKind">
        <ownedComment xmi:type="uml:Comment" xmi:id="VisibilityKind-package-_ownedComment.0" annotatedElement="VisibilityKind-package">
          <body>A package element is owned by a namespace that is not a package, and is visible to elements that are in the same package as its owning namespace. Only named elements that are not owned by packages can be marked as having package visibility. Any element marked as having package visibility is visible to all elements within the nearest enclosing package (given that other owning elements have proper visibility). Outside the nearest enclosing package, an element marked as having package visibility is not visible.</body>
        </ownedComment>
      </ownedLiteral>
    </packagedElement>
  </uml:Package>
  <mofext:Tag xmi:type="mofext:Tag" xmi:id="_2" name="org.omg.xmi.nsPrefix" value="uml" element="_0"/>
</xmi:XMI>
