<?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">
  <uml:Model xmi:id="_rP7eQNyJEeGru4CffneBug" name="CompositeStructuresSyntaxAndSemantics">
    <packageImport xmi:type="uml:PackageImport" xmi:id="_zgL7kOVNEeGVLZOJyKihvQ" importingNamespace="_rP7eQNyJEeGru4CffneBug">
      <importedPackage xmi:type="uml:Model" href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#_0"/>
    </packageImport>
    <packageMerge xmi:type="uml:PackageMerge" xmi:id="_In5G4NzDEeGru4CffneBug_0" receivingPackage="_rP7eQNyJEeGru4CffneBug">
      <mergedPackage xmi:type="uml:Package" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#fUML"/>
    </packageMerge>
    <packageMerge xmi:type="uml:PackageMerge" xmi:id="_In5G4NzDEeGru4CffneBug_1" receivingPackage="_rP7eQNyJEeGru4CffneBug">
      <mergedPackage xmi:type="uml:Package" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#fUML"/>
    </packageMerge>
    <packagedElement xmi:type="uml:Package" xmi:id="_W8S2ENzCEeGru4CffneBug" name="Syntax">
      <packagedElement xmi:type="uml:Package" xmi:id="_W8S2EdzCEeGru4CffneBug" name="CommonBehaviors">
        <ownedComment xmi:type="uml:Comment" xmi:id="_PO0dAHNwEeKFY_nn9CuDrg">
          <body>The CommonBehaviors package is partially copied into the Composite Structures syntax model. This is because that package contains the sub-package Communications, which is required for Composite Structures modeling. More precisely, it allows Receptions to be owned by Interfaces, as a way of enabling a classifier to specify that it provides or requires Receptions for Signals for some of its Ports. The copy of the CommonBehaviors package is partial in the sense that only this sub-package is copied. Note that the CommonBehaviors::Communications package is already part of the fUML Abstract Syntax model. However, the Interface metaclass was explicitly removed from the fUML subset. The following subclause provides details about the content of this sub-package.</body>
        </ownedComment>
        <packagedElement xmi:type="uml:Package" xmi:id="_W8S2ZdzCEeGru4CffneBug" name="Communications">
          <packageMerge xmi:type="uml:PackageMerge" xmi:id="_0pRIIN15EeGnO-TF_1T_iQ" mergedPackage="_vBjwcNzDEeGru4CffneBug" receivingPackage="_W8S2ZdzCEeGru4CffneBug"/>
          <packagedElement xmi:type="uml:Class" xmi:id="_zDeus-CxEeGcc4S1CmuFHA" name="Reception">
            <ownedComment xmi:type="uml:Comment" xmi:id="_zDeutOCxEeGcc4S1CmuFHA" annotatedElement="_zDeus-CxEeGcc4S1CmuFHA">
              <body>CommonBehaviors::Communications::Reception does not extend fUML Reception. It is included in the Composite Structures syntax model because it is needed for the merging process described in the Overview subclause of the clause 7.</body>
            </ownedComment>
            <generalization xmi:type="uml:Generalization" xmi:id="_zDeuuOCxEeGcc4S1CmuFHA" specific="_zDeus-CxEeGcc4S1CmuFHA">
              <general xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-BehavioralFeature"/>
            </generalization>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="_zDeup-CxEeGcc4S1CmuFHA" name="Interface">
            <ownedComment xmi:type="uml:Comment" xmi:id="_zDeuqOCxEeGcc4S1CmuFHA" annotatedElement="_zDeup-CxEeGcc4S1CmuFHA">
              <body>CommonBehaviors::Communications::Interface extends (merge increment) Classes::Interfaces::Interface with the ability to own receptions.</body>
            </ownedComment>
            <generalization xmi:type="uml:Generalization" xmi:id="_zDeuqeCxEeGcc4S1CmuFHA" specific="_zDeup-CxEeGcc4S1CmuFHA">
              <general xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-Classifier"/>
            </generalization>
            <ownedAttribute xmi:type="uml:Property" xmi:id="_zDeuquCxEeGcc4S1CmuFHA" name="ownedReception" visibility="public" type="_zDeus-CxEeGcc4S1CmuFHA" aggregation="composite" association="_zDeHoOCxEeGcc4S1CmuFHA">
              <ownedComment xmi:type="uml:Comment" xmi:id="_zDeuq-CxEeGcc4S1CmuFHA" annotatedElement="_zDeuquCxEeGcc4S1CmuFHA">
                <body>Receptions that objects providing this interface are willing to accept.</body>
              </ownedComment>
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_zDeurOCxEeGcc4S1CmuFHA"/>
              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_zDeureCxEeGcc4S1CmuFHA" value="*"/>
              <subsettedProperty xmi:type="uml:Property" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-Classifier-feature"/>
              <subsettedProperty xmi:type="uml:Property" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-Namespace-ownedMember"/>
            </ownedAttribute>
          </packagedElement>
          <packagedElement xmi:type="uml:Association" xmi:id="_zDeHoOCxEeGcc4S1CmuFHA" name="A_ownedReception_interface" memberEnd="_zDeuquCxEeGcc4S1CmuFHA _zDeHoeCxEeGcc4S1CmuFHA">
            <ownedEnd xmi:type="uml:Property" xmi:id="_zDeHoeCxEeGcc4S1CmuFHA" name="interface" visibility="public" type="_zDeup-CxEeGcc4S1CmuFHA" owningAssociation="_zDeHoOCxEeGcc4S1CmuFHA" association="_zDeHoOCxEeGcc4S1CmuFHA">
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_zDeHouCxEeGcc4S1CmuFHA"/>
              <subsettedProperty xmi:type="uml:Property" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-NamedElement-namespace"/>
              <subsettedProperty xmi:type="uml:Property" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-Feature-featuringClassifier"/>
            </ownedEnd>
          </packagedElement>
        </packagedElement>
      </packagedElement>
      <packagedElement xmi:type="uml:Package" xmi:id="_W8TdONzCEeGru4CffneBug" name="Classes">
        <ownedComment xmi:type="uml:Comment" xmi:id="_gFzTIHNuEeKFY_nn9CuDrg">
          <body>The Classes package is partially copied into the Composite Structures syntax model. This is because it contains the subpackages Dependencies and Interfaces, which are both required for Composite Structures modeling. The copy of the Classes package is partial since only these two subpackages are copied. Note that the Classes package is already part of the fUML Abstract Syntax model. However, the packages Dependencies and Interfaces were explicitly removed from that model. The following subclauses provide details about the content of these two subpackages.</body>
        </ownedComment>
        <packagedElement xmi:type="uml:Package" xmi:id="_W8TdOdzCEeGru4CffneBug" name="Kernel">
          <packagedElement xmi:type="uml:Class" xmi:id="_YmYUoMEUEeKkJbQgitQ3JQ" name="OpaqueExpression">
            <generalization xmi:type="uml:Generalization" xmi:id="_d6ergMEUEeKkJbQgitQ3JQ" specific="_YmYUoMEUEeKkJbQgitQ3JQ">
              <general xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-ValueSpecification"/>
            </generalization>
            <ownedAttribute xmi:type="uml:Property" xmi:id="_uVOmsMEUEeKkJbQgitQ3JQ" name="behavior" association="_uVOms8EUEeKkJbQgitQ3JQ">
              <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-CommonBehaviors-BasicBehaviors-Behavior"/>
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_uVOmscEUEeKkJbQgitQ3JQ"/>
              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_uVOmssEUEeKkJbQgitQ3JQ" value="1"/>
            </ownedAttribute>
          </packagedElement>
          <packagedElement xmi:type="uml:Association" xmi:id="_uVOms8EUEeKkJbQgitQ3JQ" name="A_opaqueExpression_behavior" memberEnd="_uVOmtMEUEeKkJbQgitQ3JQ _uVOmsMEUEeKkJbQgitQ3JQ">
            <ownedEnd xmi:type="uml:Property" xmi:id="_uVOmtMEUEeKkJbQgitQ3JQ" name="opaqueExpression" type="_YmYUoMEUEeKkJbQgitQ3JQ" owningAssociation="_uVOms8EUEeKkJbQgitQ3JQ" association="_uVOms8EUEeKkJbQgitQ3JQ">
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_uVOmtcEUEeKkJbQgitQ3JQ" value="1"/>
              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_uVOmtsEUEeKkJbQgitQ3JQ" value="1"/>
            </ownedEnd>
          </packagedElement>
        </packagedElement>
        <packagedElement xmi:type="uml:Package" xmi:id="_vBjwcNzDEeGru4CffneBug" name="Interfaces">
          <ownedComment xmi:type="uml:Comment" xmi:id="_HIJtUHNvEeKFY_nn9CuDrg">
            <body>The Interfaces package is introduced to enable the definition of required and/or provided features associated with ports. It also includes a mechanism for specifying that a given BehavioredClassifier realizes the features of an Interface. At run time, this information is used to determine if a given object (instance of a BehavioredClassifier) is a valid target for the invocation of a BehavioralFeature (where this feature is specified by an interface).</body>
          </ownedComment>
          <packageMerge xmi:type="uml:PackageMerge" xmi:id="_vBjwcdzDEeGru4CffneBug" mergedPackage="_j6YRIN1GEeGru4CffneBug" receivingPackage="_vBjwcNzDEeGru4CffneBug"/>
          <packagedElement xmi:type="uml:Association" xmi:id="_vBjwctzDEeGru4CffneBug" name="A_attribute_classifier" isDerived="true" memberEnd="_vBjwjdzDEeGru4CffneBug _vBjwc9zDEeGru4CffneBug">
            <ownedEnd xmi:type="uml:Property" xmi:id="_vBjwc9zDEeGru4CffneBug" name="classifier" visibility="public" type="_vBjwi9zDEeGru4CffneBug" owningAssociation="_vBjwctzDEeGru4CffneBug" association="_vBjwctzDEeGru4CffneBug">
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_vBjwdNzDEeGru4CffneBug"/>
            </ownedEnd>
          </packagedElement>
          <packagedElement xmi:type="uml:Association" xmi:id="_vBjwddzDEeGru4CffneBug" name="A_contract_interfaceRealization" memberEnd="_vBjwqtzDEeGru4CffneBug _vBjwdtzDEeGru4CffneBug">
            <ownedEnd xmi:type="uml:Property" xmi:id="_vBjwdtzDEeGru4CffneBug" name="interfaceRealization" visibility="public" type="_vBjwp9zDEeGru4CffneBug" owningAssociation="_vBjwddzDEeGru4CffneBug" subsettedProperty="_j6YRLt1GEeGru4CffneBug" association="_vBjwddzDEeGru4CffneBug">
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_vBjwd9zDEeGru4CffneBug"/>
              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_vBjweNzDEeGru4CffneBug" value="*"/>
            </ownedEnd>
          </packagedElement>
          <packagedElement xmi:type="uml:Association" xmi:id="_vBjwedzDEeGru4CffneBug" name="A_interfaceRealization_implementingClassifier" memberEnd="_vBjwh9zDEeGru4CffneBug _vBjwrNzDEeGru4CffneBug"/>
          <packagedElement xmi:type="uml:Association" xmi:id="_vBjwetzDEeGru4CffneBug" name="A_nestedClassifier_interface" memberEnd="_vBjwl9zDEeGru4CffneBug _vBjwe9zDEeGru4CffneBug">
            <ownedEnd xmi:type="uml:Property" xmi:id="_vBjwe9zDEeGru4CffneBug" name="interface" visibility="public" type="_vBjwkNzDEeGru4CffneBug" owningAssociation="_vBjwetzDEeGru4CffneBug" association="_vBjwetzDEeGru4CffneBug">
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_vBjwfNzDEeGru4CffneBug"/>
              <subsettedProperty xmi:type="uml:Property" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-RedefinableElement-redefinitionContext"/>
              <subsettedProperty xmi:type="uml:Property" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-NamedElement-namespace"/>
            </ownedEnd>
          </packagedElement>
          <packagedElement xmi:type="uml:Association" xmi:id="_vBjwfdzDEeGru4CffneBug" name="A_ownedAttribute_interface" memberEnd="_vBjwm9zDEeGru4CffneBug _vBjwtdzDEeGru4CffneBug"/>
          <packagedElement xmi:type="uml:Association" xmi:id="_vBjwftzDEeGru4CffneBug" name="A_ownedOperation_interface" memberEnd="_vBjwn9zDEeGru4CffneBug _vBjwsNzDEeGru4CffneBug"/>
          <packagedElement xmi:type="uml:Association" xmi:id="_vBjwf9zDEeGru4CffneBug" name="A_redefinedInterface_interface" memberEnd="_vBjwo9zDEeGru4CffneBug _vBjwgNzDEeGru4CffneBug">
            <ownedEnd xmi:type="uml:Property" xmi:id="_vBjwgNzDEeGru4CffneBug" name="interface" visibility="public" type="_vBjwkNzDEeGru4CffneBug" owningAssociation="_vBjwf9zDEeGru4CffneBug" association="_vBjwf9zDEeGru4CffneBug">
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_vBjwgdzDEeGru4CffneBug"/>
              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_vBjwgtzDEeGru4CffneBug" value="*"/>
            </ownedEnd>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="_vBjwg9zDEeGru4CffneBug" name="BehavioredClassifier" isAbstract="true">
            <ownedComment xmi:type="uml:Comment" xmi:id="_vBjwhNzDEeGru4CffneBug" annotatedElement="_vBjwg9zDEeGru4CffneBug">
              <body>Classes::Interfaces::BehavioredClassifier extends (merge increment) fUML BehavioredClassifier with the ability to own a collection of InterfaceRealization relationships.</body>
            </ownedComment>
            <generalization xmi:type="uml:Generalization" xmi:id="_vBjwhdzDEeGru4CffneBug" general="_j6YRSN1GEeGru4CffneBug" specific="_vBjwg9zDEeGru4CffneBug"/>
            <generalization xmi:type="uml:Generalization" xmi:id="_vBjwhtzDEeGru4CffneBug" specific="_vBjwg9zDEeGru4CffneBug">
              <general xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-Classifier"/>
            </generalization>
            <ownedAttribute xmi:type="uml:Property" xmi:id="_vBjwh9zDEeGru4CffneBug" name="interfaceRealization" visibility="public" type="_vBjwp9zDEeGru4CffneBug" aggregation="composite" association="_vBjwedzDEeGru4CffneBug">
              <ownedComment xmi:type="uml:Comment" xmi:id="_vBjwiNzDEeGru4CffneBug" annotatedElement="_vBjwh9zDEeGru4CffneBug">
                <body>The set of InterfaceRealizations owned by the BehavioredClassifier. Interface realizations reference the Interfaces of which the BehavioredClassifier is an implementation.</body>
              </ownedComment>
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_vBjwidzDEeGru4CffneBug"/>
              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_vBjwitzDEeGru4CffneBug" value="*"/>
              <subsettedProperty xmi:type="uml:Property" href="#_j6YRSt1GEeGru4CffneBug"/>
              <subsettedProperty xmi:type="uml:Property" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-Element-ownedElement"/>
            </ownedAttribute>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="_vBjwi9zDEeGru4CffneBug" name="Classifier" isAbstract="true">
            <ownedComment xmi:type="uml:Comment" xmi:id="_BpB4wHOcEeKFY_nn9CuDrg">
              <body>Classes::Interfaces::Classifier does not extend fUML Classifier. It is included in the Composite Structures syntax model because it is needed for the merging process described in the Overview subclause of the Abstract Syntax clause 7.</body>
            </ownedComment>
            <generalization xmi:type="uml:Generalization" xmi:id="_vBjwjNzDEeGru4CffneBug" general="_j6YRV91GEeGru4CffneBug" specific="_vBjwi9zDEeGru4CffneBug"/>
            <ownedAttribute xmi:type="uml:Property" xmi:id="_vBjwjdzDEeGru4CffneBug" name="attribute" visibility="public" type="_vBjws9zDEeGru4CffneBug" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_vBjwctzDEeGru4CffneBug">
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_vBjwjtzDEeGru4CffneBug"/>
              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_vBjwj9zDEeGru4CffneBug" value="*"/>
            </ownedAttribute>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="_vBjwkNzDEeGru4CffneBug" name="Interface">
            <ownedComment xmi:type="uml:Comment" xmi:id="_vBjwkdzDEeGru4CffneBug" annotatedElement="_vBjwkNzDEeGru4CffneBug">
              <body>Interface is introduced to enable specification of features provided or required on a Port.  Through InterfaceRealization relationships, it also enables specifying features that are realized by a given BehavioredClassifier.</body>
            </ownedComment>
            <generalization xmi:type="uml:Generalization" xmi:id="_vBjwldzDEeGru4CffneBug" general="_vBjwi9zDEeGru4CffneBug" specific="_vBjwkNzDEeGru4CffneBug"/>
            <generalization xmi:type="uml:Generalization" xmi:id="_vBjwltzDEeGru4CffneBug" specific="_vBjwkNzDEeGru4CffneBug">
              <general xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-Classifier"/>
            </generalization>
            <ownedAttribute xmi:type="uml:Property" xmi:id="_vBjwl9zDEeGru4CffneBug" name="nestedClassifier" visibility="public" isOrdered="true" aggregation="composite" association="_vBjwetzDEeGru4CffneBug">
              <ownedComment xmi:type="uml:Comment" xmi:id="_vBjwmNzDEeGru4CffneBug" annotatedElement="_vBjwl9zDEeGru4CffneBug">
                <body>References all the Classifiers that are defined (nested) within the Class.</body>
              </ownedComment>
              <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-Classifier"/>
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_vBjwmdzDEeGru4CffneBug"/>
              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_vBjwmtzDEeGru4CffneBug" value="*"/>
              <subsettedProperty xmi:type="uml:Property" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-A_redefinitionContext_redefinableElement-redefinableElement"/>
              <subsettedProperty xmi:type="uml:Property" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-Namespace-ownedMember"/>
            </ownedAttribute>
            <ownedAttribute xmi:type="uml:Property" xmi:id="_vBjwm9zDEeGru4CffneBug" name="ownedAttribute" visibility="public" type="_vBjws9zDEeGru4CffneBug" isOrdered="true" aggregation="composite" association="_vBjwfdzDEeGru4CffneBug">
              <ownedComment xmi:type="uml:Comment" xmi:id="_vBjwnNzDEeGru4CffneBug" annotatedElement="_vBjwm9zDEeGru4CffneBug">
                <body>The attributes (i.e. the properties) owned by the class.</body>
              </ownedComment>
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_vBjwndzDEeGru4CffneBug"/>
              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_vBjwntzDEeGru4CffneBug" value="*"/>
              <subsettedProperty xmi:type="uml:Property" href="#_vBjwjdzDEeGru4CffneBug"/>
              <subsettedProperty xmi:type="uml:Property" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-Namespace-ownedMember"/>
            </ownedAttribute>
            <ownedAttribute xmi:type="uml:Property" xmi:id="_vBjwn9zDEeGru4CffneBug" name="ownedOperation" visibility="public" type="_vBjwrtzDEeGru4CffneBug" isOrdered="true" aggregation="composite" association="_vBjwftzDEeGru4CffneBug">
              <ownedComment xmi:type="uml:Comment" xmi:id="_vBjwoNzDEeGru4CffneBug" annotatedElement="_vBjwn9zDEeGru4CffneBug">
                <body>The operations owned by the class.</body>
              </ownedComment>
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_vBjwodzDEeGru4CffneBug"/>
              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_vBjwotzDEeGru4CffneBug" value="*"/>
              <subsettedProperty xmi:type="uml:Property" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-A_redefinitionContext_redefinableElement-redefinableElement"/>
              <subsettedProperty xmi:type="uml:Property" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-Classifier-feature"/>
              <subsettedProperty xmi:type="uml:Property" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-Namespace-ownedMember"/>
            </ownedAttribute>
            <ownedAttribute xmi:type="uml:Property" xmi:id="_vBjwo9zDEeGru4CffneBug" name="redefinedInterface" visibility="public" type="_vBjwkNzDEeGru4CffneBug" association="_vBjwf9zDEeGru4CffneBug">
              <ownedComment xmi:type="uml:Comment" xmi:id="_vBjwpNzDEeGru4CffneBug" annotatedElement="_vBjwo9zDEeGru4CffneBug">
                <body>References all the Interfaces redefined by this Interface.</body>
              </ownedComment>
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_vBjwpdzDEeGru4CffneBug"/>
              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_vBjwptzDEeGru4CffneBug" value="*"/>
            </ownedAttribute>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="_vBjwp9zDEeGru4CffneBug" name="InterfaceRealization">
            <ownedComment xmi:type="uml:Comment" xmi:id="_vBjwqNzDEeGru4CffneBug" annotatedElement="_vBjwp9zDEeGru4CffneBug">
              <body>InterfaceRealization is introduced since it is used to specify the provided Interfaces of a Port. In addition, it is also used to specify that features of the contract Interface are realized by the implementingClassifier of a BehavioredClassifier.</body>
            </ownedComment>
            <generalization xmi:type="uml:Generalization" xmi:id="_vBjwqdzDEeGru4CffneBug" general="_j6YRZt1GEeGru4CffneBug" specific="_vBjwp9zDEeGru4CffneBug"/>
            <ownedAttribute xmi:type="uml:Property" xmi:id="_vBjwqtzDEeGru4CffneBug" name="contract" visibility="public" type="_vBjwkNzDEeGru4CffneBug" subsettedProperty="_j6YRRd1GEeGru4CffneBug" association="_vBjwddzDEeGru4CffneBug">
              <ownedComment xmi:type="uml:Comment" xmi:id="_vBjwq9zDEeGru4CffneBug" annotatedElement="_vBjwqtzDEeGru4CffneBug">
                <body>References the Interface specifying the conformance contract.</body>
              </ownedComment>
            </ownedAttribute>
            <ownedAttribute xmi:type="uml:Property" xmi:id="_vBjwrNzDEeGru4CffneBug" name="implementingClassifier" visibility="public" type="_vBjwg9zDEeGru4CffneBug" association="_vBjwedzDEeGru4CffneBug">
              <ownedComment xmi:type="uml:Comment" xmi:id="_vBjwrdzDEeGru4CffneBug" annotatedElement="_vBjwrNzDEeGru4CffneBug">
                <body>References the BehavioredClassifier that owns this Interfacerealization (i.e., the classifier that realizes the Interface to which it points).</body>
              </ownedComment>
              <subsettedProperty xmi:type="uml:Property" href="#_j6YRQt1GEeGru4CffneBug"/>
              <subsettedProperty xmi:type="uml:Property" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-Element-owner"/>
            </ownedAttribute>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="_vBjwrtzDEeGru4CffneBug" name="Operation">
            <ownedComment xmi:type="uml:Comment" xmi:id="_UZB0EHOcEeKFY_nn9CuDrg">
              <body>Classes::Interfaces::Operation extends (merge increment) fUML Operation with the capability to be owned by an Interface.</body>
            </ownedComment>
            <generalization xmi:type="uml:Generalization" xmi:id="_vBjwr9zDEeGru4CffneBug" specific="_vBjwrtzDEeGru4CffneBug">
              <general xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-BehavioralFeature"/>
            </generalization>
            <ownedAttribute xmi:type="uml:Property" xmi:id="_vBjwsNzDEeGru4CffneBug" name="interface" visibility="public" type="_vBjwkNzDEeGru4CffneBug" association="_vBjwftzDEeGru4CffneBug">
              <ownedComment xmi:type="uml:Comment" xmi:id="_vBjwsdzDEeGru4CffneBug" annotatedElement="_vBjwsNzDEeGru4CffneBug">
                <body>The Interface that owns this Operation.</body>
              </ownedComment>
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_vBjwstzDEeGru4CffneBug"/>
              <subsettedProperty xmi:type="uml:Property" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-RedefinableElement-redefinitionContext"/>
              <subsettedProperty xmi:type="uml:Property" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-Feature-featuringClassifier"/>
              <subsettedProperty xmi:type="uml:Property" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-NamedElement-namespace"/>
            </ownedAttribute>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="_vBjws9zDEeGru4CffneBug" name="Property">
            <ownedComment xmi:type="uml:Comment" xmi:id="_ZEEm4HOcEeKFY_nn9CuDrg">
              <body>Classes::Interfaces::Property extends (merge increment) fUML Property with the capability to be owned by an Interface.</body>
            </ownedComment>
            <generalization xmi:type="uml:Generalization" xmi:id="_vBjwtNzDEeGru4CffneBug" specific="_vBjws9zDEeGru4CffneBug">
              <general xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-StructuralFeature"/>
            </generalization>
            <ownedAttribute xmi:type="uml:Property" xmi:id="_vBjwtdzDEeGru4CffneBug" name="interface" visibility="public" type="_vBjwkNzDEeGru4CffneBug" association="_vBjwfdzDEeGru4CffneBug">
              <ownedComment xmi:type="uml:Comment" xmi:id="_vBjwttzDEeGru4CffneBug" annotatedElement="_vBjwtdzDEeGru4CffneBug">
                <body>References the Interface that owns the Property</body>
              </ownedComment>
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_vBjwt9zDEeGru4CffneBug"/>
              <subsettedProperty xmi:type="uml:Property" href="#_vBjwc9zDEeGru4CffneBug"/>
              <subsettedProperty xmi:type="uml:Property" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-NamedElement-namespace"/>
            </ownedAttribute>
          </packagedElement>
        </packagedElement>
        <packagedElement xmi:type="uml:Package" xmi:id="_j6YRIN1GEeGru4CffneBug" name="Dependencies">
          <ownedComment xmi:type="uml:Comment" xmi:id="_qaf2EHNuEeKFY_nn9CuDrg">
            <body>The Dependencies package is copied for two reasons. First, it introduces the metaclass Usage, which is needed to specify the required interfaces of a port. Second, it introduces the metaclass Realization, which is a generalization of InterfaceRealization  defined in the Interfaces package. Note that metaclasses DirectedRelationship and Substitution, as well as association A_mapping_abstraction are not included, since they are not relevant to Composite Structures modeling.</body>
          </ownedComment>
          <packageImport xmi:type="uml:PackageImport" xmi:id="_j6YRId1GEeGru4CffneBug" importedPackage="_W8TdOdzCEeGru4CffneBug" importingNamespace="_j6YRIN1GEeGru4CffneBug"/>
          <packageMerge xmi:type="uml:PackageMerge" xmi:id="_j6YRIt1GEeGru4CffneBug" mergedPackage="_W8TdOdzCEeGru4CffneBug" receivingPackage="_j6YRIN1GEeGru4CffneBug"/>
          <packagedElement xmi:type="uml:Association" xmi:id="_j6YRI91GEeGru4CffneBug" name="A_clientDependency_client" memberEnd="_j6YRSt1GEeGru4CffneBug _j6YRQt1GEeGru4CffneBug"/>
          <packagedElement xmi:type="uml:Association" xmi:id="_j6YRK91GEeGru4CffneBug" name="A_ownedMember_namespace" isDerived="true" memberEnd="_j6YRWd1GEeGru4CffneBug _j6YRTt1GEeGru4CffneBug"/>
          <packagedElement xmi:type="uml:Association" xmi:id="_j6YRLd1GEeGru4CffneBug" name="A_supplier_supplierDependency" memberEnd="_j6YRRd1GEeGru4CffneBug _j6YRLt1GEeGru4CffneBug">
            <ownedEnd xmi:type="uml:Property" xmi:id="_j6YRLt1GEeGru4CffneBug" name="supplierDependency" visibility="public" type="_j6YRPt1GEeGru4CffneBug" owningAssociation="_j6YRLd1GEeGru4CffneBug" association="_j6YRLd1GEeGru4CffneBug">
              <ownedComment xmi:type="uml:Comment" xmi:id="_j6YRL91GEeGru4CffneBug" annotatedElement="_j6YRLt1GEeGru4CffneBug">
                <body>Indicates the dependencies that reference the supplier.</body>
              </ownedComment>
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_j6YRMN1GEeGru4CffneBug"/>
              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_j6YRMd1GEeGru4CffneBug" value="*"/>
            </ownedEnd>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="_j6YRMt1GEeGru4CffneBug" name="Abstraction">
            <ownedComment xmi:type="uml:Comment" xmi:id="_j6YRM91GEeGru4CffneBug" annotatedElement="_j6YRMt1GEeGru4CffneBug">
              <body>Abstraction is introduced to enable modeling of InterfaceRealization. This is an indirect generalization of  InterfaceRealization.</body>
            </ownedComment>
            <generalization xmi:type="uml:Generalization" xmi:id="_j6YRNN1GEeGru4CffneBug" general="_j6YRPt1GEeGru4CffneBug" specific="_j6YRMt1GEeGru4CffneBug"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="_j6YRON1GEeGru4CffneBug" name="Classifier" isAbstract="true">
            <ownedComment xmi:type="uml:Comment" xmi:id="_RWaNEHObEeKFY_nn9CuDrg">
              <body>Classes::Dependencies::Classifier does not extend fUML Classifier. It is included in the Composite Structures syntax model because it is needed for the merging process described in the Overview subclause of the Abstract Syntax clause 7.</body>
            </ownedComment>
            <generalization xmi:type="uml:Generalization" xmi:id="_j6YROd1GEeGru4CffneBug" general="_j6YRV91GEeGru4CffneBug" specific="_j6YRON1GEeGru4CffneBug"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="_j6YRPt1GEeGru4CffneBug" name="Dependency">
            <ownedComment xmi:type="uml:Comment" xmi:id="_j6YRP91GEeGru4CffneBug" annotatedElement="_j6YRPt1GEeGru4CffneBug">
              <body>Dependency is introduced to enable modeling of both Usage and InterfaceRealization relationships. It is a generalization of these two metaclasses.</body>
            </ownedComment>
            <generalization xmi:type="uml:Generalization" xmi:id="_j6YRQd1GEeGru4CffneBug" general="_j6YRZN1GEeGru4CffneBug" specific="_j6YRPt1GEeGru4CffneBug"/>
            <ownedAttribute xmi:type="uml:Property" xmi:id="_j6YRQt1GEeGru4CffneBug" name="client" visibility="public" type="_j6YRSN1GEeGru4CffneBug" association="_j6YRI91GEeGru4CffneBug">
              <ownedComment xmi:type="uml:Comment" xmi:id="_j6YRQ91GEeGru4CffneBug" annotatedElement="_j6YRQt1GEeGru4CffneBug">
                <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="_j6YRRN1GEeGru4CffneBug" value="*"/>
            </ownedAttribute>
            <ownedAttribute xmi:type="uml:Property" xmi:id="_j6YRRd1GEeGru4CffneBug" name="supplier" visibility="public" type="_j6YRSN1GEeGru4CffneBug" association="_j6YRLd1GEeGru4CffneBug">
              <ownedComment xmi:type="uml:Comment" xmi:id="_j6YRRt1GEeGru4CffneBug" annotatedElement="_j6YRRd1GEeGru4CffneBug">
                <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="_j6YRR91GEeGru4CffneBug" value="*"/>
            </ownedAttribute>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="_j6YRSN1GEeGru4CffneBug" name="NamedElement" isAbstract="true">
            <ownedComment xmi:type="uml:Comment" xmi:id="_c05poHObEeKFY_nn9CuDrg">
              <body>Classes::Dependencies::NamedElement extends (merge increment) fUML NamedElement with the ability to indicate all the Dependencies that reference this NamedElement as a client (property clientDependency).</body>
            </ownedComment>
            <generalization xmi:type="uml:Generalization" xmi:id="_j6YRSd1GEeGru4CffneBug" specific="_j6YRSN1GEeGru4CffneBug">
              <general xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-Element"/>
            </generalization>
            <ownedAttribute xmi:type="uml:Property" xmi:id="_j6YRSt1GEeGru4CffneBug" name="clientDependency" visibility="public" type="_j6YRPt1GEeGru4CffneBug" association="_j6YRI91GEeGru4CffneBug">
              <ownedComment xmi:type="uml:Comment" xmi:id="_j6YRS91GEeGru4CffneBug" annotatedElement="_j6YRSt1GEeGru4CffneBug">
                <body>Indicates the dependencies that reference the client.</body>
              </ownedComment>
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_j6YRTN1GEeGru4CffneBug"/>
              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_j6YRTd1GEeGru4CffneBug" value="*"/>
            </ownedAttribute>
            <ownedAttribute xmi:type="uml:Property" xmi:id="_j6YRTt1GEeGru4CffneBug" name="namespace" visibility="public" type="_j6YRV91GEeGru4CffneBug" isReadOnly="true" isDerived="true" association="_j6YRK91GEeGru4CffneBug">
              <ownedComment xmi:type="uml:Comment" xmi:id="_j6YRT91GEeGru4CffneBug" annotatedElement="_j6YRTt1GEeGru4CffneBug">
                <body>Specifies the namespace that owns the NamedElement.</body>
              </ownedComment>
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_j6YRUN1GEeGru4CffneBug"/>
            </ownedAttribute>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_j6YRUd1GEeGru4CffneBug" name="namespace" visibility="public" bodyCondition="_j6YRU91GEeGru4CffneBug" class="_j6YRSN1GEeGru4CffneBug" isQuery="true">
              <ownedComment xmi:type="uml:Comment" xmi:id="_j6YRUt1GEeGru4CffneBug" annotatedElement="_j6YRUd1GEeGru4CffneBug">
                <body>Missing derivation for NamedElement::/namespace : Namespace</body>
              </ownedComment>
              <ownedRule xmi:type="uml:Constraint" xmi:id="_j6YRU91GEeGru4CffneBug" name="spec" constrainedElement="_j6YRUd1GEeGru4CffneBug _j6YRTt1GEeGru4CffneBug" context="_j6YRUd1GEeGru4CffneBug">
                <specification xmi:type="uml:OpaqueExpression" xmi:id="_j6YRVN1GEeGru4CffneBug">
                  <language>OCL</language>
                  <body>true</body>
                </specification>
              </ownedRule>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_j6YRVd1GEeGru4CffneBug" name="result" visibility="public" type="_j6YRV91GEeGru4CffneBug" direction="return">
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_j6YRVt1GEeGru4CffneBug"/>
              </ownedParameter>
            </ownedOperation>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="_j6YRV91GEeGru4CffneBug" name="Namespace" isAbstract="true">
            <ownedComment xmi:type="uml:Comment" xmi:id="_jkfuIHObEeKFY_nn9CuDrg">
              <body>Classes::Dependencies::Namespace does not extend fUML Namespace. It is included in the Composite Structures syntax model because it is needed for the merging process described in the Overview subclause of the Abstract Syntax clause 7.</body>
            </ownedComment>
            <generalization xmi:type="uml:Generalization" xmi:id="_j6YRWN1GEeGru4CffneBug" general="_j6YRSN1GEeGru4CffneBug" specific="_j6YRV91GEeGru4CffneBug"/>
            <ownedAttribute xmi:type="uml:Property" xmi:id="_j6YRWd1GEeGru4CffneBug" name="ownedMember" visibility="public" type="_j6YRSN1GEeGru4CffneBug" isReadOnly="true" aggregation="composite" isDerived="true" association="_j6YRK91GEeGru4CffneBug">
              <ownedComment xmi:type="uml:Comment" xmi:id="_j6YRWt1GEeGru4CffneBug" annotatedElement="_j6YRWd1GEeGru4CffneBug">
                <body>A collection of NamedElements owned by the Namespace.</body>
              </ownedComment>
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_j6YRW91GEeGru4CffneBug"/>
              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_j6YRXN1GEeGru4CffneBug" value="*"/>
            </ownedAttribute>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_j6YRXd1GEeGru4CffneBug" name="ownedMember" visibility="public" bodyCondition="_j6YRX91GEeGru4CffneBug" class="_j6YRV91GEeGru4CffneBug" isQuery="true">
              <ownedComment xmi:type="uml:Comment" xmi:id="_j6YRXt1GEeGru4CffneBug" annotatedElement="_j6YRXd1GEeGru4CffneBug">
                <body>Missing derivation for Namespace::/ownedMember : NamedElement</body>
              </ownedComment>
              <ownedRule xmi:type="uml:Constraint" xmi:id="_j6YRX91GEeGru4CffneBug" name="spec" constrainedElement="_j6YRXd1GEeGru4CffneBug _j6YRWd1GEeGru4CffneBug" context="_j6YRXd1GEeGru4CffneBug">
                <specification xmi:type="uml:OpaqueExpression" xmi:id="_j6YRYN1GEeGru4CffneBug">
                  <language>OCL</language>
                  <body>true</body>
                </specification>
              </ownedRule>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_j6YRYd1GEeGru4CffneBug" name="result" visibility="public" type="_j6YRSN1GEeGru4CffneBug" direction="return">
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_j6YRYt1GEeGru4CffneBug"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_j6YRY91GEeGru4CffneBug" value="*"/>
              </ownedParameter>
            </ownedOperation>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="_j6YRZN1GEeGru4CffneBug" name="PackageableElement" isAbstract="true">
            <ownedComment xmi:type="uml:Comment" xmi:id="_q1QmAHObEeKFY_nn9CuDrg">
              <body>Classes::Dependencies::PackeageableElement does not extend fUML PackageableElement. It is included in the Composite Structures syntax model to make the merging process (described in the Overview subclause of the Abstract Syntax clause 7) meaningful.</body>
            </ownedComment>
            <generalization xmi:type="uml:Generalization" xmi:id="_j6YRZd1GEeGru4CffneBug" general="_j6YRSN1GEeGru4CffneBug" specific="_j6YRZN1GEeGru4CffneBug"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="_j6YRZt1GEeGru4CffneBug" name="Realization">
            <ownedComment xmi:type="uml:Comment" xmi:id="_j6YRZ91GEeGru4CffneBug" annotatedElement="_j6YRZt1GEeGru4CffneBug">
              <body>Realization is introduced to enable modeling of InterfaceRealization. This is a generalization of InterfaceRealization.</body>
            </ownedComment>
            <generalization xmi:type="uml:Generalization" xmi:id="_j6YRaN1GEeGru4CffneBug" general="_j6YRMt1GEeGru4CffneBug" specific="_j6YRZt1GEeGru4CffneBug"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="_j6YRcN1GEeGru4CffneBug" name="Usage">
            <ownedComment xmi:type="uml:Comment" xmi:id="_j6YRcd1GEeGru4CffneBug" annotatedElement="_j6YRcN1GEeGru4CffneBug">
              <body>Usage is introduced since it is required to specify required interfaces of a port.</body>
            </ownedComment>
            <generalization xmi:type="uml:Generalization" xmi:id="_j6YRct1GEeGru4CffneBug" general="_j6YRPt1GEeGru4CffneBug" specific="_j6YRcN1GEeGru4CffneBug"/>
          </packagedElement>
        </packagedElement>
      </packagedElement>
      <packagedElement xmi:type="uml:Package" xmi:id="_W8WhWdzCEeGru4CffneBug" name="Actions">
        <packagedElement xmi:type="uml:Package" xmi:id="_W8WhWtzCEeGru4CffneBug" name="BasicActions"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Package" xmi:id="_W8Y88tzCEeGru4CffneBug" name="L2">
        <packageMerge xmi:type="uml:PackageMerge" xmi:id="_U4EVcN17EeGnO-TF_1T_iQ" mergedPackage="_Ldo3WdzBEeGru4CffneBug" receivingPackage="_W8Y88tzCEeGru4CffneBug"/>
        <packageMerge xmi:type="uml:PackageMerge" xmi:id="_VgKQMN17EeGnO-TF_1T_iQ" mergedPackage="_LdpeRdzBEeGru4CffneBug" receivingPackage="_W8Y88tzCEeGru4CffneBug"/>
        <packageMerge xmi:type="uml:PackageMerge" xmi:id="_gDi1sOC4EeGcc4S1CmuFHA" mergedPackage="_zDsxEuCxEeGcc4S1CmuFHA" receivingPackage="_W8Y88tzCEeGru4CffneBug"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Package" xmi:id="_LdoP0NzBEeGru4CffneBug" name="CompositeStructures">
        <ownedComment xmi:type="uml:Comment" xmi:id="_d9JSoHNwEeKFY_nn9CuDrg">
          <body>The CompositeStructures package is completely copied into the Composite Structures syntax model. This is because all of its subpackages introduce key modeling concepts underlying Composite Structures. This includes packages InternalStructures, InvocationActions, Ports and StructuredClasses. The following subclauses provide details about the content of these subpackages.</body>
        </ownedComment>
        <packageImport xmi:type="uml:PackageImport" xmi:id="_LdoP0dzBEeGru4CffneBug" importedPackage="_W8TdONzCEeGru4CffneBug" importingNamespace="_LdoP0NzBEeGru4CffneBug"/>
        <packagedElement xmi:type="uml:Package" xmi:id="_LdoQEdzBEeGru4CffneBug" name="InternalStructures">
          <ownedComment xmi:type="uml:Comment" xmi:id="_k3mjUHNwEeKFY_nn9CuDrg">
            <body>The InternalStructures package is introduced to enable modeling of the internal structure of a class as a network of parts, linked through connectors. The topology of parts and connectors places constraints on the runtime structure of a class instance.</body>
          </ownedComment>
          <packageMerge xmi:type="uml:PackageMerge" xmi:id="_LdoQEtzBEeGru4CffneBug" mergedPackage="_vBjwcNzDEeGru4CffneBug" receivingPackage="_LdoQEdzBEeGru4CffneBug"/>
          <packagedElement xmi:type="uml:Association" xmi:id="_LdoQE9zBEeGru4CffneBug" name="A_attribute_classifier" isDerived="true" memberEnd="_Ldo28tzBEeGru4CffneBug _LdoQFNzBEeGru4CffneBug">
            <ownedEnd xmi:type="uml:Property" xmi:id="_LdoQFNzBEeGru4CffneBug" name="classifier" visibility="public" type="_Ldo279zBEeGru4CffneBug" owningAssociation="_LdoQE9zBEeGru4CffneBug" association="_LdoQE9zBEeGru4CffneBug">
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_LdoQFdzBEeGru4CffneBug"/>
            </ownedEnd>
          </packagedElement>
          <packagedElement xmi:type="uml:Association" xmi:id="_LdoQFtzBEeGru4CffneBug" name="A_definingEnd_connectorEnd" isDerived="true" memberEnd="_Ldo3JdzBEeGru4CffneBug _LdoQF9zBEeGru4CffneBug">
            <ownedEnd xmi:type="uml:Property" xmi:id="_LdoQF9zBEeGru4CffneBug" name="connectorEnd" visibility="public" type="_Ldo3H9zBEeGru4CffneBug" owningAssociation="_LdoQFtzBEeGru4CffneBug" association="_LdoQFtzBEeGru4CffneBug">
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_LdoQGNzBEeGru4CffneBug"/>
              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_LdoQGdzBEeGru4CffneBug" value="*"/>
            </ownedEnd>
          </packagedElement>
          <packagedElement xmi:type="uml:Association" xmi:id="_LdoQGtzBEeGru4CffneBug" name="A_end_connector" memberEnd="_Ldo3FNzBEeGru4CffneBug _LdoQG9zBEeGru4CffneBug">
            <ownedEnd xmi:type="uml:Property" xmi:id="_LdoQG9zBEeGru4CffneBug" name="connector" visibility="public" type="_Ldo3B9zBEeGru4CffneBug" owningAssociation="_LdoQGtzBEeGru4CffneBug" association="_LdoQGtzBEeGru4CffneBug">
              <subsettedProperty xmi:type="uml:Property" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-Element-owner"/>
            </ownedEnd>
          </packagedElement>
          <packagedElement xmi:type="uml:Association" xmi:id="_LdoQHNzBEeGru4CffneBug" name="A_end_role" memberEnd="_Ldo2_NzBEeGru4CffneBug _Ldo3KNzBEeGru4CffneBug"/>
          <packagedElement xmi:type="uml:Association" xmi:id="_LdoQHdzBEeGru4CffneBug" name="A_feature_featuringClassifier" isDerived="true" memberEnd="_Ldo29tzBEeGru4CffneBug _Ldo3MtzBEeGru4CffneBug"/>
          <packagedElement xmi:type="uml:Association" xmi:id="_LdoQHtzBEeGru4CffneBug" name="A_ownedAttribute_class" memberEnd="_Ldo27NzBEeGru4CffneBug _Ldo3OdzBEeGru4CffneBug"/>
          <packagedElement xmi:type="uml:Association" xmi:id="_LdoQH9zBEeGru4CffneBug" name="A_ownedAttribute_structuredClassifier" memberEnd="_Ldo3QtzBEeGru4CffneBug _LdoQIdzBEeGru4CffneBug">
            <generalization xmi:type="uml:Generalization" xmi:id="_LdoQINzBEeGru4CffneBug" general="_Ldo24tzBEeGru4CffneBug" specific="_LdoQH9zBEeGru4CffneBug"/>
            <ownedEnd xmi:type="uml:Property" xmi:id="_LdoQIdzBEeGru4CffneBug" name="structuredClassifier" visibility="public" type="_Ldo3O9zBEeGru4CffneBug" owningAssociation="_LdoQH9zBEeGru4CffneBug" redefinedProperty="_Ldo249zBEeGru4CffneBug" association="_LdoQH9zBEeGru4CffneBug">
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_LdoQItzBEeGru4CffneBug"/>
              <subsettedProperty xmi:type="uml:Property" href="#_LdoQFNzBEeGru4CffneBug"/>
              <subsettedProperty xmi:type="uml:Property" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-NamedElement-namespace"/>
            </ownedEnd>
          </packagedElement>
          <packagedElement xmi:type="uml:Association" xmi:id="_LdoQI9zBEeGru4CffneBug" name="A_ownedConnector_structuredClassifier" memberEnd="_Ldo3RtzBEeGru4CffneBug _LdoQJNzBEeGru4CffneBug">
            <ownedEnd xmi:type="uml:Property" xmi:id="_LdoQJNzBEeGru4CffneBug" name="structuredClassifier" visibility="public" type="_Ldo3O9zBEeGru4CffneBug" owningAssociation="_LdoQI9zBEeGru4CffneBug" association="_LdoQI9zBEeGru4CffneBug">
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_LdoQJdzBEeGru4CffneBug"/>
              <subsettedProperty xmi:type="uml:Property" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-NamedElement-namespace"/>
              <subsettedProperty xmi:type="uml:Property" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-Feature-featuringClassifier"/>
              <subsettedProperty xmi:type="uml:Property" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-RedefinableElement-redefinitionContext"/>
            </ownedEnd>
          </packagedElement>
          <packagedElement xmi:type="uml:Association" xmi:id="_LdoQJtzBEeGru4CffneBug" name="A_part_structuredClassifier" isDerived="true" memberEnd="_Ldo3StzBEeGru4CffneBug _LdoQJ9zBEeGru4CffneBug">
            <ownedEnd xmi:type="uml:Property" xmi:id="_LdoQJ9zBEeGru4CffneBug" name="structuredClassifier" visibility="public" type="_Ldo3O9zBEeGru4CffneBug" owningAssociation="_LdoQJtzBEeGru4CffneBug" association="_LdoQJtzBEeGru4CffneBug">
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_LdoQKNzBEeGru4CffneBug"/>
            </ownedEnd>
          </packagedElement>
          <packagedElement xmi:type="uml:Association" xmi:id="_LdoQKdzBEeGru4CffneBug" name="A_redefinedConnector_connector" memberEnd="_Ldo3GNzBEeGru4CffneBug _LdoQKtzBEeGru4CffneBug">
            <ownedEnd xmi:type="uml:Property" xmi:id="_LdoQKtzBEeGru4CffneBug" name="connector" visibility="public" type="_Ldo3B9zBEeGru4CffneBug" owningAssociation="_LdoQKdzBEeGru4CffneBug" association="_LdoQKdzBEeGru4CffneBug">
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ldo24NzBEeGru4CffneBug"/>
              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ldo24dzBEeGru4CffneBug" value="*"/>
              <subsettedProperty xmi:type="uml:Property" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-A_redefinedElement_redefinableElement-redefinableElement"/>
            </ownedEnd>
          </packagedElement>
          <packagedElement xmi:type="uml:Association" xmi:id="_Ldo24tzBEeGru4CffneBug" name="A_role_structuredClassifier" isDerived="true" memberEnd="_Ldo3TtzBEeGru4CffneBug _Ldo249zBEeGru4CffneBug">
            <ownedEnd xmi:type="uml:Property" xmi:id="_Ldo249zBEeGru4CffneBug" name="structuredClassifier" visibility="public" type="_Ldo3O9zBEeGru4CffneBug" owningAssociation="_Ldo24tzBEeGru4CffneBug" association="_Ldo24tzBEeGru4CffneBug">
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ldo25NzBEeGru4CffneBug"/>
              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ldo25dzBEeGru4CffneBug" value="*"/>
              <subsettedProperty xmi:type="uml:Property" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-A_member_namespace-namespace"/>
            </ownedEnd>
          </packagedElement>
          <packagedElement xmi:type="uml:Association" xmi:id="_Ldo25tzBEeGru4CffneBug" name="A_type_connector" memberEnd="_Ldo3HNzBEeGru4CffneBug _Ldo259zBEeGru4CffneBug">
            <ownedEnd xmi:type="uml:Property" xmi:id="_Ldo259zBEeGru4CffneBug" name="connector" visibility="public" type="_Ldo3B9zBEeGru4CffneBug" owningAssociation="_Ldo25tzBEeGru4CffneBug" association="_Ldo25tzBEeGru4CffneBug">
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ldo26NzBEeGru4CffneBug"/>
              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ldo26dzBEeGru4CffneBug" value="*"/>
            </ownedEnd>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="_Ldo26tzBEeGru4CffneBug" name="Class">
            <ownedComment xmi:type="uml:Comment" xmi:id="_1_HZ4HOcEeKFY_nn9CuDrg">
              <body>CompositeStructures::InternalStructures::Class extends (merge increment) fUML Class by making it a StructuredClassifier.</body>
            </ownedComment>
            <generalization xmi:type="uml:Generalization" xmi:id="_Ldo269zBEeGru4CffneBug" general="_Ldo3O9zBEeGru4CffneBug" specific="_Ldo26tzBEeGru4CffneBug"/>
            <ownedAttribute xmi:type="uml:Property" xmi:id="_Ldo27NzBEeGru4CffneBug" name="ownedAttribute" visibility="public" type="_Ldo3NdzBEeGru4CffneBug" isOrdered="true" aggregation="composite" redefinedProperty="_Ldo3QtzBEeGru4CffneBug" association="_LdoQHtzBEeGru4CffneBug">
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ldo27dzBEeGru4CffneBug"/>
              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ldo27tzBEeGru4CffneBug" value="*"/>
            </ownedAttribute>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="_Ldo279zBEeGru4CffneBug" name="Classifier" isAbstract="true">
            <ownedComment xmi:type="uml:Comment" xmi:id="_Ldo28NzBEeGru4CffneBug" annotatedElement="_Ldo279zBEeGru4CffneBug">
              <body>CompositeStructures::InternalStructures::Classifier does not extend fUML Classifier. This metaclass  is included in the Composite Structures syntax model because it is needed for the merging process described in the Overview subclause of the Abstract Syntax clause 7.</body>
            </ownedComment>
            <generalization xmi:type="uml:Generalization" xmi:id="_Ldo28dzBEeGru4CffneBug" specific="_Ldo279zBEeGru4CffneBug">
              <general xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-Namespace"/>
            </generalization>
            <ownedAttribute xmi:type="uml:Property" xmi:id="_Ldo28tzBEeGru4CffneBug" name="attribute" visibility="public" type="_Ldo3NdzBEeGru4CffneBug" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_LdoQE9zBEeGru4CffneBug">
              <ownedComment xmi:type="uml:Comment" xmi:id="_Ldo289zBEeGru4CffneBug" annotatedElement="_Ldo28tzBEeGru4CffneBug">
                <body>Refers to all of the Properties that are direct (i.e. not inherited or imported) attributes of the classifier.</body>
              </ownedComment>
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ldo29NzBEeGru4CffneBug"/>
              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ldo29dzBEeGru4CffneBug" value="*"/>
            </ownedAttribute>
            <ownedAttribute xmi:type="uml:Property" xmi:id="_Ldo29tzBEeGru4CffneBug" name="feature" visibility="public" type="_Ldo3MNzBEeGru4CffneBug" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_LdoQHdzBEeGru4CffneBug">
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ldo299zBEeGru4CffneBug"/>
              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ldo2-NzBEeGru4CffneBug" value="*"/>
            </ownedAttribute>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="_Ldo2-dzBEeGru4CffneBug" name="ConnectableElement" isAbstract="true">
            <ownedComment xmi:type="uml:Comment" xmi:id="_Ldo2-tzBEeGru4CffneBug" annotatedElement="_Ldo2-dzBEeGru4CffneBug">
              <body>ConnectableElement is introduced as an abstract metaclass representing elements than can be interconnected by being attached to the connector ends of connectors.</body>
            </ownedComment>
            <generalization xmi:type="uml:Generalization" xmi:id="_Ldo2-9zBEeGru4CffneBug" specific="_Ldo2-dzBEeGru4CffneBug">
              <general xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-TypedElement"/>
            </generalization>
            <ownedAttribute xmi:type="uml:Property" xmi:id="_Ldo2_NzBEeGru4CffneBug" name="end" visibility="public" type="_Ldo3H9zBEeGru4CffneBug" isOrdered="true" isReadOnly="true" isDerived="true" association="_LdoQHNzBEeGru4CffneBug">
              <ownedComment xmi:type="uml:Comment" xmi:id="_Ldo2_dzBEeGru4CffneBug" annotatedElement="_Ldo2_NzBEeGru4CffneBug">
                <body>Denotes a set of connector ends that attaches to this connectable element.</body>
              </ownedComment>
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ldo2_tzBEeGru4CffneBug"/>
              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ldo2_9zBEeGru4CffneBug" value="*"/>
            </ownedAttribute>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_Ldo3ANzBEeGru4CffneBug" name="end" visibility="public" bodyCondition="_Ldo3AtzBEeGru4CffneBug" class="_Ldo2-dzBEeGru4CffneBug" isQuery="true">
              <ownedComment xmi:type="uml:Comment" xmi:id="_Ldo3AdzBEeGru4CffneBug" annotatedElement="_Ldo3ANzBEeGru4CffneBug">
                <body>Missing derivation for ConnectableElement::/end : ConnectorEnd</body>
              </ownedComment>
              <ownedRule xmi:type="uml:Constraint" xmi:id="_Ldo3AtzBEeGru4CffneBug" name="spec" constrainedElement="_Ldo3ANzBEeGru4CffneBug _Ldo2_NzBEeGru4CffneBug" context="_Ldo3ANzBEeGru4CffneBug">
                <specification xmi:type="uml:OpaqueExpression" xmi:id="_Ldo3A9zBEeGru4CffneBug">
                  <language>OCL</language>
                  <body>result = ConnectorEnd.allInstances()->select(e | e.role=self)</body>
                </specification>
              </ownedRule>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_Ldo3BNzBEeGru4CffneBug" name="result" visibility="public" type="_Ldo3H9zBEeGru4CffneBug" direction="return">
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ldo3BdzBEeGru4CffneBug"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ldo3BtzBEeGru4CffneBug" value="*"/>
              </ownedParameter>
            </ownedOperation>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="_Ldo3B9zBEeGru4CffneBug" name="Connector">
            <ownedComment xmi:type="uml:Comment" xmi:id="_Ldo3CNzBEeGru4CffneBug" annotatedElement="_Ldo3B9zBEeGru4CffneBug">
              <body>Connector is introduced to enable modeling of interconnections between parts and/or roles, in the context of a structured classifier. This specification introduces the additional constraint that the type of a connector  must be defined (i.e., it is not an optional attribute as it is in UML). The rationale for this constraint is given in subclause 8.1.</body>
            </ownedComment>
            <ownedRule xmi:type="uml:Constraint" xmi:id="_wmsSwHOTEeKFY_nn9CuDrg" name="connector_is_typed" context="_Ldo3B9zBEeGru4CffneBug">
              <specification xmi:type="uml:OpaqueExpression" xmi:id="_80DAcHOTEeKFY_nn9CuDrg" name="spec">
                <language>Natural language</language>
                <language>OCL</language>
                <body>A Connector must be typed by an association</body>
                <body>inv: self.type->notEmpty()</body>
              </specification>
            </ownedRule>
            <generalization xmi:type="uml:Generalization" xmi:id="_Ldo3EtzBEeGru4CffneBug" specific="_Ldo3B9zBEeGru4CffneBug">
              <general xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-Feature"/>
            </generalization>
            <generalization xmi:type="uml:Generalization" xmi:id="_Ldo3E9zBEeGru4CffneBug" general="_Ldo3MNzBEeGru4CffneBug" specific="_Ldo3B9zBEeGru4CffneBug"/>
            <ownedAttribute xmi:type="uml:Property" xmi:id="_Ldo3FNzBEeGru4CffneBug" name="end" visibility="public" type="_Ldo3H9zBEeGru4CffneBug" isOrdered="true" aggregation="composite" association="_LdoQGtzBEeGru4CffneBug">
              <ownedComment xmi:type="uml:Comment" xmi:id="_Ldo3FdzBEeGru4CffneBug" annotatedElement="_Ldo3FNzBEeGru4CffneBug">
                <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>
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ldo3FtzBEeGru4CffneBug" value="2"/>
              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ldo3F9zBEeGru4CffneBug" value="*"/>
              <subsettedProperty xmi:type="uml:Property" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-Element-ownedElement"/>
            </ownedAttribute>
            <ownedAttribute xmi:type="uml:Property" xmi:id="_Ldo3GNzBEeGru4CffneBug" name="redefinedConnector" visibility="public" type="_Ldo3B9zBEeGru4CffneBug" association="_LdoQKdzBEeGru4CffneBug">
              <ownedComment xmi:type="uml:Comment" xmi:id="_Ldo3GdzBEeGru4CffneBug" annotatedElement="_Ldo3GNzBEeGru4CffneBug">
                <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>
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ldo3GtzBEeGru4CffneBug"/>
              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ldo3G9zBEeGru4CffneBug" value="*"/>
              <subsettedProperty xmi:type="uml:Property" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-RedefinableElement-redefinedElement"/>
            </ownedAttribute>
            <ownedAttribute xmi:type="uml:Property" xmi:id="_Ldo3HNzBEeGru4CffneBug" name="type" visibility="public" association="_Ldo25tzBEeGru4CffneBug">
              <ownedComment xmi:type="uml:Comment" xmi:id="_Ldo3HdzBEeGru4CffneBug" annotatedElement="_Ldo3HNzBEeGru4CffneBug">
                <body>An optional association that specifies the link corresponding to this connector.</body>
              </ownedComment>
              <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-Association"/>
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ldo3HtzBEeGru4CffneBug"/>
            </ownedAttribute>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="_Ldo3H9zBEeGru4CffneBug" name="ConnectorEnd">
            <ownedComment xmi:type="uml:Comment" xmi:id="_Ldo3INzBEeGru4CffneBug" annotatedElement="_Ldo3H9zBEeGru4CffneBug">
              <body>ConnectorEnd is introduced to allow modeling of Connectors.</body>
            </ownedComment>
            <generalization xmi:type="uml:Generalization" xmi:id="_Ldo3JNzBEeGru4CffneBug" specific="_Ldo3H9zBEeGru4CffneBug">
              <general xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-MultiplicityElement"/>
            </generalization>
            <ownedAttribute xmi:type="uml:Property" xmi:id="_Ldo3JdzBEeGru4CffneBug" name="definingEnd" visibility="public" type="_Ldo3NdzBEeGru4CffneBug" isReadOnly="true" isDerived="true" association="_LdoQFtzBEeGru4CffneBug">
              <ownedComment xmi:type="uml:Comment" xmi:id="_Ldo3JtzBEeGru4CffneBug" annotatedElement="_Ldo3JdzBEeGru4CffneBug">
                <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="_Ldo3J9zBEeGru4CffneBug"/>
            </ownedAttribute>
            <ownedAttribute xmi:type="uml:Property" xmi:id="_Ldo3KNzBEeGru4CffneBug" name="role" visibility="public" type="_Ldo2-dzBEeGru4CffneBug" association="_LdoQHNzBEeGru4CffneBug">
              <ownedComment xmi:type="uml:Comment" xmi:id="_Ldo3KdzBEeGru4CffneBug" annotatedElement="_Ldo3KNzBEeGru4CffneBug">
                <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="_Ldo3KtzBEeGru4CffneBug" name="definingEnd" visibility="public" bodyCondition="_Ldo3LNzBEeGru4CffneBug" class="_Ldo3H9zBEeGru4CffneBug" isQuery="true">
              <ownedComment xmi:type="uml:Comment" xmi:id="_Ldo3K9zBEeGru4CffneBug" annotatedElement="_Ldo3KtzBEeGru4CffneBug">
                <body>Missing derivation for ConnectorEnd::/definingEnd : Property</body>
              </ownedComment>
              <ownedRule xmi:type="uml:Constraint" xmi:id="_Ldo3LNzBEeGru4CffneBug" name="spec" constrainedElement="_Ldo3KtzBEeGru4CffneBug _Ldo3JdzBEeGru4CffneBug" context="_Ldo3KtzBEeGru4CffneBug">
                <specification xmi:type="uml:OpaqueExpression" xmi:id="_Ldo3LdzBEeGru4CffneBug">
                  <language>OCL</language>
                  <body>true</body>
                </specification>
              </ownedRule>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_Ldo3LtzBEeGru4CffneBug" name="result" visibility="public" type="_Ldo3NdzBEeGru4CffneBug" direction="return">
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ldo3L9zBEeGru4CffneBug"/>
              </ownedParameter>
            </ownedOperation>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="_Ldo3MNzBEeGru4CffneBug" name="Feature" isAbstract="true">
            <ownedComment xmi:type="uml:Comment" xmi:id="_OZYwYHOdEeKFY_nn9CuDrg">
              <body>CompositeStructures::InternalStructures::Feature does not extend fUML Feature. It is included in the Composite Structures syntax model because it is needed for the merging process described in the Overview subclause of the Abstract Syntax clause 7.</body>
            </ownedComment>
            <generalization xmi:type="uml:Generalization" xmi:id="_Ldo3MdzBEeGru4CffneBug" specific="_Ldo3MNzBEeGru4CffneBug">
              <general xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-RedefinableElement"/>
            </generalization>
            <ownedAttribute xmi:type="uml:Property" xmi:id="_Ldo3MtzBEeGru4CffneBug" name="featuringClassifier" visibility="public" type="_Ldo279zBEeGru4CffneBug" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_LdoQHdzBEeGru4CffneBug">
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ldo3M9zBEeGru4CffneBug"/>
              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ldo3NNzBEeGru4CffneBug" value="*"/>
            </ownedAttribute>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="_Ldo3NdzBEeGru4CffneBug" name="Property">
            <ownedComment xmi:type="uml:Comment" xmi:id="_Ldo3NtzBEeGru4CffneBug" annotatedElement="_Ldo3NdzBEeGru4CffneBug">
              <body>CompositeStructures::InternalStructures::Property extends (merge increment) fUML Property. By being a ConnectableElement, a Property can be connected to other connectable elements through connectors.</body>
            </ownedComment>
            <generalization xmi:type="uml:Generalization" xmi:id="_Ldo3N9zBEeGru4CffneBug" specific="_Ldo3NdzBEeGru4CffneBug">
              <general xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-StructuralFeature"/>
            </generalization>
            <generalization xmi:type="uml:Generalization" xmi:id="_Ldo3ONzBEeGru4CffneBug" general="_Ldo2-dzBEeGru4CffneBug" specific="_Ldo3NdzBEeGru4CffneBug"/>
            <ownedAttribute xmi:type="uml:Property" xmi:id="_Ldo3OdzBEeGru4CffneBug" name="class" visibility="public" type="_Ldo26tzBEeGru4CffneBug" subsettedProperty="_LdoQIdzBEeGru4CffneBug" association="_LdoQHtzBEeGru4CffneBug">
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ldo3OtzBEeGru4CffneBug"/>
            </ownedAttribute>
            <ownedAttribute xmi:type="uml:Property" xmi:id="_dxPWgMFBEeKkJbQgitQ3JQ" name="defaultValue" aggregation="composite" association="_dxPWg8FBEeKkJbQgitQ3JQ">
              <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-ValueSpecification"/>
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_dxPWgcFBEeKkJbQgitQ3JQ"/>
              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_dxPWgsFBEeKkJbQgitQ3JQ" value="1"/>
            </ownedAttribute>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="_Ldo3O9zBEeGru4CffneBug" name="StructuredClassifier" isAbstract="true">
            <ownedComment xmi:type="uml:Comment" xmi:id="_Ldo3PNzBEeGru4CffneBug" annotatedElement="_Ldo3O9zBEeGru4CffneBug">
              <body>StructuredClassifier is introduced to enable modeling of internal structures comprising a network of parts and roles linked by connectors.</body>
            </ownedComment>
            <generalization xmi:type="uml:Generalization" xmi:id="_Ldo3QNzBEeGru4CffneBug" specific="_Ldo3O9zBEeGru4CffneBug">
              <general xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-Classifier"/>
            </generalization>
            <generalization xmi:type="uml:Generalization" xmi:id="_Ldo3QdzBEeGru4CffneBug" general="_Ldo279zBEeGru4CffneBug" specific="_Ldo3O9zBEeGru4CffneBug"/>
            <ownedAttribute xmi:type="uml:Property" xmi:id="_Ldo3QtzBEeGru4CffneBug" name="ownedAttribute" visibility="public" type="_Ldo3NdzBEeGru4CffneBug" isOrdered="true" aggregation="composite" association="_LdoQH9zBEeGru4CffneBug">
              <ownedComment xmi:type="uml:Comment" xmi:id="_Ldo3Q9zBEeGru4CffneBug" annotatedElement="_Ldo3QtzBEeGru4CffneBug">
                <body>References the properties owned by the classifier.</body>
              </ownedComment>
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ldo3RNzBEeGru4CffneBug"/>
              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ldo3RdzBEeGru4CffneBug" value="*"/>
              <subsettedProperty xmi:type="uml:Property" href="#_Ldo3TtzBEeGru4CffneBug"/>
              <subsettedProperty xmi:type="uml:Property" href="#_Ldo28tzBEeGru4CffneBug"/>
              <subsettedProperty xmi:type="uml:Property" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-Namespace-ownedMember"/>
            </ownedAttribute>
            <ownedAttribute xmi:type="uml:Property" xmi:id="_Ldo3RtzBEeGru4CffneBug" name="ownedConnector" visibility="public" type="_Ldo3B9zBEeGru4CffneBug" aggregation="composite" association="_LdoQI9zBEeGru4CffneBug">
              <ownedComment xmi:type="uml:Comment" xmi:id="_Ldo3R9zBEeGru4CffneBug" annotatedElement="_Ldo3RtzBEeGru4CffneBug">
                <body>References the connectors owned by the classifier.</body>
              </ownedComment>
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ldo3SNzBEeGru4CffneBug"/>
              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ldo3SdzBEeGru4CffneBug" value="*"/>
              <subsettedProperty xmi:type="uml:Property" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-Classifier-feature"/>
              <subsettedProperty xmi:type="uml:Property" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-Namespace-ownedMember"/>
              <subsettedProperty xmi:type="uml:Property" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-A_redefinitionContext_redefinableElement-redefinableElement"/>
            </ownedAttribute>
            <ownedAttribute xmi:type="uml:Property" xmi:id="_Ldo3StzBEeGru4CffneBug" name="part" visibility="public" type="_Ldo3NdzBEeGru4CffneBug" isReadOnly="true" isDerived="true" association="_LdoQJtzBEeGru4CffneBug">
              <ownedComment xmi:type="uml:Comment" xmi:id="_Ldo3S9zBEeGru4CffneBug" annotatedElement="_Ldo3StzBEeGru4CffneBug">
                <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>
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ldo3TNzBEeGru4CffneBug"/>
              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ldo3TdzBEeGru4CffneBug" value="*"/>
            </ownedAttribute>
            <ownedAttribute xmi:type="uml:Property" xmi:id="_Ldo3TtzBEeGru4CffneBug" name="role" visibility="public" type="_Ldo2-dzBEeGru4CffneBug" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_Ldo24tzBEeGru4CffneBug">
              <ownedComment xmi:type="uml:Comment" xmi:id="_Ldo3T9zBEeGru4CffneBug" annotatedElement="_Ldo3TtzBEeGru4CffneBug">
                <body>References the roles that instances may play in this classifier.</body>
              </ownedComment>
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ldo3UNzBEeGru4CffneBug"/>
              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ldo3UdzBEeGru4CffneBug" value="*"/>
              <subsettedProperty xmi:type="uml:Property" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-Namespace-member"/>
            </ownedAttribute>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_Ldo3UtzBEeGru4CffneBug" name="part" visibility="public" bodyCondition="_Ldo3VNzBEeGru4CffneBug" class="_Ldo3O9zBEeGru4CffneBug" isQuery="true">
              <ownedComment xmi:type="uml:Comment" xmi:id="_Ldo3U9zBEeGru4CffneBug" annotatedElement="_Ldo3UtzBEeGru4CffneBug">
                <body>Missing derivation for StructuredClassifier::/part : Property</body>
              </ownedComment>
              <ownedRule xmi:type="uml:Constraint" xmi:id="_Ldo3VNzBEeGru4CffneBug" name="spec" constrainedElement="_Ldo3UtzBEeGru4CffneBug _Ldo3StzBEeGru4CffneBug" context="_Ldo3UtzBEeGru4CffneBug">
                <specification xmi:type="uml:OpaqueExpression" xmi:id="_Ldo3VdzBEeGru4CffneBug">
                  <language>OCL</language>
                  <body>true</body>
                </specification>
              </ownedRule>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_Ldo3VtzBEeGru4CffneBug" name="result" visibility="public" type="_Ldo3NdzBEeGru4CffneBug" direction="return">
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ldo3V9zBEeGru4CffneBug"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ldo3WNzBEeGru4CffneBug" value="*"/>
              </ownedParameter>
            </ownedOperation>
          </packagedElement>
          <packagedElement xmi:type="uml:Association" xmi:id="_dxPWg8FBEeKkJbQgitQ3JQ" name="A_property_valueSpecification" memberEnd="_dxPWhMFBEeKkJbQgitQ3JQ _dxPWgMFBEeKkJbQgitQ3JQ">
            <ownedEnd xmi:type="uml:Property" xmi:id="_dxPWhMFBEeKkJbQgitQ3JQ" name="owningProperty" type="_Ldo3NdzBEeGru4CffneBug" owningAssociation="_dxPWg8FBEeKkJbQgitQ3JQ" association="_dxPWg8FBEeKkJbQgitQ3JQ">
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_dxPWhcFBEeKkJbQgitQ3JQ" value="1"/>
              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_dxPWhsFBEeKkJbQgitQ3JQ" value="1"/>
            </ownedEnd>
          </packagedElement>
        </packagedElement>
        <packagedElement xmi:type="uml:Package" xmi:id="_Ldo3WdzBEeGru4CffneBug" name="InvocationActions">
          <ownedComment xmi:type="uml:Comment" xmi:id="_t79fwHNwEeKFY_nn9CuDrg">
            <body>The InvocationActions package introduces extensions to fUML InvocationAction and Trigger to account for ports of an EncapsulatedClassifier.</body>
          </ownedComment>
          <packageMerge xmi:type="uml:PackageMerge" xmi:id="_Ldo3WtzBEeGru4CffneBug" mergedPackage="_W8WhWtzCEeGru4CffneBug" receivingPackage="_Ldo3WdzBEeGru4CffneBug"/>
          <packageMerge xmi:type="uml:PackageMerge" xmi:id="_Ldo3W9zBEeGru4CffneBug" mergedPackage="_Ldo3ctzBEeGru4CffneBug" receivingPackage="_Ldo3WdzBEeGru4CffneBug"/>
          <packagedElement xmi:type="uml:Association" xmi:id="_Ldo3XNzBEeGru4CffneBug" name="A_onPort_invocationAction" memberEnd="_Ldo3adzBEeGru4CffneBug _Ldo3XdzBEeGru4CffneBug">
            <ownedEnd xmi:type="uml:Property" xmi:id="_Ldo3XdzBEeGru4CffneBug" name="invocationAction" visibility="public" type="_Ldo3ZNzBEeGru4CffneBug" owningAssociation="_Ldo3XNzBEeGru4CffneBug" association="_Ldo3XNzBEeGru4CffneBug">
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ldo3XtzBEeGru4CffneBug"/>
              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ldo3X9zBEeGru4CffneBug" value="*"/>
            </ownedEnd>
          </packagedElement>
          <packagedElement xmi:type="uml:Association" xmi:id="_Ldo3YNzBEeGru4CffneBug" name="A_port_trigger" memberEnd="_Ldo3btzBEeGru4CffneBug _Ldo3YdzBEeGru4CffneBug">
            <ownedEnd xmi:type="uml:Property" xmi:id="_Ldo3YdzBEeGru4CffneBug" name="trigger" visibility="public" type="_Ldo3bNzBEeGru4CffneBug" owningAssociation="_Ldo3YNzBEeGru4CffneBug" association="_Ldo3YNzBEeGru4CffneBug">
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ldo3YtzBEeGru4CffneBug"/>
              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ldo3Y9zBEeGru4CffneBug" value="*"/>
            </ownedEnd>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="_Ldo3ZNzBEeGru4CffneBug" name="InvocationAction" isAbstract="true">
            <ownedComment xmi:type="uml:Comment" xmi:id="_Ldo3ZdzBEeGru4CffneBug" annotatedElement="_Ldo3ZNzBEeGru4CffneBug">
              <body>CompositeStructures::InvocationActions::InvocationAction extends (merge increment) fUML InvocationAction so that, in addition of targeting an object, the invocation (i.e., the call for an operation or the emission of a signal) can be made through a specific Port of this object (onPort).</body>
            </ownedComment>
            <ownedAttribute xmi:type="uml:Property" xmi:id="_Ldo3adzBEeGru4CffneBug" name="onPort" visibility="public" type="_LdpeD9zBEeGru4CffneBug" association="_Ldo3XNzBEeGru4CffneBug">
              <ownedComment xmi:type="uml:Comment" xmi:id="_Ldo3atzBEeGru4CffneBug" annotatedElement="_Ldo3adzBEeGru4CffneBug">
                <body>A optional port of the receiver object on which the behavioral feature is invoked.</body>
              </ownedComment>
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ldo3a9zBEeGru4CffneBug"/>
            </ownedAttribute>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="_Ldo3bNzBEeGru4CffneBug" name="Trigger" isAbstract="true">
            <ownedComment xmi:type="uml:Comment" xmi:id="_Ldo3bdzBEeGru4CffneBug" annotatedElement="_Ldo3bNzBEeGru4CffneBug">
              <body>CompositeStructures::InternalStructures::Trigger extends (merge increment) fUML Trigger so that a list of Ports can be associated with a Trigger.</body>
            </ownedComment>
            <ownedAttribute xmi:type="uml:Property" xmi:id="_Ldo3btzBEeGru4CffneBug" name="port" visibility="public" type="_LdpeD9zBEeGru4CffneBug" association="_Ldo3YNzBEeGru4CffneBug">
              <ownedComment xmi:type="uml:Comment" xmi:id="_Ldo3b9zBEeGru4CffneBug" annotatedElement="_Ldo3btzBEeGru4CffneBug">
                <body>A optional port of the receiver object on which the behavioral feature is invoked.</body>
              </ownedComment>
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ldo3cNzBEeGru4CffneBug"/>
              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ldo3cdzBEeGru4CffneBug" value="*"/>
            </ownedAttribute>
          </packagedElement>
        </packagedElement>
        <packagedElement xmi:type="uml:Package" xmi:id="_Ldo3ctzBEeGru4CffneBug" name="Ports">
          <ownedComment xmi:type="uml:Comment" xmi:id="_0pnqkHNwEeKFY_nn9CuDrg">
            <body>The Ports package introduces mechanisms enabling a classifier to have Ports.</body>
          </ownedComment>
          <packageImport xmi:type="uml:PackageImport" xmi:id="_Ldo3c9zBEeGru4CffneBug" importedPackage="_vBjwcNzDEeGru4CffneBug" importingNamespace="_Ldo3ctzBEeGru4CffneBug"/>
          <packageImport xmi:type="uml:PackageImport" xmi:id="_Ldo3dNzBEeGru4CffneBug" importedPackage="_W8TdOdzCEeGru4CffneBug" importingNamespace="_Ldo3ctzBEeGru4CffneBug"/>
          <packageMerge xmi:type="uml:PackageMerge" xmi:id="_Ldo3ddzBEeGru4CffneBug" mergedPackage="_W8S2ZdzCEeGru4CffneBug" receivingPackage="_Ldo3ctzBEeGru4CffneBug"/>
          <packageMerge xmi:type="uml:PackageMerge" xmi:id="_Ldo3dtzBEeGru4CffneBug" mergedPackage="_LdoQEdzBEeGru4CffneBug" receivingPackage="_Ldo3ctzBEeGru4CffneBug"/>
          <packagedElement xmi:type="uml:Association" xmi:id="_Ldo3d9zBEeGru4CffneBug" name="A_ownedPort_encapsulatedClassifier" isDerived="true" memberEnd="_LdpeBNzBEeGru4CffneBug _Ldo3eNzBEeGru4CffneBug">
            <ownedEnd xmi:type="uml:Property" xmi:id="_Ldo3eNzBEeGru4CffneBug" name="encapsulatedClassifier" visibility="public" type="_LdpeAdzBEeGru4CffneBug" owningAssociation="_Ldo3d9zBEeGru4CffneBug" subsettedProperty="_LdoQIdzBEeGru4CffneBug" association="_Ldo3d9zBEeGru4CffneBug">
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ldo3edzBEeGru4CffneBug"/>
            </ownedEnd>
          </packagedElement>
          <packagedElement xmi:type="uml:Association" xmi:id="_Ldo3etzBEeGru4CffneBug" name="A_partWithPort_connectorEnd" memberEnd="_Ldpd_tzBEeGru4CffneBug _Ldo3e9zBEeGru4CffneBug">
            <ownedEnd xmi:type="uml:Property" xmi:id="_Ldo3e9zBEeGru4CffneBug" name="connectorEnd" visibility="public" type="_Ldpd89zBEeGru4CffneBug" owningAssociation="_Ldo3etzBEeGru4CffneBug" association="_Ldo3etzBEeGru4CffneBug">
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ldo3fNzBEeGru4CffneBug"/>
              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ldo3fdzBEeGru4CffneBug" value="*"/>
            </ownedEnd>
          </packagedElement>
          <packagedElement xmi:type="uml:Association" xmi:id="_Ldo3ftzBEeGru4CffneBug" name="A_provided_port" isDerived="true" memberEnd="_LdpeJdzBEeGru4CffneBug _Ldo3f9zBEeGru4CffneBug">
            <ownedEnd xmi:type="uml:Property" xmi:id="_Ldo3f9zBEeGru4CffneBug" name="port" visibility="public" type="_LdpeD9zBEeGru4CffneBug" owningAssociation="_Ldo3ftzBEeGru4CffneBug" association="_Ldo3ftzBEeGru4CffneBug">
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ldo3gNzBEeGru4CffneBug"/>
              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ldo3gdzBEeGru4CffneBug" value="*"/>
            </ownedEnd>
          </packagedElement>
          <packagedElement xmi:type="uml:Association" xmi:id="_Ldo3gtzBEeGru4CffneBug" name="A_redefinedPort_port" memberEnd="_LdpeKdzBEeGru4CffneBug _Ldo3g9zBEeGru4CffneBug">
            <ownedEnd xmi:type="uml:Property" xmi:id="_Ldo3g9zBEeGru4CffneBug" name="port" visibility="public" type="_LdpeD9zBEeGru4CffneBug" owningAssociation="_Ldo3gtzBEeGru4CffneBug" association="_Ldo3gtzBEeGru4CffneBug">
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ldo3hNzBEeGru4CffneBug"/>
              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ldo3hdzBEeGru4CffneBug" value="*"/>
            </ownedEnd>
          </packagedElement>
          <packagedElement xmi:type="uml:Association" xmi:id="_Ldo3htzBEeGru4CffneBug" name="A_required_port" isDerived="true" memberEnd="_LdpeLdzBEeGru4CffneBug _Ldpd8NzBEeGru4CffneBug">
            <ownedEnd xmi:type="uml:Property" xmi:id="_Ldpd8NzBEeGru4CffneBug" name="port" visibility="public" type="_LdpeD9zBEeGru4CffneBug" owningAssociation="_Ldo3htzBEeGru4CffneBug" association="_Ldo3htzBEeGru4CffneBug">
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ldpd8dzBEeGru4CffneBug"/>
              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ldpd8tzBEeGru4CffneBug" value="*"/>
            </ownedEnd>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="_Ldpd89zBEeGru4CffneBug" name="ConnectorEnd">
            <ownedComment xmi:type="uml:Comment" xmi:id="_Ldpd9NzBEeGru4CffneBug" annotatedElement="_Ldpd89zBEeGru4CffneBug">
              <body>CompositeStructures::Ports::ConnectorEnd extends (merge increment) CompositeStructures::InternalStructures::ConnectorEnd with an additional property (partWithPort), which, when the connected role is a Port, specifies that an instance of this Port is connected in the context of a specific property of the context Classifier.</body>
            </ownedComment>
            <ownedAttribute xmi:type="uml:Property" xmi:id="_Ldpd_tzBEeGru4CffneBug" name="partWithPort" visibility="public" type="_Ldo3NdzBEeGru4CffneBug" association="_Ldo3etzBEeGru4CffneBug">
              <ownedComment xmi:type="uml:Comment" xmi:id="_Ldpd_9zBEeGru4CffneBug" annotatedElement="_Ldpd_tzBEeGru4CffneBug">
                <body>Indicates the role of the internal structure of a classifier with the port to which the connector end is attached.</body>
              </ownedComment>
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_LdpeANzBEeGru4CffneBug"/>
            </ownedAttribute>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="_LdpeAdzBEeGru4CffneBug" name="EncapsulatedClassifier" isAbstract="true">
            <ownedComment xmi:type="uml:Comment" xmi:id="_LdpeAtzBEeGru4CffneBug" annotatedElement="_LdpeAdzBEeGru4CffneBug">
              <body>EncapsulatedClassifier extends StructuredClassifier with the ability to own a set of Ports.</body>
            </ownedComment>
            <generalization xmi:type="uml:Generalization" xmi:id="_LdpeA9zBEeGru4CffneBug" general="_Ldo3O9zBEeGru4CffneBug" specific="_LdpeAdzBEeGru4CffneBug"/>
            <ownedAttribute xmi:type="uml:Property" xmi:id="_LdpeBNzBEeGru4CffneBug" name="ownedPort" visibility="public" type="_LdpeD9zBEeGru4CffneBug" isReadOnly="true" aggregation="composite" isDerived="true" subsettedProperty="_Ldo3QtzBEeGru4CffneBug" association="_Ldo3d9zBEeGru4CffneBug">
              <ownedComment xmi:type="uml:Comment" xmi:id="_LdpeBdzBEeGru4CffneBug" annotatedElement="_LdpeBNzBEeGru4CffneBug">
                <body>References a set of ports that an encapsulated classifier owns.</body>
              </ownedComment>
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_LdpeBtzBEeGru4CffneBug"/>
              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_LdpeB9zBEeGru4CffneBug" value="*"/>
            </ownedAttribute>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_LdpeCNzBEeGru4CffneBug" name="ownedPort" visibility="public" bodyCondition="_LdpeCtzBEeGru4CffneBug" class="_LdpeAdzBEeGru4CffneBug" isQuery="true">
              <ownedComment xmi:type="uml:Comment" xmi:id="_LdpeCdzBEeGru4CffneBug" annotatedElement="_LdpeCNzBEeGru4CffneBug">
                <body>Missing derivation for EncapsulatedClassifier::/ownedPort : Port</body>
              </ownedComment>
              <ownedRule xmi:type="uml:Constraint" xmi:id="_LdpeCtzBEeGru4CffneBug" name="spec" constrainedElement="_LdpeCNzBEeGru4CffneBug _LdpeBNzBEeGru4CffneBug" context="_LdpeCNzBEeGru4CffneBug">
                <specification xmi:type="uml:OpaqueExpression" xmi:id="_LdpeC9zBEeGru4CffneBug">
                  <language>OCL</language>
                  <body>true</body>
                </specification>
              </ownedRule>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_LdpeDNzBEeGru4CffneBug" name="result" visibility="public" type="_LdpeD9zBEeGru4CffneBug" direction="return">
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_LdpeDdzBEeGru4CffneBug"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_LdpeDtzBEeGru4CffneBug" value="*"/>
              </ownedParameter>
            </ownedOperation>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="_LdpeD9zBEeGru4CffneBug" name="Port">
            <ownedComment xmi:type="uml:Comment" xmi:id="_LdpeENzBEeGru4CffneBug" annotatedElement="_LdpeD9zBEeGru4CffneBug">
              <body>Port enables specification of interaction points through which instances of an encapsulated classifier can be connected and communicate with their environment or internal parts. Port also enables the specification of a set of Features provided or required by the owning EncapsulatedClassifier, that is, Features defined by provided or required Interfaces associated with the Port.</body>
            </ownedComment>
            <ownedRule xmi:type="uml:Constraint" xmi:id="_0NZ2kHOaEeKFY_nn9CuDrg" name="behavior_port_belongs_to_an_active_class" context="_LdpeD9zBEeGru4CffneBug">
              <specification xmi:type="uml:OpaqueExpression" xmi:id="_ACVdMHObEeKFY_nn9CuDrg" name="spec">
                <language>Natural language</language>
                <language>OCL</language>
                <body>A behavior port can only belong to an active class.</body>
                <body>inv: encapsulatedClassifier->notEmpty() and (encapsulatedClassifier.oclIsKindOf(Class) and encapsulatedClassifier.isActive))</body>
              </specification>
            </ownedRule>
            <generalization xmi:type="uml:Generalization" xmi:id="_LdpeGtzBEeGru4CffneBug" general="_Ldo3NdzBEeGru4CffneBug" specific="_LdpeD9zBEeGru4CffneBug"/>
            <generalization xmi:type="uml:Generalization" xmi:id="_LdpeG9zBEeGru4CffneBug" specific="_LdpeD9zBEeGru4CffneBug">
              <general xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-Property"/>
            </generalization>
            <ownedAttribute xmi:type="uml:Property" xmi:id="_LdpeHNzBEeGru4CffneBug" name="isBehavior" visibility="public">
              <ownedComment xmi:type="uml:Comment" xmi:id="_LdpeHdzBEeGru4CffneBug" annotatedElement="_LdpeHNzBEeGru4CffneBug">
                <body>Specifies whether requests arriving at this port are sent to the classifier behavior of this classifier. Such ports are referred to as behavior port. Any invocation of a behavioral feature targeted at a behavior port will be handled by the instance of the owning classifier itself, rather than by any instances that this classifier may contain.</body>
              </ownedComment>
              <type xmi:type="uml:PrimitiveType" href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
              <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_LdpeHtzBEeGru4CffneBug"/>
            </ownedAttribute>
            <ownedAttribute xmi:type="uml:Property" xmi:id="_LdpeH9zBEeGru4CffneBug" name="isConjugated" visibility="public">
              <ownedComment xmi:type="uml:Comment" xmi:id="_LdpeINzBEeGru4CffneBug" annotatedElement="_LdpeH9zBEeGru4CffneBug">
                <body>Specifies the way that the provided and required interfaces are derived from the Port’s Type. The default value is false.</body>
              </ownedComment>
              <type xmi:type="uml:PrimitiveType" href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
              <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_LdpeIdzBEeGru4CffneBug"/>
            </ownedAttribute>
            <ownedAttribute xmi:type="uml:Property" xmi:id="_LdpeItzBEeGru4CffneBug" name="isService" visibility="public">
              <ownedComment xmi:type="uml:Comment" xmi:id="_LdpeI9zBEeGru4CffneBug" annotatedElement="_LdpeItzBEeGru4CffneBug">
                <body>If true indicates that this port is used to provide the published functionality of a classifier; if false, this port is used to implement the classifier but is not part of the essential externally-visible functionality of the classifier and can, therefore, be altered or deleted along with the internal implementation of the classifier and other properties that are considered part of its implementation.</body>
              </ownedComment>
              <type xmi:type="uml:PrimitiveType" href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
              <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_LdpeJNzBEeGru4CffneBug" value="true"/>
            </ownedAttribute>
            <ownedAttribute xmi:type="uml:Property" xmi:id="_LdpeJdzBEeGru4CffneBug" name="provided" visibility="public" type="_vBjwkNzDEeGru4CffneBug" isReadOnly="true" isDerived="true" association="_Ldo3ftzBEeGru4CffneBug">
              <ownedComment xmi:type="uml:Comment" xmi:id="_LdpeJtzBEeGru4CffneBug" annotatedElement="_LdpeJdzBEeGru4CffneBug">
                <body>References the interfaces specifying the set of operations and receptions that the classifier offers to its environment via this port, and which it will handle either directly or by forwarding it to a part of its internal structure. This association is derived according to the value of isConjugated. If isConjugated is false, provided is derived as the union of the sets of interfaces realized by the type of the port and its supertypes, or directly from the type of the port if the port is typed by an interface. If isConjugated is true, it is derived as the union of the sets of interfaces used by the type of the port and its supertypes.</body>
              </ownedComment>
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_LdpeJ9zBEeGru4CffneBug"/>
              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_LdpeKNzBEeGru4CffneBug" value="*"/>
            </ownedAttribute>
            <ownedAttribute xmi:type="uml:Property" xmi:id="_LdpeKdzBEeGru4CffneBug" name="redefinedPort" visibility="public" type="_LdpeD9zBEeGru4CffneBug" association="_Ldo3gtzBEeGru4CffneBug">
              <ownedComment xmi:type="uml:Comment" xmi:id="_LdpeKtzBEeGru4CffneBug" annotatedElement="_LdpeKdzBEeGru4CffneBug">
                <body>A port may be redefined when its containing classifier is specialized. The redefining port may have additional interfaces to those that are associated with the redefined port or it may replace an interface by one of its subtypes.</body>
              </ownedComment>
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_LdpeK9zBEeGru4CffneBug"/>
              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_LdpeLNzBEeGru4CffneBug" value="*"/>
            </ownedAttribute>
            <ownedAttribute xmi:type="uml:Property" xmi:id="_LdpeLdzBEeGru4CffneBug" name="required" visibility="public" type="_vBjwkNzDEeGru4CffneBug" isReadOnly="true" isDerived="true" association="_Ldo3htzBEeGru4CffneBug">
              <ownedComment xmi:type="uml:Comment" xmi:id="_LdpeLtzBEeGru4CffneBug" annotatedElement="_LdpeLdzBEeGru4CffneBug">
                <body>References the interfaces specifying the set of operations and receptions that the classifier expects its environment to handle via this port. This association is derived according to the value of isConjugated. If isConjugated is false, required is derived as the union of the sets of interfaces used by the type of the port and its supertypes. If isConjugated is true, it is derived as the union of the sets of interfaces realized by the type of the port and its supertypes, or directly from the type of the port if the port is typed by an interface.</body>
              </ownedComment>
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_LdpeL9zBEeGru4CffneBug"/>
              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_LdpeMNzBEeGru4CffneBug" value="*"/>
            </ownedAttribute>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_LdpeMdzBEeGru4CffneBug" name="provided" visibility="public" bodyCondition="_LdpeM9zBEeGru4CffneBug" class="_LdpeD9zBEeGru4CffneBug" isQuery="true">
              <ownedComment xmi:type="uml:Comment" xmi:id="_LdpeMtzBEeGru4CffneBug" annotatedElement="_LdpeMdzBEeGru4CffneBug">
                <body>Missing derivation for Port::/provided : Interface</body>
              </ownedComment>
              <ownedRule xmi:type="uml:Constraint" xmi:id="_LdpeM9zBEeGru4CffneBug" name="spec" constrainedElement="_LdpeMdzBEeGru4CffneBug _LdpeJdzBEeGru4CffneBug" context="_LdpeMdzBEeGru4CffneBug">
                <specification xmi:type="uml:OpaqueExpression" xmi:id="_LdpeNNzBEeGru4CffneBug">
                  <language>OCL</language>
                  <body>true</body>
                </specification>
              </ownedRule>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_LdpeNdzBEeGru4CffneBug" name="result" visibility="public" type="_vBjwkNzDEeGru4CffneBug" direction="return">
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_LdpeNtzBEeGru4CffneBug"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_LdpeN9zBEeGru4CffneBug" value="*"/>
              </ownedParameter>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_LdpeONzBEeGru4CffneBug" name="required" visibility="public" bodyCondition="_LdpeOtzBEeGru4CffneBug" class="_LdpeD9zBEeGru4CffneBug" isQuery="true">
              <ownedComment xmi:type="uml:Comment" xmi:id="_LdpeOdzBEeGru4CffneBug" annotatedElement="_LdpeONzBEeGru4CffneBug">
                <body>Missing derivation for Port::/required : Interface</body>
              </ownedComment>
              <ownedRule xmi:type="uml:Constraint" xmi:id="_LdpeOtzBEeGru4CffneBug" name="spec" constrainedElement="_LdpeONzBEeGru4CffneBug _LdpeLdzBEeGru4CffneBug" context="_LdpeONzBEeGru4CffneBug">
                <specification xmi:type="uml:OpaqueExpression" xmi:id="_LdpeO9zBEeGru4CffneBug">
                  <language>OCL</language>
                  <body>true</body>
                </specification>
              </ownedRule>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_LdpePNzBEeGru4CffneBug" name="result" visibility="public" type="_vBjwkNzDEeGru4CffneBug" direction="return">
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_LdpePdzBEeGru4CffneBug"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_LdpePtzBEeGru4CffneBug" value="*"/>
              </ownedParameter>
            </ownedOperation>
          </packagedElement>
        </packagedElement>
        <packagedElement xmi:type="uml:Package" xmi:id="_LdpeRdzBEeGru4CffneBug" name="StructuredClasses">
          <ownedComment xmi:type="uml:Comment" xmi:id="_8sPdMHNwEeKFY_nn9CuDrg">
            <body>The StructuredClasses package is introduced to enable a Class to be structured, which is a key aspect of UML Composite Structures.</body>
          </ownedComment>
          <packageMerge xmi:type="uml:PackageMerge" xmi:id="_LdpeRtzBEeGru4CffneBug" mergedPackage="_Ldo3ctzBEeGru4CffneBug" receivingPackage="_LdpeRdzBEeGru4CffneBug"/>
          <packagedElement xmi:type="uml:Class" xmi:id="_LdpeR9zBEeGru4CffneBug" name="Class">
            <ownedComment xmi:type="uml:Comment" xmi:id="_LdpeSNzBEeGru4CffneBug" annotatedElement="_LdpeR9zBEeGru4CffneBug">
              <body>CompositeStructures::StructuredClasses::Class extends (merge increment) fUML Class with the ability to be structured. A Class can have an internal structure comprising a network of linked parts, as well as a set of Ports.</body>
            </ownedComment>
            <generalization xmi:type="uml:Generalization" xmi:id="_LdpeSdzBEeGru4CffneBug" general="_LdpeAdzBEeGru4CffneBug" specific="_LdpeR9zBEeGru4CffneBug"/>
          </packagedElement>
        </packagedElement>
      </packagedElement>
      <packagedElement xmi:type="uml:Package" xmi:id="_zDsxEOCxEeGcc4S1CmuFHA" name="Components">
        <ownedComment xmi:type="uml:Comment" xmi:id="_YFpTwHNwEeKFY_nn9CuDrg">
          <body>The Components package is partially copied into the Composite Structures syntax model. This is because the Components package contains the sub-package BasicComponents, which is required for Composite Structures modeling. More precisely, it extends (merge increment) CompositeStructures::StructuredClasses::Connector with the property kind , which enables determining whether a given connector is for delegation or for assembly. Note that metaclass Component as well as package Components::PackagingComponents are excluded from this specification, since they do not introduce any concepts impacting the semantics of UML Composite Structures.</body>
        </ownedComment>
        <packagedElement xmi:type="uml:Package" xmi:id="_zDsxEuCxEeGcc4S1CmuFHA" name="BasicComponents">
          <packageImport xmi:type="uml:PackageImport" xmi:id="_zDsxE-CxEeGcc4S1CmuFHA" importedPackage="_Ldo3ctzBEeGru4CffneBug" importingNamespace="_zDsxEuCxEeGcc4S1CmuFHA"/>
          <packageMerge xmi:type="uml:PackageMerge" xmi:id="_zDsxFeCxEeGcc4S1CmuFHA" mergedPackage="_LdpeRdzBEeGru4CffneBug" receivingPackage="_zDsxEuCxEeGcc4S1CmuFHA"/>
          <packagedElement xmi:type="uml:Class" xmi:id="_zDsxeOCxEeGcc4S1CmuFHA" name="Connector">
            <ownedComment xmi:type="uml:Comment" xmi:id="_zDsxeeCxEeGcc4S1CmuFHA" annotatedElement="_zDsxeOCxEeGcc4S1CmuFHA">
              <body>Components::BasicComponents::Connector extends (merge increment) CompositeStructures::StructuredClasses::Connector with a property indicating the kind (delegation or assembly) of a connector.</body>
            </ownedComment>
            <ownedAttribute xmi:type="uml:Property" xmi:id="_zDsxhOCxEeGcc4S1CmuFHA" name="kind" visibility="public" type="_zDsxj-CxEeGcc4S1CmuFHA" isReadOnly="true" isDerived="true">
              <ownedComment xmi:type="uml:Comment" xmi:id="_zDsxheCxEeGcc4S1CmuFHA" annotatedElement="_zDsxhOCxEeGcc4S1CmuFHA">
                <body>Indicates the kind of connector. This is derived: a connector with one or more ends connected to a Port which is not on a Part and which is not a behavior port is a delegation; otherwise it is an assembly.</body>
              </ownedComment>
            </ownedAttribute>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_zDsxhuCxEeGcc4S1CmuFHA" name="kind" visibility="public" bodyCondition="_zDsxiOCxEeGcc4S1CmuFHA" class="_zDsxeOCxEeGcc4S1CmuFHA" isQuery="true">
              <ownedComment xmi:type="uml:Comment" xmi:id="_zDsxh-CxEeGcc4S1CmuFHA" annotatedElement="_zDsxhuCxEeGcc4S1CmuFHA">
                <body>Missing derivation for Connector::/kind : ConnectorKind</body>
              </ownedComment>
              <ownedRule xmi:type="uml:Constraint" xmi:id="_zDsxiOCxEeGcc4S1CmuFHA" name="spec" constrainedElement="_zDsxhuCxEeGcc4S1CmuFHA _zDsxhOCxEeGcc4S1CmuFHA" context="_zDsxhuCxEeGcc4S1CmuFHA">
                <specification xmi:type="uml:OpaqueExpression" xmi:id="_zDsxieCxEeGcc4S1CmuFHA">
                  <language>OCL</language>
                  <body>result =
if end->exists(
		role.oclIsKindOf(Port) 
		and partWithPort->isEmpty()
		and not role.oclAsType(Port).isBehavior)
then ConnectorKind::delegation 
else ConnectorKind::assembly 
endif</body>
                </specification>
              </ownedRule>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_zDsxiuCxEeGcc4S1CmuFHA" name="result" visibility="public" type="_zDsxj-CxEeGcc4S1CmuFHA" direction="return"/>
            </ownedOperation>
          </packagedElement>
          <packagedElement xmi:type="uml:Enumeration" xmi:id="_zDsxj-CxEeGcc4S1CmuFHA" name="ConnectorKind">
            <ownedComment xmi:type="uml:Comment" xmi:id="_zDsxkOCxEeGcc4S1CmuFHA" annotatedElement="_zDsxj-CxEeGcc4S1CmuFHA">
              <body>ConnectorKind is an enumeration type.</body>
            </ownedComment>
            <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_zDsxkeCxEeGcc4S1CmuFHA" name="assembly" enumeration="_zDsxj-CxEeGcc4S1CmuFHA">
              <ownedComment xmi:type="uml:Comment" xmi:id="_zDsxkuCxEeGcc4S1CmuFHA" annotatedElement="_zDsxkeCxEeGcc4S1CmuFHA">
                <body>Indicates that the connector is an assembly connector.</body>
              </ownedComment>
            </ownedLiteral>
            <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_zDsxk-CxEeGcc4S1CmuFHA" name="delegation" enumeration="_zDsxj-CxEeGcc4S1CmuFHA">
              <ownedComment xmi:type="uml:Comment" xmi:id="_zDsxlOCxEeGcc4S1CmuFHA" annotatedElement="_zDsxk-CxEeGcc4S1CmuFHA">
                <body>Indicates that the connector is a delegation connector.</body>
              </ownedComment>
            </ownedLiteral>
          </packagedElement>
        </packagedElement>
      </packagedElement>
      <packagedElement xmi:type="uml:Package" xmi:id="_tf4NEOC6EeGcc4S1CmuFHA" name="L3"/>
    </packagedElement>
    <packagedElement xmi:type="uml:Package" xmi:id="_W_JVwNzCEeGru4CffneBug" name="Semantics">
      <packagedElement xmi:type="uml:Package" xmi:id="_SBnLEN2OEeGnO-TF_1T_iQ" name="CompositeStructures">
        <packagedElement xmi:type="uml:Package" xmi:id="_YlZoMN2OEeGnO-TF_1T_iQ" name="StructuredClasses">
          <packagedElement xmi:type="uml:Class" xmi:id="_wUvk8d2JEeGnO-TF_1T_iQ" name="CS_InteractionPoint">
            <ownedComment xmi:type="uml:Comment" xmi:id="_wUvk8t2JEeGnO-TF_1T_iQ">
              <body>A CS_InteractionPoint represents the runtime manifestation of a Reference to an Object playing the role of a Port. More specifically, it overrides operation dispatching and signal receptions in order to capture the specific propagation semantics of requests targeting a port.&#xD;
NOTE: This class is related to the following requirements:&#xD;
- R1. The target value of an invocation action may also be a port. In this case, the invocation request is sent to the object owning this port as identified by the port identity, and is, upon arrival, handled as described in &quot;Port&quot; clause</body>
            </ownedComment>
            <ownedComment xmi:type="uml:Comment" xmi:id="_FkrwwOH2EeG4NZyomhkW-A">
              <body>// Imports&#xD;
import CompositeStructuresSyntaxAndSemantics.Syntax.Classes.Interfaces.Operation;&#xD;
import CompositeStructuresSyntaxAndSemantics.Syntax.CompositeStructures.Ports.Port;&#xD;
import CompositeStructuresSyntaxAndSemantics.Syntax.CompositeStructures.StructuredClasses.Class_;&#xD;
import fUML.Semantics.Classes.Kernel.Reference;&#xD;
import fUML.Semantics.CommonBehaviors.BasicBehaviors.Execution;&#xD;
import fUML.Semantics.CommonBehaviors.BasicBehaviors.ParameterValueList;&#xD;
import fUML.Semantics.CommonBehaviors.Communications.SignalInstance;&#xD;
</body>
            </ownedComment>
            <generalization xmi:type="uml:Generalization" xmi:id="_wUvk-N2JEeGnO-TF_1T_iQ" specific="_wUvk8d2JEeGnO-TF_1T_iQ">
              <general xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Classes-Kernel-Reference"/>
            </generalization>
            <ownedAttribute xmi:type="uml:Property" xmi:id="_wUvk-d2JEeGnO-TF_1T_iQ" name="owner" type="_wUwMMt2JEeGnO-TF_1T_iQ" association="_wUwL0N2JEeGnO-TF_1T_iQ">
              <ownedComment xmi:type="uml:Comment" xmi:id="_wUvk-t2JEeGnO-TF_1T_iQ">
                <body>Represents the Reference to the CompositeObject owning this InteractionPort. NOTE: This is introduced to address requirement R3 (It represents the &quot;link from that instance to the instance of the owning classifier [...] through which communication is forwarded to the instance of the owning classifier or through which the owning classifier communicates)</body>
              </ownedComment>
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUvk-92JEeGnO-TF_1T_iQ" value="1"/>
              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUvk_N2JEeGnO-TF_1T_iQ" value="1"/>
            </ownedAttribute>
            <ownedAttribute xmi:type="uml:Property" xmi:id="_wUvk_d2JEeGnO-TF_1T_iQ" name="definingPort" type="_LdpeD9zBEeGru4CffneBug" association="_wUwL1N2JEeGnO-TF_1T_iQ">
              <ownedComment xmi:type="uml:Comment" xmi:id="_wUvk_t2JEeGnO-TF_1T_iQ">
                <body>The Port for which this InteractionPoint is a runtime manifestation</body>
              </ownedComment>
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUvk_92JEeGnO-TF_1T_iQ" value="1"/>
              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUvlAN2JEeGnO-TF_1T_iQ" value="1"/>
            </ownedAttribute>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_wUvlAd2JEeGnO-TF_1T_iQ" name="startBehavior" specification="_wUwLu92JEeGnO-TF_1T_iQ">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_wUvlAt2JEeGnO-TF_1T_iQ" name="classifier">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-Class"/>
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUvlA92JEeGnO-TF_1T_iQ"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUvlBN2JEeGnO-TF_1T_iQ" value="1"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_wUvlBd2JEeGnO-TF_1T_iQ" name="inputs">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-CommonBehaviors-BasicBehaviors-ParameterValue"/>
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUvlBt2JEeGnO-TF_1T_iQ"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUvlB92JEeGnO-TF_1T_iQ" value="*"/>
              </ownedParameter>
              <language>Java</language>
              <body>// Overriden to do nothing&#xD;
</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_wUwLsN2JEeGnO-TF_1T_iQ" name="dispatch" specification="_wUwLw92JEeGnO-TF_1T_iQ">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_wUwLsd2JEeGnO-TF_1T_iQ" name="operation">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-Operation"/>
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUwLst2JEeGnO-TF_1T_iQ" value="1"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUwLs92JEeGnO-TF_1T_iQ" value="1"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_wUwLtN2JEeGnO-TF_1T_iQ" name="result">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-CommonBehaviors-BasicBehaviors-Execution"/>
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUwLtd2JEeGnO-TF_1T_iQ" value="1"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUwLtt2JEeGnO-TF_1T_iQ" value="1"/>
              </ownedParameter>
              <language>Java</language>
              <body>		// Delegates dispatching to the owning object&#xD;
		return this.owner.dispatchIn(operation, this) ;</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_wUwLt92JEeGnO-TF_1T_iQ" name="send" specification="_wUwLy92JEeGnO-TF_1T_iQ">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_wUwLuN2JEeGnO-TF_1T_iQ" name="signalInstance">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-CommonBehaviors-Communications-SignalInstance"/>
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUwLud2JEeGnO-TF_1T_iQ" value="1"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUwLut2JEeGnO-TF_1T_iQ" value="1"/>
              </ownedParameter>
              <language>Java</language>
              <body>		// Delegates sending to the owning object&#xD;
		this.owner.sendIn(signalInstance, this) ;</body>
            </ownedBehavior>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_wUwLu92JEeGnO-TF_1T_iQ" name="startBehavior" visibility="public" method="_wUvlAd2JEeGnO-TF_1T_iQ" class="_wUvk8d2JEeGnO-TF_1T_iQ">
              <ownedComment xmi:type="uml:Comment" xmi:id="_wUwLvN2JEeGnO-TF_1T_iQ">
                <body>&lt;&lt;TextualRepresentation>>public startBehavior (in classifier : Class [0..1], &#xD;
                                     in inputs : ParameterValue [*]) { &#xD;
	// Overriden to do nothing&#xD;
}</body>
              </ownedComment>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_wUwLvd2JEeGnO-TF_1T_iQ" name="classifier">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-Class"/>
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUwLvt2JEeGnO-TF_1T_iQ"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUwLv92JEeGnO-TF_1T_iQ" value="1"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_wUwLwN2JEeGnO-TF_1T_iQ" name="inputs">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-CommonBehaviors-BasicBehaviors-ParameterValue"/>
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUwLwd2JEeGnO-TF_1T_iQ" value="-1"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUwLwt2JEeGnO-TF_1T_iQ" value="*"/>
              </ownedParameter>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_wUwLw92JEeGnO-TF_1T_iQ" name="dispatch" visibility="public" method="_wUwLsN2JEeGnO-TF_1T_iQ" class="_wUvk8d2JEeGnO-TF_1T_iQ">
              <ownedComment xmi:type="uml:Comment" xmi:id="_wUwLxN2JEeGnO-TF_1T_iQ">
                <body>&lt;&lt;TextualRepresentation>>public dispatch (in operation : Operation ) : Execution { 
	// Delegates dispatching to the owning object
	return this.owner.dispatchIn(operation, this) ;
}</body>
              </ownedComment>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_wUwLxd2JEeGnO-TF_1T_iQ" name="operation">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-Operation"/>
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUwLxt2JEeGnO-TF_1T_iQ" value="1"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUwLx92JEeGnO-TF_1T_iQ" value="1"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_wUwLyN2JEeGnO-TF_1T_iQ" direction="return">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-CommonBehaviors-BasicBehaviors-Execution"/>
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUwLyd2JEeGnO-TF_1T_iQ" value="1"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUwLyt2JEeGnO-TF_1T_iQ" value="1"/>
              </ownedParameter>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_wUwLy92JEeGnO-TF_1T_iQ" name="send" visibility="public" method="_wUwLt92JEeGnO-TF_1T_iQ" class="_wUvk8d2JEeGnO-TF_1T_iQ">
              <ownedComment xmi:type="uml:Comment" xmi:id="_wUwLzN2JEeGnO-TF_1T_iQ">
                <body>&lt;&lt;TextualRepresentation>>public send (in signalInstance : SignalInstance ) {&#xD;
	// Delegates sending to the owning object&#xD;
	this.owner.sendIn(signalInstance, this) ;&#xD;
}</body>
              </ownedComment>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_wUwLzd2JEeGnO-TF_1T_iQ" name="signalInstance">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-CommonBehaviors-Communications-SignalInstance"/>
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUwLzt2JEeGnO-TF_1T_iQ" value="1"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUwLz92JEeGnO-TF_1T_iQ" value="1"/>
              </ownedParameter>
            </ownedOperation>
          </packagedElement>
          <packagedElement xmi:type="uml:Association" xmi:id="_wUwL0N2JEeGnO-TF_1T_iQ" name="A_interactionPoint_owner" memberEnd="_wUwL0d2JEeGnO-TF_1T_iQ _wUvk-d2JEeGnO-TF_1T_iQ">
            <ownedEnd xmi:type="uml:Property" xmi:id="_wUwL0d2JEeGnO-TF_1T_iQ" name="interactionPoint" type="_wUvk8d2JEeGnO-TF_1T_iQ" owningAssociation="_wUwL0N2JEeGnO-TF_1T_iQ" association="_wUwL0N2JEeGnO-TF_1T_iQ">
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUwL0t2JEeGnO-TF_1T_iQ"/>
              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUwL092JEeGnO-TF_1T_iQ" value="*"/>
            </ownedEnd>
          </packagedElement>
          <packagedElement xmi:type="uml:Association" xmi:id="_wUwL1N2JEeGnO-TF_1T_iQ" name="A_interactionPoint_definingPort" memberEnd="_wUwL1d2JEeGnO-TF_1T_iQ _wUvk_d2JEeGnO-TF_1T_iQ">
            <ownedEnd xmi:type="uml:Property" xmi:id="_wUwL1d2JEeGnO-TF_1T_iQ" name="interactionPoint" type="_wUvk8d2JEeGnO-TF_1T_iQ" owningAssociation="_wUwL1N2JEeGnO-TF_1T_iQ" association="_wUwL1N2JEeGnO-TF_1T_iQ">
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUwL1t2JEeGnO-TF_1T_iQ" value="1"/>
              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUwL192JEeGnO-TF_1T_iQ" value="1"/>
            </ownedEnd>
          </packagedElement>
          <packagedElement xmi:type="uml:Association" xmi:id="_wUyA4N2JEeGnO-TF_1T_iQ" name="A_referenceToCompositeStructure_compositeReferent" memberEnd="_wUyA4d2JEeGnO-TF_1T_iQ _wUwyxN2JEeGnO-TF_1T_iQ">
            <ownedEnd xmi:type="uml:Property" xmi:id="_wUyA4d2JEeGnO-TF_1T_iQ" name="referenceToCompositeStructure" type="_wUwMMt2JEeGnO-TF_1T_iQ" owningAssociation="_wUyA4N2JEeGnO-TF_1T_iQ" association="_wUyA4N2JEeGnO-TF_1T_iQ">
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUyA4t2JEeGnO-TF_1T_iQ" value="1"/>
              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUyA492JEeGnO-TF_1T_iQ" value="1"/>
            </ownedEnd>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="_wUyA5N2JEeGnO-TF_1T_iQ" name="CS_Link">
            <ownedComment xmi:type="uml:Comment" xmi:id="_wUyA5d2JEeGnO-TF_1T_iQ">
              <body>CS_Link extends Link with the ability to specify that this association instance plays a particular Connector.&#xD;
NOTE: The execution model described in this specification makes the hypothesis that connectors are necessarily typed by an Association.</body>
            </ownedComment>
            <ownedComment xmi:type="uml:Comment" xmi:id="_J8k-EOH2EeG4NZyomhkW-A">
              <body>// Imports&#xD;
import fUML.Semantics.Classes.Kernel.FeatureValue;&#xD;
import fUML.Semantics.Classes.Kernel.FeatureValueList;&#xD;
import fUML.Semantics.Classes.Kernel.Link;&#xD;
import fUML.Semantics.Classes.Kernel.Value;&#xD;
</body>
            </ownedComment>
            <generalization xmi:type="uml:Generalization" xmi:id="_wUyA5t2JEeGnO-TF_1T_iQ" specific="_wUyA5N2JEeGnO-TF_1T_iQ">
              <general xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Classes-Kernel-Link"/>
            </generalization>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_lq_tYBE_EeKT3tsL4v_Daw" name="hasValueForAfeature" specification="_Vv7X0BE_EeKT3tsL4v_Daw">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_utAgcBE_EeKT3tsL4v_Daw" name="value">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Classes-Kernel-Value"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_vfcC8BE_EeKT3tsL4v_Daw" name="result" direction="return">
                <type xmi:type="uml:PrimitiveType" href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
              </ownedParameter>
              <language>Java</language>
              <body>		// Returns true if the given value object is used as a value for a FeatureValue of this link&#xD;
		FeatureValueList allFeatureValues = this.getFeatureValues() ;&#xD;
		Integer i = 1 ;&#xD;
		boolean isAValue = false ;&#xD;
		while (i &lt;= allFeatureValues.size() &amp;&amp; !isAValue) {&#xD;
			FeatureValue featureValue = allFeatureValues.getValue(i-1);&#xD;
			isAValue = !featureValue.values.isEmpty() &amp;&amp; featureValue.values.getValue(0).equals(value) ;&#xD;
			i = i + 1 ;&#xD;
		}&#xD;
		return isAValue ;&#xD;
</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_JOGkcMFTEeKkJbQgitQ3JQ" name="getFeature" specification="_ztWYwMFSEeKkJbQgitQ3JQ">
              <language>Java</language>
              <body>FeatureValueList allFeatureValues = this.getFeatureValues() ;&#xD;
		Integer i = 1 ;&#xD;
		StructuralFeature feature = null ;&#xD;
		while (i &lt;= allFeatureValues.size() &amp;&amp; feature == null) {&#xD;
			FeatureValue featureValue = allFeatureValues.get(i-1);&#xD;
			if (!featureValue.values.isEmpty() &amp;&amp; featureValue.values.get(0).equals(value)) {&#xD;
				feature = featureValue.feature ;&#xD;
			}&#xD;
			i = i + 1 ;&#xD;
		}&#xD;
		return feature ;</body>
            </ownedBehavior>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_Vv7X0BE_EeKT3tsL4v_Daw" name="hasValueForAFeature" method="_lq_tYBE_EeKT3tsL4v_Daw" class="_wUyA5N2JEeGnO-TF_1T_iQ">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_fp_0QBE_EeKT3tsL4v_Daw" name="value">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Classes-Kernel-Value"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_imgosBE_EeKT3tsL4v_Daw" name="result" direction="return">
                <type xmi:type="uml:PrimitiveType" href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
              </ownedParameter>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_ztWYwMFSEeKkJbQgitQ3JQ" name="getFeature" method="_JOGkcMFTEeKkJbQgitQ3JQ" class="_wUyA5N2JEeGnO-TF_1T_iQ">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_6wlK8MFSEeKkJbQgitQ3JQ" name="value">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Classes-Kernel-Value"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_9-VgYMFSEeKkJbQgitQ3JQ" name="result" direction="return">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-StructuralFeature"/>
              </ownedParameter>
            </ownedOperation>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="_wUwzPd2JEeGnO-TF_1T_iQ" name="CS_Object">
            <ownedComment xmi:type="uml:Comment" xmi:id="_wUwzPt2JEeGnO-TF_1T_iQ">
              <body>CS_Object extends fUML Object with specific operations for managing propagations of requests through ports, from the environment to the internals of this object, or from the objet to its environment.&#xD;
NOTE, this class addresses the following requirements:&#xD;
- R4: If connectors are attached to both the port when used on a property within the internal structure of a classifier and the port on the container of an internal structure, the instance of the owning classifier will forward any requests arriving at this port along the link specified by those connectors.&#xD;
- R5: If there is a connector attached to only one side of a port, any requests arriving at this port will terminante at this port [Non-behavior port]&#xD;
- R6: For a behavior port, the instance of the owning classifier will handle requests arriving at this port (as specified in the behavior of the classifier), if this classifier has any behavior.&#xD;
- R7: If there is no behavior defined for this classifier, any communication arriving at a behavior port is lost.&#xD;
- R8: If several connectors are attached on one side of a port, then any request arriving at this port on a link derived from a connector on the other side of the port will be fowarded on links corresponding to these connectors. It is a semantic variation point whether these requests will be forwarded on all links, or on only one of those links.</body>
            </ownedComment>
            <ownedComment xmi:type="uml:Comment" xmi:id="_Osfp0OH2EeG4NZyomhkW-A">
              <body>// Imports&#xD;
import CompositeStructuresSyntaxAndSemantics.Semantics.CommonBehaviors.Communications.CS_DispatchOperationOfInterfaceStrategy;&#xD;
import CompositeStructuresSyntaxAndSemantics.Semantics.CommonBehaviors.Communications.CS_StructuralFeatureOfInterfaceAccessStrategy;&#xD;
import CompositeStructuresSyntaxAndSemantics.Semantics.CompositeStructures.InvocationActions.CS_RequestPropagationStrategy;&#xD;
import CompositeStructuresSyntaxAndSemantics.Semantics.CompositeStructures.InvocationActions.CS_SignalInstance;&#xD;
import CompositeStructuresSyntaxAndSemantics.Syntax.Classes.Dependencies.NamedElement;&#xD;
import CompositeStructuresSyntaxAndSemantics.Syntax.Classes.Interfaces.Operation;&#xD;
import CompositeStructuresSyntaxAndSemantics.Syntax.CommonBehaviors.Communications.Interface;&#xD;
import CompositeStructuresSyntaxAndSemantics.Syntax.CommonBehaviors.Communications.InterfaceList;&#xD;
import CompositeStructuresSyntaxAndSemantics.Syntax.Components.BasicComponents.ConnectorKind;&#xD;
import CompositeStructuresSyntaxAndSemantics.Syntax.CompositeStructures.InternalStructures.ClassifierList;&#xD;
import CompositeStructuresSyntaxAndSemantics.Syntax.CompositeStructures.Ports.Port;&#xD;
import CompositeStructuresSyntaxAndSemantics.Syntax.CompositeStructures.StructuredClasses.Class_;&#xD;
import fUML.Semantics.Actions.BasicActions.CallOperationActionActivation;&#xD;
import fUML.Semantics.Actions.BasicActions.SendSignalActionActivation;&#xD;
import fUML.Semantics.Classes.Kernel.ExtensionalValue;&#xD;
import fUML.Semantics.Classes.Kernel.ExtensionalValueList;&#xD;
import fUML.Semantics.Classes.Kernel.FeatureValue;&#xD;
import fUML.Semantics.Classes.Kernel.FeatureValueList;&#xD;
import fUML.Semantics.Classes.Kernel.Object_;&#xD;
import fUML.Semantics.Classes.Kernel.Reference;&#xD;
import fUML.Semantics.Classes.Kernel.ReferenceList;&#xD;
import fUML.Semantics.Classes.Kernel.Value;&#xD;
import fUML.Semantics.Classes.Kernel.ValueList;&#xD;
import fUML.Semantics.CommonBehaviors.BasicBehaviors.Execution;&#xD;
import fUML.Semantics.CommonBehaviors.Communications.SignalInstance;&#xD;
import fUML.Semantics.Loci.LociL1.ChoiceStrategy;&#xD;
import fUML.Syntax.Classes.Kernel.NamedElementList;&#xD;
import fUML.Syntax.Classes.Kernel.StructuralFeature;&#xD;
import fUML.Syntax.Classes.Kernel.Type;&#xD;
import fUML.Syntax.Classes.Kernel.TypeList;&#xD;
import fUML.Syntax.CommonBehaviors.Communications.Reception;&#xD;
import fUML.Syntax.CommonBehaviors.Communications.Signal;&#xD;
</body>
            </ownedComment>
            <generalization xmi:type="uml:Generalization" xmi:id="_wUwzUt2JEeGnO-TF_1T_iQ" specific="_wUwzPd2JEeGnO-TF_1T_iQ">
              <general xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Classes-Kernel-Object"/>
            </generalization>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_wUwzV92JEeGnO-TF_1T_iQ" name="dispatchIn" specification="_wUxaFd2JEeGnO-TF_1T_iQ">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_wUwzWN2JEeGnO-TF_1T_iQ" name="operation">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-Operation"/>
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUwzWd2JEeGnO-TF_1T_iQ" value="1"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUwzWt2JEeGnO-TF_1T_iQ" value="1"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_wUwzW92JEeGnO-TF_1T_iQ" name="interactionPoint" type="_wUvk8d2JEeGnO-TF_1T_iQ">
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUxZ0N2JEeGnO-TF_1T_iQ" value="1"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUxZ0d2JEeGnO-TF_1T_iQ" value="1"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_wUxZ0t2JEeGnO-TF_1T_iQ" name="result">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-CommonBehaviors-BasicBehaviors-Execution"/>
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUxZ092JEeGnO-TF_1T_iQ" value="1"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUxZ1N2JEeGnO-TF_1T_iQ" value="1"/>
              </ownedParameter>
              <language>Java</language>
              <body>		// If the interaction point refers to a behavior port, does nothing [for the moment... ?], &#xD;
		// since the only kind of event supported in fUML is SignalEvent&#xD;
		// If it does not refer to a behavior port, select appropriate delegation links &#xD;
		// from interactionPoint, and propagates the operation call through &#xD;
		// these links&#xD;
		Execution execution = null ;&#xD;
		if (interactionPoint.definingPort.isBehavior) {&#xD;
			// Do nothing&#xD;
		}&#xD;
		else {&#xD;
			boolean operationIsProvided = true ;&#xD;
			ReferenceList potentialTargets = new ReferenceList() ;&#xD;
			CS_LinkList cddLinks = this.getLinks(interactionPoint) ;&#xD;
			Integer linkIndex = 1 ;&#xD;
			while (linkIndex &lt;= cddLinks.size()) {&#xD;
				ReferenceList validTargets = this.selectTargetsForDispatching(cddLinks.getValue(linkIndex - 1), &#xD;
						interactionPoint, ConnectorKind.delegation, operation, operationIsProvided) ;&#xD;
				Integer targetIndex = 1 ;&#xD;
				while(targetIndex &lt;= validTargets.size()) {&#xD;
					potentialTargets.add(validTargets.getValue(targetIndex-1)) ;&#xD;
					targetIndex = targetIndex + 1 ;&#xD;
				}&#xD;
				linkIndex = linkIndex + 1 ;&#xD;
			}&#xD;
			// If potentialTargets is empty, no delegation target have been found, &#xD;
			// and the operation call will be lost&#xD;
			if (! (potentialTargets.size()==0)) {&#xD;
				CS_RequestPropagationStrategy strategy =&#xD;
						(CS_RequestPropagationStrategy)this.locus.factory.getStrategy(&quot;requestPropagation&quot;) ;&#xD;
				// Choose one target non-deterministically&#xD;
				ReferenceList targets = strategy.select(potentialTargets, new CallOperationActionActivation()) ;&#xD;
				Reference target = targets.getValue(0) ;&#xD;
				execution = target.dispatch(operation) ;&#xD;
			}&#xD;
		}&#xD;
		return execution ;</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_wUxZ1d2JEeGnO-TF_1T_iQ" name="sendIn" specification="_wUxaIN2JEeGnO-TF_1T_iQ">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_wUxZ1t2JEeGnO-TF_1T_iQ" name="signalInstance">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-CommonBehaviors-Communications-SignalInstance"/>
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUxZ192JEeGnO-TF_1T_iQ" value="1"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUxZ2N2JEeGnO-TF_1T_iQ" value="1"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_wUxZ2d2JEeGnO-TF_1T_iQ" name="interactionPoint" type="_wUvk8d2JEeGnO-TF_1T_iQ">
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUxZ2t2JEeGnO-TF_1T_iQ" value="1"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUxZ292JEeGnO-TF_1T_iQ" value="1"/>
              </ownedParameter>
              <language>Java</language>
              <body>		// If the interaction is a behavior port, &#xD;
		// creates a CS_SignalInstance from the signal instance,&#xD;
		// sets its interaction point,&#xD;
		// and sends it to the target object using operation send&#xD;
		// If this is not a behavior port, &#xD;
		// select appropriate delegation targets from interactionPoint, &#xD;
		// and propagates the signal to these targets&#xD;
		if (interactionPoint.definingPort.isBehavior) {&#xD;
			CS_SignalInstance newSignalInstance = (CS_SignalInstance)signalInstance.copy() ;&#xD;
			newSignalInstance.interactionPoint = interactionPoint ;&#xD;
			this.send(newSignalInstance) ;&#xD;
		}&#xD;
		else {&#xD;
			boolean receptionIsProvided = true ;&#xD;
			ReferenceList potentialTargets = new ReferenceList() ;&#xD;
			CS_LinkList cddLinks = this.getLinks(interactionPoint) ;&#xD;
			Integer linkIndex = 1 ;&#xD;
			while (linkIndex &lt;= cddLinks.size()) {&#xD;
				ReferenceList validTargets = this.selectTargetsForSending(cddLinks.getValue(linkIndex - 1), &#xD;
						interactionPoint, ConnectorKind.delegation, signalInstance.type, receptionIsProvided) ;&#xD;
				Integer targetIndex = 1 ;&#xD;
				while(targetIndex &lt;= validTargets.size()) {&#xD;
					potentialTargets.add(validTargets.getValue(targetIndex-1)) ;&#xD;
					targetIndex = targetIndex + 1 ;&#xD;
				}&#xD;
				linkIndex = linkIndex + 1 ;&#xD;
			}&#xD;
			// If potential targets is empty, no delegation target has been found, &#xD;
			// and the signal is lost&#xD;
			// Otherwise, do the following concurrently&#xD;
			for (int i = 0 ; i &lt; potentialTargets.size() ; i++) {&#xD;
				Reference target = potentialTargets.getValue(i) ;&#xD;
				CS_SignalInstance newSignalInstance = (CS_SignalInstance)signalInstance.copy() ;&#xD;
				newSignalInstance.interactionPoint = interactionPoint ;&#xD;
				target.send(newSignalInstance) ;&#xD;
			}&#xD;
		}</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_wUxZ3N2JEeGnO-TF_1T_iQ" name="selectTargetsForSending" specification="_wUxaKN2JEeGnO-TF_1T_iQ">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_iK0jgBFFEeKT3tsL4v_Daw" name="link" type="_wUyA5N2JEeGnO-TF_1T_iQ"/>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_wUxZ4N2JEeGnO-TF_1T_iQ" name="interactionPoint" type="_wUvk8d2JEeGnO-TF_1T_iQ">
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUxZ4d2JEeGnO-TF_1T_iQ" value="1"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUxZ4t2JEeGnO-TF_1T_iQ" value="1"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_VENSkBFFEeKT3tsL4v_Daw" name="connectorKind" type="_zDsxj-CxEeGcc4S1CmuFHA"/>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_wUxZ3d2JEeGnO-TF_1T_iQ" name="signal">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-CommonBehaviors-Communications-Signal"/>
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUxZ3t2JEeGnO-TF_1T_iQ" value="1"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUxZ392JEeGnO-TF_1T_iQ" value="1"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_MJrLsOdwEeGYZqnbU6eCYw" name="isProvided">
                <type xmi:type="uml:PrimitiveType" href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_wUxZ492JEeGnO-TF_1T_iQ" name="result">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Classes-Kernel-Reference"/>
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUxZ5N2JEeGnO-TF_1T_iQ"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUxZ5d2JEeGnO-TF_1T_iQ" value="*"/>
              </ownedParameter>
              <language>Java</language>
              <body>		// From the given link, signal and interaction point, retrieves potential targets (i.e. end values of link) &#xD;
		// through which request can be propagated&#xD;
		// These targets are attached to interaction point through the given link, and respect the following rules:&#xD;
		// - if toInternal is true, connectorKind must be Delegation, the given link has to target the internals of this CS_Object&#xD;
		// - if toInternal is false, the given link has to target the environment of this CS_Object.&#xD;
		ReferenceList potentialTargets = new ReferenceList() ;&#xD;
		if (toInternal &amp;&amp; connectorKind == ConnectorKind.delegation) {&#xD;
			if (this.getLinkKind(link, interactionPoint) == CS_LinkKind.ToInternal) {&#xD;
				Integer i = 1 ;&#xD;
				while(i &lt;= link.getFeatureValues().size()) {&#xD;
					ValueList values = link.getFeatureValues().get(i-1).values ;&#xD;
					if (!values.isEmpty()) {&#xD;
						Integer j = 1 ;&#xD;
						while (j &lt;= values.size()) {&#xD;
							Reference cddTarget = (Reference)values.get(j-1) ;&#xD;
							if (!cddTarget.equals(interactionPoint)) {&#xD;
								potentialTargets.add(cddTarget) ;&#xD;
							}&#xD;
							j = j + 1 ;&#xD;
						}&#xD;
					}&#xD;
					i = i + 1 ;&#xD;
				}&#xD;
			}&#xD;
		}&#xD;
		else { // to Environment&#xD;
			if (this.getLinkKind(link, interactionPoint) == CS_LinkKind.ToEnvironment) {&#xD;
				Integer i = 1 ;&#xD;
				while(i &lt;= link.getFeatureValues().size()) {&#xD;
					ValueList values = link.getFeatureValues().get(i-1).values ;&#xD;
					if (!values.isEmpty() &amp;&amp; values.get(0) instanceof Reference) {&#xD;
						Reference cddTarget = (Reference)values.get(0) ;&#xD;
						if (connectorKind == ConnectorKind.assembly) {&#xD;
							if (! (cddTarget instanceof CS_InteractionPoint)) { // This is an assembly link&#xD;
								potentialTargets.add(cddTarget) ;&#xD;
							}&#xD;
							else {&#xD;
								// This is an assembly if the interaction point is not a feature value &#xD;
								// for a container of this CS_Object&#xD;
								CS_ObjectList directContainers = this.getDirectContainers() ;&#xD;
								boolean isAssembly = true ;&#xD;
								Integer j = 1 ;&#xD;
								if (! this.hasValueForAFeature(cddTarget)) {&#xD;
									while (isAssembly &amp;&amp; j &lt;= directContainers.size()) {&#xD;
										CS_Object container = directContainers.get(j - 1) ;&#xD;
										if (container.hasValueForAFeature(cddTarget)) {&#xD;
											isAssembly = false ;&#xD;
										}&#xD;
										j++ ;&#xD;
									}&#xD;
								}&#xD;
								else {&#xD;
									isAssembly = false ;&#xD;
								}&#xD;
								if (isAssembly) {&#xD;
									potentialTargets.add(cddTarget) ;&#xD;
								}&#xD;
							}&#xD;
						}&#xD;
						else { // delegation&#xD;
							// This is a delegation if the target is an interaction point&#xD;
							// and if this interaction is a feature value for a container of this CS_Object&#xD;
							if (cddTarget instanceof CS_InteractionPoint) {&#xD;
								CS_ObjectList directContainers = this.getDirectContainers() ;&#xD;
								boolean isDelegation = false ;&#xD;
								Integer j = 1 ;&#xD;
								while (!isDelegation &amp;&amp; j &lt;= directContainers.size()) {&#xD;
									CS_Object container = directContainers.get(j - 1) ;&#xD;
									if (container.hasValueForAFeature(cddTarget)) {&#xD;
										isDelegation = true ;&#xD;
									}&#xD;
									j++ ;&#xD;
								}&#xD;
								if (isDelegation) {&#xD;
									potentialTargets.add(cddTarget) ;&#xD;
								}&#xD;
							}&#xD;
						}&#xD;
					}&#xD;
					i = i + 1 ;&#xD;
				}&#xD;
			}&#xD;
		} &#xD;
		return potentialTargets ;</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_wUxZ8N2JEeGnO-TF_1T_iQ" name="selectTargetsForDispatching" specification="_wUxaPt2JEeGnO-TF_1T_iQ">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_hcqScBFEEeKT3tsL4v_Daw" name="link" type="_wUyA5N2JEeGnO-TF_1T_iQ"/>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_wUxZ9N2JEeGnO-TF_1T_iQ" name="interactionPoint" type="_wUvk8d2JEeGnO-TF_1T_iQ">
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUxZ9d2JEeGnO-TF_1T_iQ" value="1"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUxZ9t2JEeGnO-TF_1T_iQ" value="1"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_dMmLcBFEEeKT3tsL4v_Daw" name="connectorKind" type="_zDsxj-CxEeGcc4S1CmuFHA"/>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_wUxZ8d2JEeGnO-TF_1T_iQ" name="operation">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-Operation"/>
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUxZ8t2JEeGnO-TF_1T_iQ" value="1"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUxZ892JEeGnO-TF_1T_iQ" value="1"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_vLiWgOdxEeGYZqnbU6eCYw" name="isProvided">
                <type xmi:type="uml:PrimitiveType" href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_wUxZ992JEeGnO-TF_1T_iQ" name="result">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Classes-Kernel-Reference"/>
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUxZ-N2JEeGnO-TF_1T_iQ"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUxZ-d2JEeGnO-TF_1T_iQ" value="*"/>
              </ownedParameter>
              <language>Java</language>
              <body>		// From the given link, operation and interaction point, retrieves potential targets (i.e. end values of link) &#xD;
		// through which request can be propagated&#xD;
		// These targets are attached to interaction point through the given link, and respect the following rules:&#xD;
		// - if toInternal is true, connectorKind must be Delegation, the given link has to target the internals of this CS_Object, &#xD;
		// and a valid target must provide the Operation &#xD;
		// - if toInternal is false, the given link has to target the environment of this CS_Object.&#xD;
		//		- if connectorKind is assembly, a valid target has to provide the operation&#xD;
		// 		- if connectorKind is delegation, a valid target has to require the operation&#xD;
		ReferenceList potentialTargets = new ReferenceList() ;&#xD;
		if (toInternal &amp;&amp; connectorKind == ConnectorKind.delegation) {&#xD;
			if (this.getLinkKind(link, interactionPoint) == CS_LinkKind.ToInternal) {&#xD;
				Integer i = 1 ;&#xD;
				while(i &lt;= link.getFeatureValues().size()) {&#xD;
					ValueList values = link.getFeatureValues().get(i-1).values ;&#xD;
					if (!values.isEmpty() &amp;&amp; values.get(0) instanceof Reference) {&#xD;
						Reference cddTarget = (Reference)values.get(0) ;&#xD;
						if (cddTarget != interactionPoint &amp;&amp; this.isOperationProvided(cddTarget, operation)) {&#xD;
							potentialTargets.add(cddTarget) ;&#xD;
						}&#xD;
					}&#xD;
					i = i + 1 ;&#xD;
				}&#xD;
			}&#xD;
		}&#xD;
		else { // to environment&#xD;
			if (this.getLinkKind(link, interactionPoint) == CS_LinkKind.ToEnvironment) {&#xD;
				Integer i = 1 ;&#xD;
				while(i &lt;= link.getFeatureValues().size()) {&#xD;
					ValueList values = link.getFeatureValues().get(i-1).values ;&#xD;
					if (!values.isEmpty() &amp;&amp; values.get(0) instanceof Reference) {&#xD;
						Reference cddTarget = (Reference)values.get(0) ;&#xD;
						if (connectorKind == ConnectorKind.assembly) {&#xD;
							if (! (cddTarget instanceof CS_InteractionPoint)) { // This is an assembly link&#xD;
								if (this.isOperationProvided(cddTarget, operation)) {&#xD;
									potentialTargets.add(cddTarget) ;&#xD;
								}&#xD;
							}&#xD;
							else {&#xD;
								// This is an assembly if the interaction point is not a feature value &#xD;
								// for a container of this CS_Object&#xD;
								CS_ObjectList directContainers = this.getDirectContainers() ;&#xD;
								boolean isAssembly = true ;&#xD;
								Integer j = 1 ;&#xD;
								if (! this.hasValueForAFeature(cddTarget)) {&#xD;
									while (isAssembly &amp;&amp; j &lt;= directContainers.size()) {&#xD;
										CS_Object container = directContainers.get(j - 1) ;&#xD;
										if (container.hasValueForAFeature(cddTarget)) {&#xD;
											isAssembly = false ;&#xD;
										}&#xD;
										j++ ;&#xD;
									}&#xD;
								}&#xD;
								else {&#xD;
									isAssembly = false ;&#xD;
								}&#xD;
								if (isAssembly) {&#xD;
									if (this.isOperationProvided(cddTarget, operation)) {&#xD;
										potentialTargets.add(cddTarget) ;&#xD;
									}&#xD;
								}&#xD;
							}&#xD;
						}&#xD;
						else { // delegation&#xD;
							// This is a delegation if the target is an interaction point&#xD;
							// and if this interaction is a feature value for a container of this CS_Object&#xD;
							if (cddTarget instanceof CS_InteractionPoint) {&#xD;
								CS_ObjectList directContainers = this.getDirectContainers() ;&#xD;
								boolean isDelegation = false ;&#xD;
								Integer j = 1 ;&#xD;
								while (!isDelegation &amp;&amp; j &lt;= directContainers.size()) {&#xD;
									CS_Object container = directContainers.get(j - 1) ;&#xD;
									if (container.hasValueForAFeature(cddTarget)) {&#xD;
										isDelegation = true ;&#xD;
									}&#xD;
									j++ ;&#xD;
								}&#xD;
								if (isDelegation) {&#xD;
									if (this.isOperationRequired(cddTarget, operation)) {&#xD;
										potentialTargets.add(cddTarget) ;&#xD;
									}&#xD;
								}&#xD;
							}&#xD;
						}&#xD;
					}&#xD;
					i = i + 1 ;&#xD;
				}&#xD;
			}&#xD;
		}&#xD;
		return potentialTargets ;</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_wUxZ-t2JEeGnO-TF_1T_iQ" name="sendOut" specification="_wUxaVN2JEeGnO-TF_1T_iQ">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_wUxZ-92JEeGnO-TF_1T_iQ" name="signalInstance">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-CommonBehaviors-Communications-SignalInstance"/>
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUxZ_N2JEeGnO-TF_1T_iQ" value="1"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUxZ_d2JEeGnO-TF_1T_iQ" value="1"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_wUxZ_t2JEeGnO-TF_1T_iQ" name="interactionPoint" type="_wUvk8d2JEeGnO-TF_1T_iQ">
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUxZ_92JEeGnO-TF_1T_iQ" value="1"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUxaAN2JEeGnO-TF_1T_iQ" value="1"/>
              </ownedParameter>
              <language>Java</language>
              <body>		// Select appropriate delegation links from interactionPoint, &#xD;
		// and propagates the signal instance through these links&#xD;
		// Appropriate links are links which target elements&#xD;
		// in the environment of this CS_Object.&#xD;
		// These can be delegation links (i.e, the targeted elements must&#xD;
		// require a reception for the signal) or assembly links (i.e., the target elements&#xD;
		// must provide a reception for the signal)&#xD;
&#xD;
		boolean receptionIsNotProvided = false ; // i.e. it is required&#xD;
		ReferenceList allPotentialTargets = new ReferenceList() ;&#xD;
		ReferenceList targetsForSendingIn = new ReferenceList() ;&#xD;
		ReferenceList targetsForSendingOut = new ReferenceList() ;&#xD;
&#xD;
		CS_LinkList cddLinks = this.getLinks(interactionPoint) ;&#xD;
		Integer linkIndex = 1 ;&#xD;
		while (linkIndex &lt;= cddLinks.size()) {&#xD;
			ReferenceList validAssemblyTargets = this.selectTargetsForSending(cddLinks.getValue(linkIndex - 1), &#xD;
					interactionPoint, ConnectorKind.assembly, signalInstance.type, receptionIsNotProvided) ;&#xD;
			Integer targetIndex = 1 ;&#xD;
			while(targetIndex &lt;= validAssemblyTargets.size()) {&#xD;
				allPotentialTargets.addValue(validAssemblyTargets.getValue(targetIndex-1)) ;&#xD;
				targetsForSendingIn.addValue(validAssemblyTargets.getValue(targetIndex-1)) ;&#xD;
				targetIndex = targetIndex + 1 ;&#xD;
			}&#xD;
			ReferenceList validDelegationTargets = this.selectTargetsForSending(cddLinks.getValue(linkIndex - 1), &#xD;
					interactionPoint, ConnectorKind.delegation, signalInstance.type, receptionIsNotProvided) ;&#xD;
			targetIndex = 1 ;&#xD;
			while(targetIndex &lt;= validDelegationTargets.size()) {&#xD;
				allPotentialTargets.addValue(validDelegationTargets.getValue(targetIndex-1)) ;&#xD;
				targetsForSendingOut.addValue(validDelegationTargets.getValue(targetIndex-1)) ;&#xD;
				targetIndex = targetIndex + 1 ;&#xD;
			}&#xD;
			linkIndex = linkIndex + 1 ;&#xD;
		}&#xD;
&#xD;
		CS_RequestPropagationStrategy strategy = (CS_RequestPropagationStrategy)this.locus.factory.getStrategy(&quot;requestPropagation&quot;) ;&#xD;
		ReferenceList selectedTargets = strategy.select(allPotentialTargets, new SendSignalActionActivation()) ;&#xD;
&#xD;
		for (int j = 0 ; j &lt; selectedTargets.size() ; j++) {&#xD;
			Reference target = selectedTargets.getValue(j) ;&#xD;
			for (int k = 0 ; k &lt; targetsForSendingIn.size() ; k++) {&#xD;
				Reference cddTarget = targetsForSendingIn.getValue(k) ;&#xD;
				if (cddTarget == target) {&#xD;
					target.send(signalInstance) ;&#xD;
				}&#xD;
			}&#xD;
			for (int k = 0 ; k &lt; targetsForSendingOut.size() ; k++) {&#xD;
				// The target must be an interaction point&#xD;
				// i.e. a delegation connector for a required reception can only target a port&#xD;
				CS_InteractionPoint cddTarget = (CS_InteractionPoint)targetsForSendingOut.getValue(k) ;&#xD;
				if (cddTarget == target) {&#xD;
					CS_Reference owner = cddTarget.owner ;&#xD;
					owner.sendOut(signalInstance, cddTarget) ;&#xD;
				}&#xD;
			}&#xD;
		}</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_wUxaAd2JEeGnO-TF_1T_iQ" name="dispatchOut" specification="_wUxaXN2JEeGnO-TF_1T_iQ">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_wUxaAt2JEeGnO-TF_1T_iQ" name="operation">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-Operation"/>
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUxaA92JEeGnO-TF_1T_iQ" value="1"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUxaBN2JEeGnO-TF_1T_iQ" value="1"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_wUxaBd2JEeGnO-TF_1T_iQ" name="interactionPoint" type="_wUvk8d2JEeGnO-TF_1T_iQ">
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUxaBt2JEeGnO-TF_1T_iQ" value="1"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUxaB92JEeGnO-TF_1T_iQ" value="1"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_wUxaCN2JEeGnO-TF_1T_iQ" name="result">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-CommonBehaviors-BasicBehaviors-Execution"/>
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUxaCd2JEeGnO-TF_1T_iQ" value="1"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUxaCt2JEeGnO-TF_1T_iQ" value="1"/>
              </ownedParameter>
              <language>Java</language>
              <body>		// Select appropriate delegation links from interactionPoint, &#xD;
		// and propagates the operation call through these links&#xD;
		// Appropriate links are either links which target elements&#xD;
		// in the environment of this CS_Object.&#xD;
		// These can be delegation links (i.e, the targeted elements must&#xD;
		// require the operation) or assembly links (i.e., the target elements&#xD;
		// must provide the operation)&#xD;
&#xD;
&#xD;
		Execution execution = null ;&#xD;
&#xD;
		boolean operationIsNotProvided = false ; // i.e. it is required&#xD;
		ReferenceList allPotentialTargets = new ReferenceList() ;&#xD;
		ReferenceList targetsForDispatchingIn = new ReferenceList() ;&#xD;
		ReferenceList targetsForDispatchingOut = new ReferenceList() ;&#xD;
&#xD;
		CS_LinkList cddLinks = this.getLinks(interactionPoint) ;&#xD;
		Integer linkIndex = 1 ;&#xD;
		while (linkIndex &lt;= cddLinks.size()) {&#xD;
			ReferenceList validAssemblyTargets = this.selectTargetsForDispatching(cddLinks.getValue(linkIndex - 1), &#xD;
					interactionPoint, ConnectorKind.assembly, operation, operationIsNotProvided) ;&#xD;
			Integer targetIndex = 1 ;&#xD;
			while(targetIndex &lt;= validAssemblyTargets.size()) {&#xD;
				allPotentialTargets.addValue(validAssemblyTargets.getValue(targetIndex-1)) ;&#xD;
				targetsForDispatchingIn.addValue(validAssemblyTargets.getValue(targetIndex-1)) ;&#xD;
				targetIndex = targetIndex + 1 ;&#xD;
			}&#xD;
			ReferenceList validDelegationTargets = this.selectTargetsForDispatching(cddLinks.getValue(linkIndex - 1), &#xD;
					interactionPoint, ConnectorKind.delegation, operation, operationIsNotProvided) ;&#xD;
			targetIndex = 1 ;&#xD;
			while(targetIndex &lt;= validDelegationTargets.size()) {&#xD;
				allPotentialTargets.addValue(validDelegationTargets.getValue(targetIndex-1)) ;&#xD;
				targetsForDispatchingOut.addValue(validDelegationTargets.getValue(targetIndex-1)) ;&#xD;
				targetIndex = targetIndex + 1 ;&#xD;
			}&#xD;
			linkIndex = linkIndex + 1 ;&#xD;
		}&#xD;
&#xD;
		CS_RequestPropagationStrategy strategy = (CS_RequestPropagationStrategy)this.locus.factory.getStrategy(&quot;requestPropagation&quot;) ;&#xD;
		ReferenceList selectedTargets = strategy.select(allPotentialTargets, new SendSignalActionActivation()) ;&#xD;
&#xD;
		for (int j = 0 ; j &lt; selectedTargets.size() ; j++) {&#xD;
			Reference target = selectedTargets.getValue(j) ;&#xD;
			for (int k = 0 ; k &lt; targetsForDispatchingIn.size() &amp;&amp; execution == null ; k++) {&#xD;
				Reference cddTarget = targetsForDispatchingIn.getValue(k) ;&#xD;
				if (cddTarget == target) {&#xD;
					execution = target.dispatch(operation) ;&#xD;
				}&#xD;
			}&#xD;
			for (int k = 0 ; k &lt; targetsForDispatchingOut.size() &amp;&amp; execution == null ; k++) {&#xD;
				// The target must be an interaction point&#xD;
				// i.e. a delegation connector for a required operation can only target a port&#xD;
				CS_InteractionPoint cddTarget = (CS_InteractionPoint)targetsForDispatchingOut.getValue(k) ;&#xD;
				if (cddTarget == target) {&#xD;
					CS_Reference owner = cddTarget.owner ;&#xD;
					execution = owner.dispatchOut(operation, cddTarget) ;&#xD;
				}&#xD;
			}&#xD;
		}&#xD;
		return execution ;&#xD;
</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_mFIkUOVQEeGVLZOJyKihvQ" name="getFeatureValue" specification="_QimP8OVQEeGVLZOJyKihvQ">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_pH38kOVQEeGVLZOJyKihvQ" name="feature">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-StructuralFeature"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_qdZlEOVQEeGVLZOJyKihvQ" name="result" direction="return">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Classes-Kernel-FeatureValue"/>
              </ownedParameter>
              <language>Java</language>
              <body>		// In the case where the feature belongs to an Interface,&#xD;
		// fUML semantics is extended in the sense that reading is &#xD;
		// delegated to a CS_StructuralFeatureOfInterfaceAccessStrategy&#xD;
		if (feature.namespace instanceof Interface) {&#xD;
			CS_StructuralFeatureOfInterfaceAccessStrategy readStrategy = &#xD;
					(CS_StructuralFeatureOfInterfaceAccessStrategy)this.locus.factory.getStrategy(&quot;structuralFeature&quot;) ;&#xD;
			return readStrategy.read(this, feature) ;&#xD;
		}&#xD;
		else {&#xD;
			return super.getFeatureValue(feature);&#xD;
		}</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_9gg9wOVdEeGVLZOJyKihvQ" name="setFeatureValue" specification="_b4W7YOVdEeGVLZOJyKihvQ">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_PII7wOVeEeGVLZOJyKihvQ" name="feature">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-StructuralFeature"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_QWpWQOVeEeGVLZOJyKihvQ" name="values">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Classes-Kernel-Value"/>
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_aeRtkOVeEeGVLZOJyKihvQ"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_aeV_AOVeEeGVLZOJyKihvQ" value="*"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_Rtw6MOVeEeGVLZOJyKihvQ" name="position">
                <type xmi:type="uml:PrimitiveType" href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Integer"/>
              </ownedParameter>
              <language>Java</language>
              <body>		// In the case where the feature belongs to an Interface,&#xD;
		// fUML semantics is extended in the sense that writing is &#xD;
		// delegated to a CS_StructuralFeatureOfInterfaceAccessStrategy&#xD;
		if (feature.namespace instanceof Interface) {&#xD;
			CS_StructuralFeatureOfInterfaceAccessStrategy writeStrategy = &#xD;
					(CS_StructuralFeatureOfInterfaceAccessStrategy)this.locus.factory.getStrategy(&quot;structuralFeature&quot;) ;&#xD;
			writeStrategy.write(this, feature, values, position) ;&#xD;
		}&#xD;
		else {&#xD;
			super.setFeatureValue(feature, values, position);&#xD;
		}</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_NNQoQOdzEeGYZqnbU6eCYw" name="contains" specification="_9z3cYOdyEeGYZqnbU6eCYw">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_Qb-nAOdzEeGYZqnbU6eCYw" name="object">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Classes-Kernel-Object"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_SWS-oOdzEeGYZqnbU6eCYw" name="result" direction="return">
                <type xmi:type="uml:PrimitiveType" href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
              </ownedParameter>
              <language>Java</language>
              <body>		// Determines if the object given as a parameter is directly&#xD;
		// or indirectly contained by this CS_Object&#xD;
		boolean objectIsContained = this.directlyContains(object) ;&#xD;
		// if object is not directly contained, restart the research&#xD;
		// recursively on the objects owned by this CS_Object&#xD;
		for (int i = 0 ; i &lt; this.featureValues.size() &amp;&amp; !objectIsContained ; i++) {&#xD;
			FeatureValue featureValue = this.featureValues.getValue(i) ;&#xD;
			ValueList values = featureValue.values ;&#xD;
			for (int j = 0 ; j &lt; values.size() &amp;&amp; !objectIsContained ; j++) {&#xD;
				Value value = values.getValue(j) ;&#xD;
				if (value instanceof CS_Object) {&#xD;
					objectIsContained = ((CS_Object)value).contains(object) ;&#xD;
				}&#xD;
				else if (value instanceof CS_Reference) {&#xD;
					CS_Object referent = ((CS_Reference)value).compositeReferent ;&#xD;
					objectIsContained = referent.contains(object) ;&#xD;
				}&#xD;
			}&#xD;
		}&#xD;
		return objectIsContained;</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_EA5J4Od0EeGYZqnbU6eCYw" name="directlyContains" specification="_u98UgOdzEeGYZqnbU6eCYw">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_HzKhoOd0EeGYZqnbU6eCYw" name="object">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Classes-Kernel-Object"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_JY1e8Od0EeGYZqnbU6eCYw" name="result" direction="return">
                <type xmi:type="uml:PrimitiveType" href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
              </ownedParameter>
              <language>Java</language>
              <body>		// Determines if the object given as a parameter is directly&#xD;
		// contained by this CS_Object&#xD;
		boolean objectIsContained = false ;&#xD;
		for (int i = 0 ; i &lt; this.featureValues.size() &amp;&amp; !objectIsContained ; i++) {&#xD;
			FeatureValue featureValue = this.featureValues.getValue(i) ;&#xD;
			ValueList values = featureValue.values ;&#xD;
			for (int j = 0 ; j &lt; values.size() &amp;&amp; !objectIsContained ; j++) {&#xD;
				Value value = values.getValue(j) ;&#xD;
				if (value == object) {&#xD;
					objectIsContained = true ;&#xD;
				}&#xD;
				else if (value instanceof CS_Reference) {&#xD;
					objectIsContained = (((CS_Reference)value).referent == object) ;&#xD;
				}&#xD;
			}&#xD;
		}&#xD;
		return objectIsContained;</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_-R5xUOd0EeGYZqnbU6eCYw" name="getDirectContainers" specification="_uyYIQOd0EeGYZqnbU6eCYw">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_El4Q0Od1EeGYZqnbU6eCYw" name="result" type="_wUwzPd2JEeGnO-TF_1T_iQ" direction="return">
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GoNU8Od1EeGYZqnbU6eCYw"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GoRmYOd1EeGYZqnbU6eCYw" value="*"/>
              </ownedParameter>
              <language>Java</language>
              <body>		// Retrieves all the extensional values at this locus which are direct&#xD;
		// containers for this CS_Object&#xD;
		// An extensional value is a direct container for an object if:&#xD;
		// - it is a CS_Object&#xD;
		// - it directly contains this object (i.e. CS_Object.directlyContains(Object)==true)&#xD;
		CS_ObjectList containers = new CS_ObjectList() ;&#xD;
		for (int i = 0 ; i &lt; this.locus.extensionalValues.size() ; i++) {&#xD;
			ExtensionalValue extensionalValue = this.locus.extensionalValues.getValue(i) ;&#xD;
			if (extensionalValue != this &amp;&amp; extensionalValue instanceof CS_Object) {&#xD;
				CS_Object cddContainer = (CS_Object)extensionalValue ;&#xD;
				if (cddContainer.directlyContains(this)) {&#xD;
					containers.add(cddContainer) ;&#xD;
				}&#xD;
			}&#xD;
		}&#xD;
		return containers ;</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_HdeTkOd2EeGYZqnbU6eCYw" name="isOperationProvided" specification="_daYsQOd1EeGYZqnbU6eCYw">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_UNg3kOd2EeGYZqnbU6eCYw" name="reference">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Classes-Kernel-Reference"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_VxhoAOd2EeGYZqnbU6eCYw" name="operation" type="_vBjwrtzDEeGru4CffneBug"/>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_XRXqIOd2EeGYZqnbU6eCYw" name="result" direction="return">
                <type xmi:type="uml:PrimitiveType" href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
              </ownedParameter>
              <language>Java</language>
              <body>		// Determines if the given reference provides the operation&#xD;
		// If the reference is an interaction point, it provides the operation if this operation&#xD;
		// is a member of one of its provided interfaces&#xD;
		// If the reference is NOT an interactionPoint, it provides this operation if this operation is&#xD;
		// an operation of one of its type, or one of its type provides a realization for this operation (in the case&#xD;
		// where the namespace of this Operation is an interface)&#xD;
		boolean isProvided = false ;&#xD;
		if (reference instanceof CS_InteractionPoint) {&#xD;
			if (operation.owner instanceof Interface) {&#xD;
				// We have to look in provided interfaces of the port if &#xD;
				// they define directly or indirectly the Operation&#xD;
				Integer interfaceIndex = 1 ;&#xD;
				// Iterates on provided interfaces of the port&#xD;
				InterfaceList providedInterfaces = ((CS_InteractionPoint)reference).definingPort.provided() ;&#xD;
				while (interfaceIndex &lt;= providedInterfaces.size() &amp;&amp; !isProvided) {&#xD;
					Interface interface_ = providedInterfaces.getValue(interfaceIndex-1) ;&#xD;
					// Iterates on members of the current Interface&#xD;
					Integer memberIndex = 1 ;&#xD;
					while (memberIndex &lt;= interface_.member.size() &amp;&amp; !isProvided) {&#xD;
						NamedElement cddOperation = interface_.member.getValue(memberIndex-1) ;&#xD;
						if (cddOperation instanceof Operation) {&#xD;
							isProvided = operation == cddOperation ;&#xD;
						}&#xD;
						memberIndex = memberIndex + 1 ;&#xD;
					}&#xD;
					interfaceIndex = interfaceIndex + 1 ;&#xD;
				}&#xD;
			}&#xD;
		}&#xD;
		else {&#xD;
			// We have to look if one of the Classifiers typing this reference &#xD;
			// directly or indirectly provides this operation&#xD;
			ClassifierList types = reference.getTypes() ;&#xD;
			Integer typeIndex = 1 ;&#xD;
			while (typeIndex &lt;= types.size() &amp;&amp; !isProvided) {&#xD;
				if (types.getValue(typeIndex - 1) instanceof Class_) {&#xD;
					Integer memberIndex = 1 ;&#xD;
					NamedElementList members = ((Class_)types.getValue(typeIndex - 1)).member ; &#xD;
					while (memberIndex &lt;= members.size() &amp;&amp; !isProvided) {&#xD;
						NamedElement cddOperation = members.getValue(memberIndex-1) ;&#xD;
						if (cddOperation instanceof Operation) {&#xD;
							CS_DispatchOperationOfInterfaceStrategy strategy = new CS_DispatchOperationOfInterfaceStrategy() ;&#xD;
							isProvided = strategy.operationsMatch((Operation)cddOperation, operation) ;&#xD;
						}&#xD;
						memberIndex = memberIndex + 1 ;&#xD;
					}&#xD;
				}&#xD;
				typeIndex = typeIndex + 1 ;&#xD;
			}&#xD;
		}&#xD;
		return isProvided ;</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_FD5iMOd4EeGYZqnbU6eCYw" name="isOperationRequired" specification="_o8fyoOd3EeGYZqnbU6eCYw">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_LekfkOd4EeGYZqnbU6eCYw" name="reference">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Classes-Kernel-Reference"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_NEIvMOd4EeGYZqnbU6eCYw" name="operation" type="_vBjwrtzDEeGru4CffneBug"/>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_Om6wkOd4EeGYZqnbU6eCYw" name="result" direction="return">
                <type xmi:type="uml:PrimitiveType" href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
              </ownedParameter>
              <language>Java</language>
              <body>		// Determines if the given reference requires the operation&#xD;
		// If the reference is an interaction point, it requires the operation if this operation&#xD;
		// is a member of one of its required interfaces&#xD;
		// If the reference is not a interaction point, it cannot require an operation&#xD;
		boolean matches = false ;&#xD;
		if (reference instanceof CS_InteractionPoint) {&#xD;
			Integer interfaceIndex = 1 ;&#xD;
			// Iterates on provided interfaces of the port&#xD;
			InterfaceList requiredInterfaces = ((CS_InteractionPoint)reference).definingPort.required() ;&#xD;
			while (interfaceIndex &lt;= requiredInterfaces.size() &amp;&amp; !matches) {&#xD;
				Interface interface_ = requiredInterfaces.getValue(interfaceIndex-1) ;&#xD;
				// Iterates on members of the current Interface&#xD;
				Integer memberIndex = 1 ;&#xD;
				while (memberIndex &lt;= interface_.member.size() &amp;&amp; !matches) {&#xD;
					NamedElement cddOperation = interface_.member.getValue(memberIndex-1) ;&#xD;
					if (cddOperation instanceof Operation) {&#xD;
						matches = operation == cddOperation ;&#xD;
					}&#xD;
					memberIndex = memberIndex + 1 ;&#xD;
				}&#xD;
				interfaceIndex = interfaceIndex + 1 ;&#xD;
			}&#xD;
		}&#xD;
		return matches ;</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_tPbOgBFHEeKT3tsL4v_Daw" name="getLinkKind" specification="_ZTN-wBFHEeKT3tsL4v_Daw">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_xJl-ABFHEeKT3tsL4v_Daw" name="link" type="_wUyA5N2JEeGnO-TF_1T_iQ"/>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_x5nFsBFHEeKT3tsL4v_Daw" name="interactionPoint" type="_wUvk8d2JEeGnO-TF_1T_iQ"/>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_ypK6YBFHEeKT3tsL4v_Daw" name="result" type="_RgFd0BFAEeKT3tsL4v_Daw" direction="return"/>
              <language>Java</language>
              <body>		// If the given interaction point belongs to the given object, and if the given interaction point is used as an end of the link, &#xD;
		// then the links targets the environment of the object (enumeration literal ToEnvironment) if all the feature values of the link &#xD;
		// (but one for the interaction point) refer to values which are not themselves values for features of the interaction point. &#xD;
		// If all the feature values of the link refer to values which are themselves values for features of the interaction point, &#xD;
		// the link targets the internals of the object (enumeration literal ToInternal). Otherwise, the link has no particular meaning &#xD;
		// in the context defined by the object and the interaction point (enumeration literal None).&#xD;
		if (! link.hasValueForAFeature(interactionPoint)) {&#xD;
			return CS_LinkKind.None ;&#xD;
		}&#xD;
		CS_LinkKind kind = CS_LinkKind.ToInternal ;&#xD;
		FeatureValueList featureValues = link.getFeatureValues() ;&#xD;
		Integer i = 1 ;&#xD;
		while (i &lt;= featureValues.size() &amp;&amp; kind != CS_LinkKind.None) {&#xD;
			FeatureValue value = featureValues.getValue(i-1) ;&#xD;
			if (value.values.isEmpty()) {&#xD;
				kind = CS_LinkKind.None ;&#xD;
			}&#xD;
			else {&#xD;
				Value v = value.values.getValue(0) ;&#xD;
				boolean vIsAValueForAFeatureOfContext = false ;&#xD;
				if (v.equals(interactionPoint)) {&#xD;
					vIsAValueForAFeatureOfContext = true ;&#xD;
				}&#xD;
				else if (v instanceof CS_InteractionPoint) {&#xD;
					v = ((CS_InteractionPoint)v).owner ;&#xD;
					vIsAValueForAFeatureOfContext = this.hasValueForAFeature(v) ;&#xD;
				}&#xD;
				else {&#xD;
					vIsAValueForAFeatureOfContext = this.hasValueForAFeature(v) ;&#xD;
				}&#xD;
				if (!vIsAValueForAFeatureOfContext) {&#xD;
					kind = CS_LinkKind.ToEnvironment ;&#xD;
				}&#xD;
			}&#xD;
			i = i + 1 ;&#xD;
		}&#xD;
		return kind ;</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ex90gBFJEeKT3tsL4v_Daw" name="getLinks" specification="_LTsd8BFJEeKT3tsL4v_Daw">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_mk6zcBFJEeKT3tsL4v_Daw" name="interactionPoint" type="_wUvk8d2JEeGnO-TF_1T_iQ"/>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_n6AXEBFJEeKT3tsL4v_Daw" name="result" type="_wUyA5N2JEeGnO-TF_1T_iQ" direction="return">
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_re294BFJEeKT3tsL4v_Daw"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rfAu4BFJEeKT3tsL4v_Daw" value="*"/>
              </ownedParameter>
              <language>Java</language>
              <body>		// Get all links (available at the locus of this object) where the given interaction point is used as a feature value&#xD;
		// (i.e. the interaction is an end such links)&#xD;
		ExtensionalValueList extensionalValues = this.locus.extensionalValues ;&#xD;
		Integer i = 1 ;&#xD;
		CS_LinkList connectorInstances = new CS_LinkList() ;&#xD;
		while (i &lt;= extensionalValues.size()) {&#xD;
			ExtensionalValue value = extensionalValues.getValue(i-1) ;&#xD;
			if (value instanceof CS_Link) {&#xD;
				CS_Link link = (CS_Link)value ;&#xD;
				if (this.getLinkKind(link, interactionPoint) != CS_LinkKind.None) {&#xD;
					connectorInstances.addValue(link) ;&#xD;
				}&#xD;
			}&#xD;
			i = i + 1 ;&#xD;
		}&#xD;
		return connectorInstances ;</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_KCL9UBFKEeKT3tsL4v_Daw" name="hasValueForAFeature" specification="_8Nv9EBFJEeKT3tsL4v_Daw">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_OXg-0BFKEeKT3tsL4v_Daw" name="value">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Classes-Kernel-Value"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_PLgnkBFKEeKT3tsL4v_Daw" name="result" direction="return">
                <type xmi:type="uml:PrimitiveType" href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
              </ownedParameter>
              <language>Java</language>
              <body>		// Returns true if the given value object is used as a value for a feature value of this object&#xD;
		FeatureValueList allFeatureValues = this.getFeatureValues() ;&#xD;
		Integer i = 1 ;&#xD;
		boolean isAValue = false ;&#xD;
		while (i &lt;= allFeatureValues.size() &amp;&amp; !isAValue) {&#xD;
			FeatureValue featureValue = allFeatureValues.getValue(i-1);&#xD;
			if (!featureValue.values.isEmpty()) {&#xD;
				ValueList valuesForCurrentFeature = featureValue.values ;&#xD;
				Integer j = 1 ;&#xD;
				while (j &lt;= valuesForCurrentFeature.size() &amp;&amp; !isAValue) {&#xD;
					isAValue = featureValue.values.getValue(j-1).equals(value) ;&#xD;
					j = j + 1 ;&#xD;
				}&#xD;
			}&#xD;
			i = i + 1 ;&#xD;
		}&#xD;
		return isAValue ;</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_wZcMEBFKEeKT3tsL4v_Daw" name="sendOut" specification="_dhRzQBFKEeKT3tsL4v_Daw">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_zSA7sBFKEeKT3tsL4v_Daw" name="signalInstance">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-CommonBehaviors-Communications-SignalInstance"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_0m8uUBFKEeKT3tsL4v_Daw" name="onPort" type="_LdpeD9zBEeGru4CffneBug"/>
              <language>Java</language>
              <body>		// Select a CS_InteractionPoint value playing onPort,&#xD;
		// and send the signal instance to this interaction point&#xD;
		FeatureValue featureValue = this.getFeatureValue(onPort) ;&#xD;
		ValueList values = featureValue.values ;&#xD;
		ReferenceList potentialTargets = new ReferenceList() ;&#xD;
		for (int i = 0 ; i &lt; values.size() ; i++) {&#xD;
			potentialTargets.addValue((Reference)values.getValue(i)) ;&#xD;
		}&#xD;
		CS_RequestPropagationStrategy strategy = &#xD;
				(CS_RequestPropagationStrategy)this.locus.factory.getStrategy(&quot;requestPropagation&quot;) ;&#xD;
		ReferenceList targets = strategy.select(potentialTargets, new SendSignalActionActivation()) ;&#xD;
		for (int i = 0 ; i &lt; targets.size() ; i++) {&#xD;
			CS_InteractionPoint target = (CS_InteractionPoint)targets.getValue(i) ;&#xD;
			this.sendOut(signalInstance, target) ;&#xD;
		}</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_TnAGABFLEeKT3tsL4v_Daw" name="dispatchOut" specification="_CjED4BFLEeKT3tsL4v_Daw">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_YkjlIBFLEeKT3tsL4v_Daw" name="operation">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-Operation"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_ZaJJUBFLEeKT3tsL4v_Daw" name="onPort" type="_LdpeD9zBEeGru4CffneBug"/>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_aOSjEBFLEeKT3tsL4v_Daw" name="result" direction="return">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-CommonBehaviors-BasicBehaviors-Execution"/>
              </ownedParameter>
              <language>Java</language>
              <body>		// Select a CS_InteractionPoint value playing onPort,&#xD;
		// and dispatches the operation to this interaction point&#xD;
		Execution execution = null ;&#xD;
		FeatureValue featureValue = this.getFeatureValue(onPort) ;&#xD;
		ValueList values = featureValue.values ;&#xD;
		ReferenceList potentialTargets = new ReferenceList() ;&#xD;
		for (int i = 0 ; i &lt; values.size() ; i++) {&#xD;
			potentialTargets.addValue((Reference)values.getValue(i)) ;&#xD;
		}&#xD;
		CS_RequestPropagationStrategy strategy = &#xD;
				(CS_RequestPropagationStrategy)this.locus.factory.getStrategy(&quot;requestPropagation&quot;) ;&#xD;
		ReferenceList targets = strategy.select(potentialTargets, new CallOperationActionActivation()) ;&#xD;
		// if targets is empty, no dispatch target has been found,&#xD;
		// and the operation call is lost&#xD;
		if (targets.size() >= 1) {&#xD;
			CS_InteractionPoint target = (CS_InteractionPoint)targets.getValue(0) ;&#xD;
			execution = this.dispatchOut(operation, target) ;&#xD;
		}&#xD;
		return execution ;</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_53wrMBFLEeKT3tsL4v_Daw" name="dispatchIn" specification="_qLip8BFLEeKT3tsL4v_Daw">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="__GtcUBFLEeKT3tsL4v_Daw" name="operation">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-Operation"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="__-NFABFLEeKT3tsL4v_Daw" name="onPort" type="_LdpeD9zBEeGru4CffneBug"/>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_AxXnUBFMEeKT3tsL4v_Daw" name="result" direction="return">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-CommonBehaviors-BasicBehaviors-Execution"/>
              </ownedParameter>
              <language>Java</language>
              <body>		// delegates dispatching to composite referent&#xD;
		// Select a CS_InteractionPoint value playing onPort,&#xD;
		// and dispatches the operation call to this interaction point&#xD;
		FeatureValue featureValue = this.getFeatureValue(onPort) ;&#xD;
		ValueList values = featureValue.values ;&#xD;
		Integer choice = ((ChoiceStrategy) this.locus.factory&#xD;
				.getStrategy(&quot;choice&quot;))&#xD;
				.choose(featureValue.values.size()) - 1;&#xD;
		CS_InteractionPoint interactionPoint = (CS_InteractionPoint)values.getValue(choice) ;&#xD;
		return interactionPoint.dispatch(operation) ;&#xD;
</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_rKZCYBFMEeKT3tsL4v_Daw" name="sendIn" specification="_cXq08BFMEeKT3tsL4v_Daw">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_yKqnMBFMEeKT3tsL4v_Daw" name="signalInstance">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-CommonBehaviors-Communications-SignalInstance"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_z4RYgBFMEeKT3tsL4v_Daw" name="onPort" type="_LdpeD9zBEeGru4CffneBug"/>
              <language>Java</language>
              <body>		// Select a Reference value playing onPort,&#xD;
		// and send the signal instance to this interaction point&#xD;
		FeatureValue featureValue = this.getFeatureValue(onPort) ;&#xD;
		ValueList values = featureValue.values ;&#xD;
		ReferenceList potentialTargets = new ReferenceList() ;&#xD;
		for (int i = 0 ; i &lt; values.size() ; i++) {&#xD;
			potentialTargets.addValue((Reference)values.getValue(i)) ;&#xD;
		}&#xD;
		CS_RequestPropagationStrategy strategy = &#xD;
				(CS_RequestPropagationStrategy)this.locus.factory.getStrategy(&quot;requestPropagation&quot;) ;&#xD;
		ReferenceList targets = strategy.select(potentialTargets, new SendSignalActionActivation()) ;&#xD;
		for (int i = 0 ; i &lt; targets.size() ; i++) {&#xD;
			Reference target = targets.getValue(i) ;&#xD;
			target.send(signalInstance) ;&#xD;
		}</body>
            </ownedBehavior>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_wUxaFd2JEeGnO-TF_1T_iQ" name="dispatchIn" visibility="public" method="_wUwzV92JEeGnO-TF_1T_iQ" class="_wUwzPd2JEeGnO-TF_1T_iQ">
              <ownedComment xmi:type="uml:Comment" xmi:id="_wUxaFt2JEeGnO-TF_1T_iQ">
                <body>&lt;&lt;TextualRepresentation>>public dispatchIn (in operation : Operation, &#xD;
                                              in interactionPoint : InteractionPoint) : Execution {&#xD;
	// If the interaction is a behavior port, does nothing [for the moment... ?], &#xD;
	// since the only kind of event supported in fUML is SignalEvent&#xD;
	// If this is not a behavior port, select appropriate delegation links &#xD;
	// from interactionPoint, and propagates the operation call through &#xD;
	// these links&#xD;
	Execution execution = null ;&#xD;
	if (interactionPoint.definingPort.isBehavior) {&#xD;
		// Do nothing&#xD;
	}&#xD;
	else {&#xD;
		ReferenceList targets = &#xD;
			this.selectTargetsForDispatching(operation, interactionPoint) ;&#xD;
		// If targets is empty, no delegation target have been found, &#xD;
		// and the operation call will be lost&#xD;
		if (! (targets.size()==0)) {&#xD;
			// Choose one target non-deterministically&#xD;
			Integer index = &#xD;
						((ChoiceStrategy)this.locus.factory.getStrategy(&quot;choice&quot;))&#xD;
						.choose(targets.size()) ;&#xD;
			Reference target = targets.getValue(index - 1) ;&#xD;
			execution = target.dispatch(operation) ;&#xD;
		}&#xD;
	}&#xD;
	return execution ;&#xD;
}</body>
              </ownedComment>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_wUxaF92JEeGnO-TF_1T_iQ" name="operation">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-Operation"/>
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUxaGN2JEeGnO-TF_1T_iQ" value="1"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUxaGd2JEeGnO-TF_1T_iQ" value="1"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_wUxaGt2JEeGnO-TF_1T_iQ" name="interactionPoint" type="_wUvk8d2JEeGnO-TF_1T_iQ">
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUxaG92JEeGnO-TF_1T_iQ" value="1"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUxaHN2JEeGnO-TF_1T_iQ" value="1"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_wUxaHd2JEeGnO-TF_1T_iQ" name="result" direction="return">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-CommonBehaviors-BasicBehaviors-Execution"/>
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUxaHt2JEeGnO-TF_1T_iQ" value="1"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUxaH92JEeGnO-TF_1T_iQ" value="1"/>
              </ownedParameter>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_wUxaIN2JEeGnO-TF_1T_iQ" name="sendIn" visibility="public" method="_wUxZ1d2JEeGnO-TF_1T_iQ" class="_wUwzPd2JEeGnO-TF_1T_iQ">
              <ownedComment xmi:type="uml:Comment" xmi:id="_wUxaId2JEeGnO-TF_1T_iQ">
                <body>&lt;&lt;TextualRepresentation>>public sendIn (in signalInstance : SignalInstance,&#xD;
                                       in interactionPoint : InteractionPoint) {&#xD;
	// If the interaction is a behavior port, &#xD;
	// creates a SignalInstanceWithPort from the signal instance, &#xD;
	// and sends it as usual using operation send&#xD;
	// If this is not a behavior port, &#xD;
	// select appropriate delegation targets from interactionPoint, &#xD;
	// and propagates the signal to these targets&#xD;
	if (interactionPoint.definingPort.isBehavior) {&#xD;
		SignalInstanceWithPort newSignalInstance = &#xD;
													new SignalInstanceWithPort() ;&#xD;
		SignalInstance copy = (SignalInstance)signalInstance.copy() ;&#xD;
		newSignalInstance.featureValues = copy.featureValues ;&#xD;
		newSignalInstance.type = copy.type ;&#xD;
		newSignalInstance.interactionPoint = interactionPoint ;&#xD;
		this.send(newSignalInstance) ;&#xD;
	}&#xD;
	else {&#xD;
		ReferenceList targets = &#xD;
					this.selectTargetsForSending(signalInstance, &#xD;
																		interactionPoint) ;&#xD;
		// If targets is empty, no delegation target have been found, &#xD;
		// and the signal is lost&#xD;
		Integer i = 1 ;&#xD;
		// Do the following concurrently&#xD;
		while (i &lt;= targets.size()) {&#xD;
			Reference target = targets.getValue(i-1) ;&#xD;
			target.send(signalInstance) ;&#xD;
			i = i + 1 ;&#xD;
		}&#xD;
	}&#xD;
}</body>
              </ownedComment>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_wUxaIt2JEeGnO-TF_1T_iQ" name="signalInstance">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-CommonBehaviors-Communications-SignalInstance"/>
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUxaI92JEeGnO-TF_1T_iQ" value="1"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUxaJN2JEeGnO-TF_1T_iQ" value="1"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_wUxaJd2JEeGnO-TF_1T_iQ" name="interactionPoint" type="_wUvk8d2JEeGnO-TF_1T_iQ">
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUxaJt2JEeGnO-TF_1T_iQ" value="1"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUxaJ92JEeGnO-TF_1T_iQ" value="1"/>
              </ownedParameter>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_wUxaKN2JEeGnO-TF_1T_iQ" name="selectTargetsForSending" visibility="public" method="_wUxZ3N2JEeGnO-TF_1T_iQ" class="_wUwzPd2JEeGnO-TF_1T_iQ">
              <ownedComment xmi:type="uml:Comment" xmi:id="_wUxaKd2JEeGnO-TF_1T_iQ">
                <body>&lt;&lt;TextualRepresentation>>public selectTargetsForSending (in signalInstance : SignalInstance, &#xD;
                                                         in interactionPoint : InteractionPoint) &#xD;
                                                         : Reference[*] {&#xD;
	// From the given signalInstance and interactionPoint, &#xD;
	// retrieves potential connectors through which request can be delegated&#xD;
	// These connectors are delegation connectors attached to &#xD;
	// Port interactionPoint.definingPort, and whose target provide a &#xD;
	// reception for Signal signalInstance.type&#xD;
	ConnectorList connectors = &#xD;
				this.selectConnectorsForSending(signalInstance.type, &#xD;
																			interactionPoint.definingPort) ;&#xD;
&#xD;
	// Select links owned by the context object for which the &#xD;
	// definingConnector is included in the list of matching connectors.&#xD;
	Integer i = 1 ;&#xD;
	ConnectorInstanceList connectorInstances = &#xD;
																	new ConnectorInstanceList() ;&#xD;
	while (i &lt;= connectors.size()) {&#xD;
		Integer j = 1 ;&#xD;
		Connector connector = connectors.getValue(i-1) ;&#xD;
		while (j &lt;= this.ownedConnectorInstances.size()) {&#xD;
			ConnectorInstance connectorInstance = &#xD;
												this.ownedConnectorInstances.getValue(j-1) ;&#xD;
			if (connectorInstance.definingConnector == connector) {&#xD;
				connectorInstances.addValue(connectorInstance) ;&#xD;
			}&#xD;
			j=j+1 ;&#xD;
		}&#xD;
		i = i+1 ;&#xD;
	}&#xD;
&#xD;
	// For each matching link, retrieves the end value opposite &#xD;
	// to interactionPoint.&#xD;
	// If this value is a reference (which means that it is possible to send it &#xD;
	// a signal), it is added in the list of potential targets.&#xD;
	ReferenceList targets = new ReferenceList() ;&#xD;
	i = 1 ;&#xD;
	while (i &lt;= connectorInstances.size()) {&#xD;
		ConnectorInstance link = connectorInstances.getValue(i-1) ;&#xD;
		Association association = link.type ;&#xD;
		Property oppositeEnd = association.memberEnd.getValue(0);&#xD;
		if (oppositeEnd == interactionPoint.definingPort) {&#xD;
	   		oppositeEnd = association.memberEnd.getValue(1);&#xD;
		}&#xD;
		Value value = link.getFeatureValue(oppositeEnd).values.getValue(0) ;&#xD;
		if (value instanceof Reference) {&#xD;
			targets.addValue((Reference)value) ;&#xD;
		}&#xD;
		i = i + 1;&#xD;
	}&#xD;
	&#xD;
	// if targets is empty, no matching targets have been found, &#xD;
	// and the signal instance will be lost&#xD;
	return targets ;&#xD;
}</body>
              </ownedComment>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_JM34MBFFEeKT3tsL4v_Daw" name="link" type="_wUyA5N2JEeGnO-TF_1T_iQ"/>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_wUxaLd2JEeGnO-TF_1T_iQ" name="interactionPoint" type="_wUvk8d2JEeGnO-TF_1T_iQ">
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUxaLt2JEeGnO-TF_1T_iQ" value="1"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUxaL92JEeGnO-TF_1T_iQ" value="1"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_8AdhQBFEEeKT3tsL4v_Daw" name="connectorKind" type="_zDsxj-CxEeGcc4S1CmuFHA"/>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_wUxaKt2JEeGnO-TF_1T_iQ" name="signal">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-CommonBehaviors-Communications-Signal"/>
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUxaK92JEeGnO-TF_1T_iQ" value="1"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUxaLN2JEeGnO-TF_1T_iQ" value="1"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_As5mYOdwEeGYZqnbU6eCYw" name="toInternal">
                <type xmi:type="uml:PrimitiveType" href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_wUxaMN2JEeGnO-TF_1T_iQ" name="result" direction="return">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Classes-Kernel-Reference"/>
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUxaMd2JEeGnO-TF_1T_iQ"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUxaMt2JEeGnO-TF_1T_iQ" value="*"/>
              </ownedParameter>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_wUxaPt2JEeGnO-TF_1T_iQ" name="selectTargetsForDispatching" visibility="public" method="_wUxZ8N2JEeGnO-TF_1T_iQ" class="_wUwzPd2JEeGnO-TF_1T_iQ">
              <ownedComment xmi:type="uml:Comment" xmi:id="_wUxaP92JEeGnO-TF_1T_iQ">
                <body>&lt;&lt;TextualRepresentation>>public selectTargetsForDispatching (in operation : Operation, &#xD;
                                                                in interactionPoint : InteractionPoint) &#xD;
                                                                : Reference [*] { &#xD;
	// From the given operation and interactionPoint, retrieves potential &#xD;
	// connectors through which request can be delegated&#xD;
	// These connectors are delegation connectors attached to Port &#xD;
	// interactionPoint.definingPort,&#xD;
	// and whose target provides or realize operation&#xD;
	ConnectorList connectors = &#xD;
			this.selectConnectorsForDispatching(operation, &#xD;
																			interactionPoint.definingPort) ;&#xD;
&#xD;
	// Select links owned by the context object for which the &#xD;
	// definingConnector is included in the list of matching connectors.&#xD;
	Integer i = 1 ;&#xD;
	ConnectorInstanceList connectorInstances = &#xD;
											new ConnectorInstanceList() ;&#xD;
	while (i &lt;= connectors.size()) {&#xD;
		Integer j = 1 ;&#xD;
		Connector connector = connectors.getValue(i-1) ;&#xD;
		while (j &lt;= this.ownedConnectorInstances.size()) {&#xD;
			ConnectorInstance connectorInstance = &#xD;
							this.ownedConnectorInstances.getValue(j-1) ;&#xD;
			if (connectorInstance.definingConnector == connector) {&#xD;
				connectorInstances.addValue(connectorInstance) ;&#xD;
			}&#xD;
			j=j+1 ;&#xD;
		}&#xD;
		i = i+1 ;&#xD;
	}&#xD;
	&#xD;
	// For each matching link, retrieves the end value opposite &#xD;
	// to interactionPoint.&#xD;
	// If this value is a reference (which means that it is possible to dispatch &#xD;
	// operation to it), it is added in the list of potential targets.&#xD;
	ReferenceList targets = new ReferenceList() ;&#xD;
	i = 1 ;&#xD;
	while (i &lt;= connectorInstances.size()) {&#xD;
		ConnectorInstance link = connectorInstances.getValue(i-1) ;&#xD;
		Association association = link.type ;&#xD;
		Property oppositeEnd = association.memberEnd.getValue(0);&#xD;
		if (oppositeEnd == interactionPoint.definingPort) {&#xD;
	   		oppositeEnd = association.memberEnd.getValue(1);&#xD;
		}&#xD;
		Value value = link.getFeatureValue(oppositeEnd).values.getValue(0) ;&#xD;
		if (value instanceof Reference) {&#xD;
			targets.addValue((Reference)value) ;&#xD;
		}&#xD;
		i = i + 1;&#xD;
	}&#xD;
	&#xD;
	// if targets is empty, no matching targets have been found, &#xD;
	// and the operation call will be lost&#xD;
	return targets ;&#xD;
}</body>
              </ownedComment>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_VooqwBFEEeKT3tsL4v_Daw" name="link" type="_wUyA5N2JEeGnO-TF_1T_iQ"/>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_wUxaQ92JEeGnO-TF_1T_iQ" name="interactionPoint" type="_wUvk8d2JEeGnO-TF_1T_iQ">
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUxaRN2JEeGnO-TF_1T_iQ" value="1"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUxaRd2JEeGnO-TF_1T_iQ" value="1"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_KpomkBFEEeKT3tsL4v_Daw" name="connectorKind" type="_zDsxj-CxEeGcc4S1CmuFHA"/>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_wUxaQN2JEeGnO-TF_1T_iQ" name="operation">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-Operation"/>
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUxaQd2JEeGnO-TF_1T_iQ" value="1"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUxaQt2JEeGnO-TF_1T_iQ" value="1"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_mu46UOdxEeGYZqnbU6eCYw" name="toInternal">
                <type xmi:type="uml:PrimitiveType" href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_wUxaRt2JEeGnO-TF_1T_iQ" name="result" direction="return">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Classes-Kernel-Reference"/>
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUxaR92JEeGnO-TF_1T_iQ"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUxaSN2JEeGnO-TF_1T_iQ" value="*"/>
              </ownedParameter>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_wUxaVN2JEeGnO-TF_1T_iQ" name="sendOut" visibility="public" method="_wUxZ-t2JEeGnO-TF_1T_iQ" class="_wUwzPd2JEeGnO-TF_1T_iQ">
              <ownedComment xmi:type="uml:Comment" xmi:id="_wUxaVd2JEeGnO-TF_1T_iQ">
                <body>&lt;&lt;TextualRepresentation>>public sendOut(in signalInstance : SignalInstance, in onPort : Port) {&#xD;
	// TODO:&#xD;
	// Propagate the signal instance through interaction points &#xD;
	// corresponding to onPorts, following appropriate links.&#xD;
	// This will result in calling send(signalInstance) on &#xD;
	// oppositeEnd found from the links&#xD;
}</body>
              </ownedComment>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_wUxaVt2JEeGnO-TF_1T_iQ" name="signalInstance">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-CommonBehaviors-Communications-SignalInstance"/>
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUxaV92JEeGnO-TF_1T_iQ" value="1"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUxaWN2JEeGnO-TF_1T_iQ" value="1"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_wUxaWd2JEeGnO-TF_1T_iQ" name="interactionPoint" type="_wUvk8d2JEeGnO-TF_1T_iQ">
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUxaWt2JEeGnO-TF_1T_iQ" value="1"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUxaW92JEeGnO-TF_1T_iQ" value="1"/>
              </ownedParameter>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_wUxaXN2JEeGnO-TF_1T_iQ" name="dispatchOut" visibility="public" method="_wUxaAd2JEeGnO-TF_1T_iQ" class="_wUwzPd2JEeGnO-TF_1T_iQ">
              <ownedComment xmi:type="uml:Comment" xmi:id="_wUxaXd2JEeGnO-TF_1T_iQ">
                <body>&lt;&lt;TextualRepresentation>>public dispatchOut (in operation : Operation, in onPort : Port) : Execution { &#xD;
	// TODO:&#xD;
	// Propagate the operation call through interaction points corresponding &#xD;
	// to onPorts, following appropriate links,&#xD;
	// This will result in calling dispatch(operation) on oppositeEnd found &#xD;
	// from the links&#xD;
&#xD;
	return null ;&#xD;
}</body>
              </ownedComment>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_wUxaXt2JEeGnO-TF_1T_iQ" name="operation">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-Operation"/>
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUxaX92JEeGnO-TF_1T_iQ" value="1"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUxaYN2JEeGnO-TF_1T_iQ" value="1"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_wUxaYd2JEeGnO-TF_1T_iQ" name="interactionPoint" type="_wUvk8d2JEeGnO-TF_1T_iQ">
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUxaYt2JEeGnO-TF_1T_iQ" value="1"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUxaY92JEeGnO-TF_1T_iQ" value="1"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_wUxaZN2JEeGnO-TF_1T_iQ" name="result" direction="return">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-CommonBehaviors-BasicBehaviors-Execution"/>
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUxaZd2JEeGnO-TF_1T_iQ" value="1"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUxaZt2JEeGnO-TF_1T_iQ" value="1"/>
              </ownedParameter>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_QimP8OVQEeGVLZOJyKihvQ" name="getFeatureValue" method="_mFIkUOVQEeGVLZOJyKihvQ" class="_wUwzPd2JEeGnO-TF_1T_iQ">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_ZfxmUOVQEeGVLZOJyKihvQ" name="feature">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-StructuralFeature"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_fV7hYOVQEeGVLZOJyKihvQ" name="result" direction="return">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Classes-Kernel-FeatureValue"/>
              </ownedParameter>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_b4W7YOVdEeGVLZOJyKihvQ" name="setFeatureValue" method="_9gg9wOVdEeGVLZOJyKihvQ" class="_wUwzPd2JEeGnO-TF_1T_iQ">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_l3jvcOVdEeGVLZOJyKihvQ" name="feature">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-StructuralFeature"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_pvSO8OVdEeGVLZOJyKihvQ" name="values">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Classes-Kernel-Value"/>
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_XiqmIOVgEeGVLZOJyKihvQ"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_XiuQgOVgEeGVLZOJyKihvQ" value="*"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_uNffoOVdEeGVLZOJyKihvQ" name="position">
                <type xmi:type="uml:PrimitiveType" href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Integer"/>
              </ownedParameter>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_9z3cYOdyEeGYZqnbU6eCYw" name="contains" method="_NNQoQOdzEeGYZqnbU6eCYw" class="_wUwzPd2JEeGnO-TF_1T_iQ">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_Fl_78OdzEeGYZqnbU6eCYw" name="object">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Classes-Kernel-Object"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_I525YOdzEeGYZqnbU6eCYw" name="result" direction="return">
                <type xmi:type="uml:PrimitiveType" href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
              </ownedParameter>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_u98UgOdzEeGYZqnbU6eCYw" name="directlyContains" method="_EA5J4Od0EeGYZqnbU6eCYw" class="_wUwzPd2JEeGnO-TF_1T_iQ">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_1TrHgOdzEeGYZqnbU6eCYw" name="object">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Classes-Kernel-Object"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_4cTFUOdzEeGYZqnbU6eCYw" name="result" direction="return">
                <type xmi:type="uml:PrimitiveType" href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
              </ownedParameter>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_uyYIQOd0EeGYZqnbU6eCYw" name="getDirectContainers" method="_-R5xUOd0EeGYZqnbU6eCYw" class="_wUwzPd2JEeGnO-TF_1T_iQ">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_2SLhsOd0EeGYZqnbU6eCYw" name="result" type="_wUwzPd2JEeGnO-TF_1T_iQ" direction="return">
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ojcHsOeeEeGYZqnbU6eCYw"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ojhAMOeeEeGYZqnbU6eCYw" value="*"/>
              </ownedParameter>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_daYsQOd1EeGYZqnbU6eCYw" name="isOperationProvided" method="_HdeTkOd2EeGYZqnbU6eCYw" class="_wUwzPd2JEeGnO-TF_1T_iQ">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_uV5LIOd1EeGYZqnbU6eCYw" name="reference">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Classes-Kernel-Reference"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_63S2MOd1EeGYZqnbU6eCYw" name="operation" type="_vBjwrtzDEeGru4CffneBug"/>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="__H694Od1EeGYZqnbU6eCYw" name="result" direction="return">
                <type xmi:type="uml:PrimitiveType" href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
              </ownedParameter>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_o8fyoOd3EeGYZqnbU6eCYw" name="isOperationRequired" method="_FD5iMOd4EeGYZqnbU6eCYw" class="_wUwzPd2JEeGnO-TF_1T_iQ">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_zQrYMOd3EeGYZqnbU6eCYw" name="reference">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Classes-Kernel-Reference"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_2bFesOd3EeGYZqnbU6eCYw" name="operation" type="_vBjwrtzDEeGru4CffneBug"/>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_6V35QOd3EeGYZqnbU6eCYw" name="result" direction="return">
                <type xmi:type="uml:PrimitiveType" href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
              </ownedParameter>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_ZTN-wBFHEeKT3tsL4v_Daw" name="getLinkKind" method="_tPbOgBFHEeKT3tsL4v_Daw" class="_wUwzPd2JEeGnO-TF_1T_iQ">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_e8R5ABFHEeKT3tsL4v_Daw" name="link" type="_wUyA5N2JEeGnO-TF_1T_iQ"/>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_hSjM0BFHEeKT3tsL4v_Daw" name="interactionPoint" type="_wUvk8d2JEeGnO-TF_1T_iQ"/>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_kPzBEBFHEeKT3tsL4v_Daw" name="result" type="_RgFd0BFAEeKT3tsL4v_Daw" direction="return"/>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_LTsd8BFJEeKT3tsL4v_Daw" name="getLinks" method="_ex90gBFJEeKT3tsL4v_Daw" class="_wUwzPd2JEeGnO-TF_1T_iQ">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_Pt5YYBFJEeKT3tsL4v_Daw" name="interactionPoint" type="_wUvk8d2JEeGnO-TF_1T_iQ"/>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_So2toBFJEeKT3tsL4v_Daw" name="result" type="_wUyA5N2JEeGnO-TF_1T_iQ" direction="return">
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_TpY9kBFJEeKT3tsL4v_Daw"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_TpfEMBFJEeKT3tsL4v_Daw" value="*"/>
              </ownedParameter>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_8Nv9EBFJEeKT3tsL4v_Daw" name="hasValueForAFeature" method="_KCL9UBFKEeKT3tsL4v_Daw" class="_wUwzPd2JEeGnO-TF_1T_iQ">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_CLdRoBFKEeKT3tsL4v_Daw" name="value">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Classes-Kernel-Value"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_ELcMYBFKEeKT3tsL4v_Daw" name="result" direction="return">
                <type xmi:type="uml:PrimitiveType" href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
              </ownedParameter>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_dhRzQBFKEeKT3tsL4v_Daw" name="sendOut" method="_wZcMEBFKEeKT3tsL4v_Daw" class="_wUwzPd2JEeGnO-TF_1T_iQ">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_jjnJIBFKEeKT3tsL4v_Daw" name="signalInstance">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-CommonBehaviors-Communications-SignalInstance"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_pa_zQBFKEeKT3tsL4v_Daw" name="onPort" type="_LdpeD9zBEeGru4CffneBug"/>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_CjED4BFLEeKT3tsL4v_Daw" name="dispatchOut" method="_TnAGABFLEeKT3tsL4v_Daw" class="_wUwzPd2JEeGnO-TF_1T_iQ">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_ITFhwBFLEeKT3tsL4v_Daw" name="operation">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-Operation"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_L179cBFLEeKT3tsL4v_Daw" name="onPort" type="_LdpeD9zBEeGru4CffneBug"/>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_PY01YBFLEeKT3tsL4v_Daw" name="result" direction="return">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-CommonBehaviors-BasicBehaviors-Execution"/>
              </ownedParameter>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_qLip8BFLEeKT3tsL4v_Daw" name="dispatchIn" method="_53wrMBFLEeKT3tsL4v_Daw" class="_wUwzPd2JEeGnO-TF_1T_iQ">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_vQX1wBFLEeKT3tsL4v_Daw" name="operation">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-Operation"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_xnuusBFLEeKT3tsL4v_Daw" name="onPort" type="_LdpeD9zBEeGru4CffneBug"/>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_0v1IEBFLEeKT3tsL4v_Daw" name="result" direction="return">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-CommonBehaviors-BasicBehaviors-Execution"/>
              </ownedParameter>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_cXq08BFMEeKT3tsL4v_Daw" name="sendIn" method="_rKZCYBFMEeKT3tsL4v_Daw" class="_wUwzPd2JEeGnO-TF_1T_iQ">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_j2tZYBFMEeKT3tsL4v_Daw" name="signalInstance">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-CommonBehaviors-Communications-SignalInstance"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_nUOpIBFMEeKT3tsL4v_Daw" name="onPort" type="_LdpeD9zBEeGru4CffneBug"/>
            </ownedOperation>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="_wUwMMt2JEeGnO-TF_1T_iQ" name="CS_Reference">
            <ownedComment xmi:type="uml:Comment" xmi:id="_wUwMM92JEeGnO-TF_1T_iQ">
              <body>This class extends fuml Reference with specific operations for managing request propagation through ports, from the environment to the internals of the referent object, or from the referent objet to its environment. (NOTE: Addresses requirement R1 &quot;The target value of an invocation action may also be a port. In this case, the invocation request is sent to the object owning this port as identified by the port identity, and is, upon arrival, handled as described in &quot;Port&quot; clause&quot;, and R2 &quot;Invocation actions may also be sent to a target via a given port, either on the sending object or on another object.&quot;)</body>
            </ownedComment>
            <ownedComment xmi:type="uml:Comment" xmi:id="_VWe1kOH2EeG4NZyomhkW-A">
              <body>// Imports&#xD;
import CompositeStructuresSyntaxAndSemantics.Syntax.Classes.Interfaces.Operation;&#xD;
import CompositeStructuresSyntaxAndSemantics.Syntax.CompositeStructures.Ports.Port;&#xD;
import fUML.Semantics.Classes.Kernel.Reference;&#xD;
import fUML.Semantics.CommonBehaviors.BasicBehaviors.Execution;&#xD;
import fUML.Semantics.CommonBehaviors.Communications.SignalInstance;&#xD;
</body>
            </ownedComment>
            <generalization xmi:type="uml:Generalization" xmi:id="_wUwyw92JEeGnO-TF_1T_iQ" specific="_wUwMMt2JEeGnO-TF_1T_iQ">
              <general xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Classes-Kernel-Reference"/>
            </generalization>
            <ownedAttribute xmi:type="uml:Property" xmi:id="_wUwyxN2JEeGnO-TF_1T_iQ" name="compositeReferent" type="_wUwzPd2JEeGnO-TF_1T_iQ" isUnique="false" association="_wUyA4N2JEeGnO-TF_1T_iQ">
              <ownedComment xmi:type="uml:Comment" xmi:id="_wUwyxd2JEeGnO-TF_1T_iQ">
                <body>The composite object referenced by this ReferenceToCompositeStructure. This property subsets Reference::referent.</body>
              </ownedComment>
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUwyxt2JEeGnO-TF_1T_iQ" value="1"/>
              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUwyx92JEeGnO-TF_1T_iQ" value="1"/>
              <subsettedProperty xmi:type="uml:Property" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Classes-Kernel-Reference-referent"/>
            </ownedAttribute>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_wUwyyN2JEeGnO-TF_1T_iQ" name="dispatchIn" specification="_wUwy6t2JEeGnO-TF_1T_iQ">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_wUwyyd2JEeGnO-TF_1T_iQ" name="operation">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-Operation"/>
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUwyyt2JEeGnO-TF_1T_iQ" value="1"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUwyy92JEeGnO-TF_1T_iQ" value="1"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_wUwyzN2JEeGnO-TF_1T_iQ" name="interactionPoint" type="_wUvk8d2JEeGnO-TF_1T_iQ">
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUwyzd2JEeGnO-TF_1T_iQ" value="1"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUwyzt2JEeGnO-TF_1T_iQ" value="1"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_wUwyz92JEeGnO-TF_1T_iQ" name="result">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-CommonBehaviors-BasicBehaviors-Execution"/>
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUwy0N2JEeGnO-TF_1T_iQ" value="1"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUwy0d2JEeGnO-TF_1T_iQ" value="1"/>
              </ownedParameter>
              <language>Java</language>
              <body>		//Delegates dispatching to composite referent&#xD;
		return this.compositeReferent.dispatchIn(operation, interactionPoint) ;&#xD;
</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_wUwy0t2JEeGnO-TF_1T_iQ" name="sendIn" specification="_wUwy9d2JEeGnO-TF_1T_iQ">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_wUwy092JEeGnO-TF_1T_iQ" name="signalInstance">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-CommonBehaviors-Communications-SignalInstance"/>
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUwy1N2JEeGnO-TF_1T_iQ" value="1"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUwy1d2JEeGnO-TF_1T_iQ" value="1"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_wUwy1t2JEeGnO-TF_1T_iQ" name="interactionPoint" type="_wUvk8d2JEeGnO-TF_1T_iQ">
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUwy192JEeGnO-TF_1T_iQ" value="1"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUwy2N2JEeGnO-TF_1T_iQ" value="1"/>
              </ownedParameter>
              <language>Java</language>
              <body>		// delegates sending to composite referent&#xD;
		this.compositeReferent.sendIn(signalInstance, interactionPoint) ;</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_wUwy2d2JEeGnO-TF_1T_iQ" name="sendOut" specification="_wUwy_d2JEeGnO-TF_1T_iQ">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_wUwy2t2JEeGnO-TF_1T_iQ" name="signalInstance">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-CommonBehaviors-Communications-SignalInstance"/>
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUwy292JEeGnO-TF_1T_iQ" value="1"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUwy3N2JEeGnO-TF_1T_iQ" value="1"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_wUwy3d2JEeGnO-TF_1T_iQ" name="onPort" type="_LdpeD9zBEeGru4CffneBug">
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUwy3t2JEeGnO-TF_1T_iQ" value="1"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUwy392JEeGnO-TF_1T_iQ" value="1"/>
              </ownedParameter>
              <language>Java</language>
              <body>		// delegates sending to composite referent&#xD;
		this.compositeReferent.sendOut(signalInstance, onPort) ;</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_wUwy4N2JEeGnO-TF_1T_iQ" name="dispatchOut" specification="_wUwzBd2JEeGnO-TF_1T_iQ">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_wUwy4d2JEeGnO-TF_1T_iQ" name="operation">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-Operation"/>
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUwy4t2JEeGnO-TF_1T_iQ" value="1"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUwy492JEeGnO-TF_1T_iQ" value="1"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_wUwy5N2JEeGnO-TF_1T_iQ" name="onPort" type="_LdpeD9zBEeGru4CffneBug">
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUwy5d2JEeGnO-TF_1T_iQ" value="1"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUwy5t2JEeGnO-TF_1T_iQ" value="1"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_wUwy592JEeGnO-TF_1T_iQ" name="result">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-CommonBehaviors-BasicBehaviors-Execution"/>
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUwy6N2JEeGnO-TF_1T_iQ" value="1"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUwy6d2JEeGnO-TF_1T_iQ" value="1"/>
              </ownedParameter>
              <language>Java</language>
              <body>		// delegates dispatching to composite referent&#xD;
		return this.compositeReferent.dispatchOut(operation, onPort) ;</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_YUUl0Od_EeGYZqnbU6eCYw" name="dispatchIn" specification="_-q5UkOd-EeGYZqnbU6eCYw">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_g0TC0Od_EeGYZqnbU6eCYw" name="operation" type="_vBjwrtzDEeGru4CffneBug"/>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_irJ2wOd_EeGYZqnbU6eCYw" name="onPort" type="_LdpeD9zBEeGru4CffneBug"/>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_kW9RQOd_EeGYZqnbU6eCYw" name="result" direction="return">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-CommonBehaviors-BasicBehaviors-Execution"/>
              </ownedParameter>
              <language>Java</language>
              <body>		// delegates dispatching to composite referent&#xD;
		return this.compositeReferent.dispatchIn(operation, onPort) ;</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_f8HBIOeAEeGYZqnbU6eCYw" name="sendIn" specification="_LuBXMOeAEeGYZqnbU6eCYw">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_mQBPMOeAEeGYZqnbU6eCYw" name="signalInstance">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-CommonBehaviors-Communications-SignalInstance"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_n5cEEOeAEeGYZqnbU6eCYw" name="onPort" type="_LdpeD9zBEeGru4CffneBug"/>
              <language>Java</language>
              <body>		// delegates sending to composite referent&#xD;
		this.compositeReferent.sendIn(signalInstance, onPort) ;</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_aNfcAOeBEeGYZqnbU6eCYw" name="dispatchOut" specification="_EvUDMOeBEeGYZqnbU6eCYw">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_hLz5AOeBEeGYZqnbU6eCYw" name="operation" type="_vBjwrtzDEeGru4CffneBug"/>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_jDw5IOeBEeGYZqnbU6eCYw" name="interactionPoint" type="_wUvk8d2JEeGnO-TF_1T_iQ"/>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_k7fPwOeBEeGYZqnbU6eCYw" name="result" direction="return">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-CommonBehaviors-BasicBehaviors-Execution"/>
              </ownedParameter>
              <language>Java</language>
              <body>		// Delegates dispatching (through the interaction point, to the environment) &#xD;
		// to compositeReferent&#xD;
		return this.compositeReferent.dispatchOut(operation, interactionPoint) ;</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_W2oYcOeCEeGYZqnbU6eCYw" name="sendOut" specification="_HdRBwOeCEeGYZqnbU6eCYw">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_hHm5AOeCEeGYZqnbU6eCYw" name="signalInstance">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-CommonBehaviors-Communications-SignalInstance"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_i2fcsOeCEeGYZqnbU6eCYw" name="interactionPoint" type="_wUvk8d2JEeGnO-TF_1T_iQ"/>
              <language>Java</language>
              <body>		// Delegates sending (through the interaction point, to the environment) &#xD;
		// to compositeReferent&#xD;
		this.compositeReferent.sendOut(signalInstance, interactionPoint) ;</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_RkFU4La1EeSLjqGQRuQPyA" name="copy" specification="_9LFbcLa0EeSLjqGQRuQPyA">
            <language>JAVA</language>
            <body>// Create a new reference with the same referent and composite referent as this reference.&#xD;
CS_Reference newValue = new CS_Reference();&#xD;
newValue.referent = this.referent;&#xD;
newValue.compositeReferent = this.compositeReferent;&#xD;
return newValue;</body>
          </ownedBehavior>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_9LFbcLa0EeSLjqGQRuQPyA" name="copy" method="_RkFU4La1EeSLjqGQRuQPyA">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_DnfeMLa1EeSLjqGQRuQPyA" name="result" direction="return">
                <type xmi:type="uml:Class" href="10-03-17.uml#Semantics-Classes-Kernel-Value"/>
              </ownedParameter>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_wUwy6t2JEeGnO-TF_1T_iQ" name="dispatchIn" visibility="public" method="_wUwyyN2JEeGnO-TF_1T_iQ" class="_wUwMMt2JEeGnO-TF_1T_iQ">
              <ownedComment xmi:type="uml:Comment" xmi:id="_wUwy692JEeGnO-TF_1T_iQ">
                <body>&lt;&lt;TextualRepresentation>>public dispatchIn (in operation : Operation, &#xD;
                                              in interactionPoint : InteractionPoint) : Execution {&#xD;
	//Delegates dispatching to composite referent&#xD;
	return this.compositeReferent.dispatchIn(operation, &#xD;
                                                                                            interactionPoint) ;&#xD;
}</body>
              </ownedComment>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_wUwy7N2JEeGnO-TF_1T_iQ" name="operation">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-Operation"/>
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUwy7d2JEeGnO-TF_1T_iQ" value="1"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUwy7t2JEeGnO-TF_1T_iQ" value="1"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_wUwy792JEeGnO-TF_1T_iQ" name="interactionPoint" type="_wUvk8d2JEeGnO-TF_1T_iQ">
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUwy8N2JEeGnO-TF_1T_iQ" value="1"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUwy8d2JEeGnO-TF_1T_iQ" value="1"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_wUwy8t2JEeGnO-TF_1T_iQ" name="result" direction="return">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-CommonBehaviors-BasicBehaviors-Execution"/>
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUwy892JEeGnO-TF_1T_iQ" value="1"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUwy9N2JEeGnO-TF_1T_iQ" value="1"/>
              </ownedParameter>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_wUwy9d2JEeGnO-TF_1T_iQ" name="sendIn" visibility="public" method="_wUwy0t2JEeGnO-TF_1T_iQ" class="_wUwMMt2JEeGnO-TF_1T_iQ">
              <ownedComment xmi:type="uml:Comment" xmi:id="_wUwy9t2JEeGnO-TF_1T_iQ">
                <body>&lt;&lt;TextualRepresentation>>public sendIn (in signalInstance : SignalInstance, &#xD;
                                       in interactionPoint : InteractionPoint) {&#xD;
	// delegates sending to composite referent&#xD;
	this.compositeReferent.sendIn(signalInstance, interactionPoint) ;&#xD;
}</body>
              </ownedComment>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_wUwy992JEeGnO-TF_1T_iQ" name="signalInstance">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-CommonBehaviors-Communications-SignalInstance"/>
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUwy-N2JEeGnO-TF_1T_iQ" value="1"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUwy-d2JEeGnO-TF_1T_iQ" value="1"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_wUwy-t2JEeGnO-TF_1T_iQ" name="interactionPoint" type="_wUvk8d2JEeGnO-TF_1T_iQ">
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUwy-92JEeGnO-TF_1T_iQ" value="1"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUwy_N2JEeGnO-TF_1T_iQ" value="1"/>
              </ownedParameter>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_wUwy_d2JEeGnO-TF_1T_iQ" name="sendOut" visibility="public" method="_wUwy2d2JEeGnO-TF_1T_iQ" class="_wUwMMt2JEeGnO-TF_1T_iQ">
              <ownedComment xmi:type="uml:Comment" xmi:id="_wUwy_t2JEeGnO-TF_1T_iQ">
                <body>&lt;&lt;TextualRepresentation>>public sendOut(in signalInstance : SignalInstance, in onPort : Port) {&#xD;
	// Delegates sending (through the port, to the environment) &#xD;
	// to compositeReferent&#xD;
	this.compositeReferent.sendOut(signalInstance, onPort) ;&#xD;
}</body>
              </ownedComment>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_wUwy_92JEeGnO-TF_1T_iQ" name="signalInstance">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-CommonBehaviors-Communications-SignalInstance"/>
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUwzAN2JEeGnO-TF_1T_iQ" value="1"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUwzAd2JEeGnO-TF_1T_iQ" value="1"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_wUwzAt2JEeGnO-TF_1T_iQ" name="onPort" type="_LdpeD9zBEeGru4CffneBug">
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUwzA92JEeGnO-TF_1T_iQ" value="1"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUwzBN2JEeGnO-TF_1T_iQ" value="1"/>
              </ownedParameter>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_wUwzBd2JEeGnO-TF_1T_iQ" name="dispatchOut" visibility="public" method="_wUwy4N2JEeGnO-TF_1T_iQ" class="_wUwMMt2JEeGnO-TF_1T_iQ">
              <ownedComment xmi:type="uml:Comment" xmi:id="_wUwzBt2JEeGnO-TF_1T_iQ">
                <body>&lt;&lt;TextualRepresentation>>public dispatchOut (in operation : Operation, in onPort : Port) : Execution { &#xD;
	// Delegates dispatching (through the port, to the environment) &#xD;
	// to compositeReferent&#xD;
	return this.compositeReferent.dispatchOut(operation, onPort) ;&#xD;
}</body>
              </ownedComment>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_wUwzB92JEeGnO-TF_1T_iQ" name="operation">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-Operation"/>
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUwzCN2JEeGnO-TF_1T_iQ" value="1"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUwzCd2JEeGnO-TF_1T_iQ" value="1"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_wUwzCt2JEeGnO-TF_1T_iQ" name="onPort" type="_LdpeD9zBEeGru4CffneBug">
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUwzC92JEeGnO-TF_1T_iQ" value="1"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUwzDN2JEeGnO-TF_1T_iQ" value="1"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_wUwzDd2JEeGnO-TF_1T_iQ" name="result" direction="return">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-CommonBehaviors-BasicBehaviors-Execution"/>
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUwzDt2JEeGnO-TF_1T_iQ" value="1"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUwzD92JEeGnO-TF_1T_iQ" value="1"/>
              </ownedParameter>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_-q5UkOd-EeGYZqnbU6eCYw" name="dispatchIn" method="_YUUl0Od_EeGYZqnbU6eCYw" class="_wUwMMt2JEeGnO-TF_1T_iQ">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_EH_PYOd_EeGYZqnbU6eCYw" name="operation" type="_vBjwrtzDEeGru4CffneBug"/>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_I_5ZgOd_EeGYZqnbU6eCYw" name="onPort" type="_LdpeD9zBEeGru4CffneBug"/>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_POozsOd_EeGYZqnbU6eCYw" name="result" direction="return">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-CommonBehaviors-BasicBehaviors-Execution"/>
              </ownedParameter>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_LuBXMOeAEeGYZqnbU6eCYw" name="sendIn" method="_f8HBIOeAEeGYZqnbU6eCYw" class="_wUwMMt2JEeGnO-TF_1T_iQ">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_RDSywOeAEeGYZqnbU6eCYw" name="signalInstance">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-CommonBehaviors-Communications-SignalInstance"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_U3EmYOeAEeGYZqnbU6eCYw" name="onPort" type="_LdpeD9zBEeGru4CffneBug"/>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_EvUDMOeBEeGYZqnbU6eCYw" name="dispatchOut" method="_aNfcAOeBEeGYZqnbU6eCYw" class="_wUwMMt2JEeGnO-TF_1T_iQ">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_KUcfsOeBEeGYZqnbU6eCYw" name="operation" type="_vBjwrtzDEeGru4CffneBug"/>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_PAQukOeBEeGYZqnbU6eCYw" name="interactionPoint" type="_wUvk8d2JEeGnO-TF_1T_iQ"/>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_SygRIOeBEeGYZqnbU6eCYw" name="result" direction="return">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-CommonBehaviors-BasicBehaviors-Execution"/>
              </ownedParameter>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_HdRBwOeCEeGYZqnbU6eCYw" name="sendOut" method="_W2oYcOeCEeGYZqnbU6eCYw" class="_wUwMMt2JEeGnO-TF_1T_iQ">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_OD4JYOeCEeGYZqnbU6eCYw" name="signalInstance">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-CommonBehaviors-Communications-SignalInstance"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_UCdAoOeCEeGYZqnbU6eCYw" name="interactionPoint" type="_wUvk8d2JEeGnO-TF_1T_iQ"/>
            </ownedOperation>
          </packagedElement>
          <packagedElement xmi:type="uml:Enumeration" xmi:id="_RgFd0BFAEeKT3tsL4v_Daw" name="CS_LinkKind">
            <ownedComment xmi:type="uml:Comment" xmi:id="_n_m-4BFAEeKT3tsL4v_Daw">
              <body>This enumeration enables to characterize a CS_Link with respect to given CS_Object and CS_InteractionPoint. If the given interaction point belongs to the given object, and if the given interaction point is used as an end of the link, then the links targets the environment of the object (enumeration literal ToEnvironment) if all the feature values of the link (but one for the interaction point) refer to values which are not themselves values for features of the interaction point. If all the feature values of the link refer to values which are themselves values for features of the interaction point, the link targets the internals of the object (enumeration literal ToInternal). Otherwise, the link has no particular meaning in the context defined by the object and the interaction point (enumeration literal None).</body>
            </ownedComment>
            <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_UMcWYBFAEeKT3tsL4v_Daw" name="ToEnvironment" enumeration="_RgFd0BFAEeKT3tsL4v_Daw"/>
            <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_VYG4QBFAEeKT3tsL4v_Daw" name="ToInternal" enumeration="_RgFd0BFAEeKT3tsL4v_Daw"/>
            <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_XO-TQBFAEeKT3tsL4v_Daw" name="None" enumeration="_RgFd0BFAEeKT3tsL4v_Daw"/>
          </packagedElement>
        </packagedElement>
        <packagedElement xmi:type="uml:Package" xmi:id="_d7j0kN2OEeGnO-TF_1T_iQ" name="InvocationActions">
          <packagedElement xmi:type="uml:Class" xmi:id="_wUwzJd2JEeGnO-TF_1T_iQ" name="CS_AcceptEventActionActivation">
            <ownedComment xmi:type="uml:Comment" xmi:id="_wUwzJt2JEeGnO-TF_1T_iQ">
              <body>The behavior of fUML CallOperationActionActivation::match() is overriden, in order to account for the fact that a given signal instance may need to be matched with triggers where a list of ports is given. (NOTE: Addresses requirement R9 &quot;Specifying one or more ports for an event implies that the event triggers the execution of an associated behavior only if the event was received via one of the specified ports.&quot;)</body>
            </ownedComment>
            <ownedComment xmi:type="uml:Comment" xmi:id="_pX-DYOH1EeG4NZyomhkW-A">
              <body>// Imports&#xD;
import CompositeStructuresSyntaxAndSemantics.Syntax.CompositeStructures.InvocationActions.Trigger;&#xD;
import CompositeStructuresSyntaxAndSemantics.Syntax.CompositeStructures.Ports.Port;&#xD;
import CompositeStructuresSyntaxAndSemantics.Syntax.CompositeStructures.Ports.PortList;&#xD;
import fUML.Semantics.Actions.CompleteActions.AcceptEventActionActivation;&#xD;
import fUML.Semantics.CommonBehaviors.Communications.SignalInstance;&#xD;
import fUML.Syntax.Actions.CompleteActions.AcceptEventAction;&#xD;
import fUML.Syntax.CommonBehaviors.Communications.Signal;&#xD;
import fUML.Syntax.CommonBehaviors.Communications.SignalEvent;&#xD;
import fUML.Syntax.CommonBehaviors.Communications.TriggerList;&#xD;
</body>
            </ownedComment>
            <generalization xmi:type="uml:Generalization" xmi:id="_wUwzLd2JEeGnO-TF_1T_iQ" specific="_wUwzJd2JEeGnO-TF_1T_iQ">
              <general xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Actions-CompleteActions-AcceptEventActionActivation"/>
            </generalization>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_wUwzLt2JEeGnO-TF_1T_iQ" name="match" specification="_wUwzNd2JEeGnO-TF_1T_iQ">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_wUwzL92JEeGnO-TF_1T_iQ" name="signalInstance">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-CommonBehaviors-Communications-SignalInstance"/>
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUwzMN2JEeGnO-TF_1T_iQ" value="1"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUwzMd2JEeGnO-TF_1T_iQ" value="1"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_wUwzMt2JEeGnO-TF_1T_iQ" name="result">
                <type xmi:type="uml:PrimitiveType" href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUwzM92JEeGnO-TF_1T_iQ" value="1"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUwzNN2JEeGnO-TF_1T_iQ" value="1"/>
              </ownedParameter>
              <language>Java</language>
              <body>		// Return true if the given signal instance matches a trigger of the accept &#xD;
		// event action of this activation.&#xD;
		// Matching implies that the type of the signalInstance matches the Signal &#xD;
		// of one of the triggers.&#xD;
		// When the type matches with the Signal, and if the trigger specifies a &#xD;
		// list of ports,&#xD;
		// the signalInstance matches the trigger only if it occurred on a port &#xD;
		// identified in the list.&#xD;
&#xD;
		AcceptEventAction action = (AcceptEventAction)(this.node) ;&#xD;
		TriggerList triggers = action.trigger ;&#xD;
		Signal signal = signalInstance.type ;&#xD;
&#xD;
		Boolean matches = false;&#xD;
		Integer i = 1;&#xD;
		while (!matches &amp; i &lt;= triggers.size()) {&#xD;
			Trigger t = triggers.getValue(i-1) ;&#xD;
			matches = ((SignalEvent)t.event).signal == signal ;&#xD;
			if (matches &amp;&amp; t.port.size()>0 ) {&#xD;
				PortList portsOfTrigger = t.port ;&#xD;
				Port onPort =  &#xD;
						((CS_SignalInstance)signalInstance).interactionPoint.definingPort ;&#xD;
				Boolean portMatches = false ;&#xD;
				Integer j = 1 ;&#xD;
				while (! portMatches &amp; j &lt;= portsOfTrigger.size() ) {&#xD;
					portMatches = onPort == portsOfTrigger.getValue(j-1) ;&#xD;
					j = j + 1 ;&#xD;
				}&#xD;
				matches = portMatches ;&#xD;
			}&#xD;
			i = i + 1;&#xD;
		}&#xD;
&#xD;
		return matches;</body>
            </ownedBehavior>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_wUwzNd2JEeGnO-TF_1T_iQ" name="match" visibility="public" method="_wUwzLt2JEeGnO-TF_1T_iQ" class="_wUwzJd2JEeGnO-TF_1T_iQ">
              <ownedComment xmi:type="uml:Comment" xmi:id="_wUwzNt2JEeGnO-TF_1T_iQ">
                <body>&lt;&lt;TextualRepresentation>>public match (in signalInstance : SignalInstance) : Boolean {&#xD;
	// Return true if the given signal instance matches a trigger of the accept &#xD;
	// action of this activation.&#xD;
	// Matching implies that the type of the signalInstance matches the Signal &#xD;
	// of one of the triggers.&#xD;
	// When the type matches with the Signal, and if the trigger specifies a &#xD;
	// list of ports,&#xD;
	// the signalInstance matches the trigger only if it occured on a port &#xD;
	// identified in the list.&#xD;
&#xD;
	AcceptEventAction action = (AcceptEventAction)(this.node) ;&#xD;
	TriggerList triggers = action.trigger ;&#xD;
	Signal signal = signalInstance.type ;&#xD;
	&#xD;
	Boolean matches = false;&#xD;
	Integer i = 1;&#xD;
	while (!matches &amp; i &lt;= triggers.size()) {&#xD;
		Trigger t = triggers.getValue(i-1) ;&#xD;
		matches = ((SignalEvent)t.event).signal == signal ;&#xD;
		if (matches &amp;&amp; (t instanceof Composites::Syntax::Trigger)) {&#xD;
			if (! (signalInstance instanceof SignalInstanceWithPort)) {&#xD;
				matches = false ;&#xD;
			}&#xD;
			else {&#xD;
				PortList portsOfTrigger = ((Composites::Syntax::Trigger)t).port ;&#xD;
				Port onPort =  &#xD;
					((SignalInstanceWithPort)signalInstance).interactionPoint&#xD;
																							.definingPort ;&#xD;
				Boolean portMatches = false ;&#xD;
				Integer j = 1 ;&#xD;
				while (! portMatches &amp; j &lt;= portsOfTrigger.size() ) {&#xD;
					portMatches = onPort == portsOfTrigger.getValue(j-1) ;&#xD;
					j = j + 1 ;&#xD;
				}&#xD;
				matches = portMatches ;&#xD;
			}&#xD;
		}&#xD;
	    i = i + 1;&#xD;
	}&#xD;
	&#xD;
	return matches;&#xD;
}</body>
              </ownedComment>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_wUwzN92JEeGnO-TF_1T_iQ" name="signalInstance">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-CommonBehaviors-Communications-SignalInstance"/>
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUwzON2JEeGnO-TF_1T_iQ" value="1"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUwzOd2JEeGnO-TF_1T_iQ" value="1"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_wUwzOt2JEeGnO-TF_1T_iQ" name="result" direction="return">
                <type xmi:type="uml:PrimitiveType" href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUwzO92JEeGnO-TF_1T_iQ" value="1"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUwzPN2JEeGnO-TF_1T_iQ" value="1"/>
              </ownedParameter>
            </ownedOperation>
          </packagedElement>
          <packagedElement xmi:type="uml:Association" xmi:id="_wUwzId2JEeGnO-TF_1T_iQ" name="A_signalInstanceWithPort_interactionPoint" memberEnd="_wUwzIt2JEeGnO-TF_1T_iQ _wUwzFN2JEeGnO-TF_1T_iQ">
            <ownedEnd xmi:type="uml:Property" xmi:id="_wUwzIt2JEeGnO-TF_1T_iQ" name="signalInstanceWithPort" type="_wUwzEN2JEeGnO-TF_1T_iQ" owningAssociation="_wUwzId2JEeGnO-TF_1T_iQ" association="_wUwzId2JEeGnO-TF_1T_iQ">
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUwzI92JEeGnO-TF_1T_iQ" value="1"/>
              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUwzJN2JEeGnO-TF_1T_iQ" value="1"/>
            </ownedEnd>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="_wUwzEN2JEeGnO-TF_1T_iQ" name="CS_SignalInstance">
            <ownedComment xmi:type="uml:Comment" xmi:id="_wUwzEd2JEeGnO-TF_1T_iQ">
              <body>CS_SignalInstance extends fUML SignalInstance with the ability to reference the specific interaction point on which it occured. This is introduced to address the following requirements R9 (&quot;Specifying one or more ports for an event implies that the event triggers the execution of an associated behavior only if the event was received via one of the specified ports.&quot;).</body>
            </ownedComment>
            <ownedComment xmi:type="uml:Comment" xmi:id="__njrAOH1EeG4NZyomhkW-A">
              <body>// Imports&#xD;
import CompositeStructuresSyntaxAndSemantics.Semantics.CompositeStructures.StructuredClasses.CS_InteractionPoint;&#xD;
import fUML.Semantics.Classes.Kernel.Value;&#xD;
import fUML.Semantics.CommonBehaviors.Communications.SignalInstance;&#xD;
</body>
            </ownedComment>
            <generalization xmi:type="uml:Generalization" xmi:id="_wUwzE92JEeGnO-TF_1T_iQ" specific="_wUwzEN2JEeGnO-TF_1T_iQ">
              <general xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-CommonBehaviors-Communications-SignalInstance"/>
            </generalization>
            <ownedAttribute xmi:type="uml:Property" xmi:id="_wUwzFN2JEeGnO-TF_1T_iQ" name="interactionPoint" type="_wUvk8d2JEeGnO-TF_1T_iQ" association="_wUwzId2JEeGnO-TF_1T_iQ">
              <ownedComment xmi:type="uml:Comment" xmi:id="_wUwzFd2JEeGnO-TF_1T_iQ">
                <body>The InteractionPoint on which this signal instance occured.</body>
              </ownedComment>
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUwzFt2JEeGnO-TF_1T_iQ"/>
              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUwzF92JEeGnO-TF_1T_iQ" value="1"/>
            </ownedAttribute>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_wUwzGN2JEeGnO-TF_1T_iQ" name="copy" specification="_wUwzHN2JEeGnO-TF_1T_iQ">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_wUwzGd2JEeGnO-TF_1T_iQ" name="result">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Classes-Kernel-Value"/>
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUwzGt2JEeGnO-TF_1T_iQ" value="1"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUwzG92JEeGnO-TF_1T_iQ" value="1"/>
              </ownedParameter>
              <language>Java</language>
              <body>		// Create a new signal instance with the same type, interaction point and feature values as this signal instance.&#xD;
		CS_SignalInstance newValue = (CS_SignalInstance) (super.copy());&#xD;
		newValue.type = this.type  ;&#xD;
		newValue.interactionPoint = this.interactionPoint ;&#xD;
		return newValue;</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_tr3l0BE6EeKT3tsL4v_Daw" name="new_" specification="_JQJXABE3EeKT3tsL4v_Daw">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_wwhCkBE6EeKT3tsL4v_Daw" name="result" direction="return">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Classes-Kernel-Value"/>
              </ownedParameter>
              <language>Java</language>
              <body>		// Create a new signal instance with no type or feature values.&#xD;
		return new CS_SignalInstance();&#xD;
</body>
            </ownedBehavior>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_wUwzHN2JEeGnO-TF_1T_iQ" name="copy" visibility="public" method="_wUwzGN2JEeGnO-TF_1T_iQ" class="_wUwzEN2JEeGnO-TF_1T_iQ">
              <ownedComment xmi:type="uml:Comment" xmi:id="_wUwzHd2JEeGnO-TF_1T_iQ">
                <body>&lt;&lt;TextualRepresentation>>public copy () : Value {&#xD;
	// Create a new signal instance with the same type, interaction point and feature values as this signal instance.&#xD;
	SignalInstanceWithPort newValue = (SignalInstanceWithPort) super.copy();&#xD;
	newValue.type = this.type  ;&#xD;
	newValue.interactionPoint = this.interactionPoint ;&#xD;
	return newValue;&#xD;
}</body>
              </ownedComment>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_wUwzHt2JEeGnO-TF_1T_iQ" name="result" direction="return">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Classes-Kernel-Value"/>
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUwzH92JEeGnO-TF_1T_iQ" value="1"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUwzIN2JEeGnO-TF_1T_iQ" value="1"/>
              </ownedParameter>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_JQJXABE3EeKT3tsL4v_Daw" name="new_" method="_tr3l0BE6EeKT3tsL4v_Daw" class="_wUwzEN2JEeGnO-TF_1T_iQ">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_QLR9IBE3EeKT3tsL4v_Daw" name="result" direction="return">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Classes-Kernel-Value"/>
              </ownedParameter>
            </ownedOperation>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="_wUwMI92JEeGnO-TF_1T_iQ" name="CS_CallOperationActionActivation">
            <ownedComment xmi:type="uml:Comment" xmi:id="_wUwMJN2JEeGnO-TF_1T_iQ">
              <body>Extends fUML CallOperationActionActivation::getCallExecution() to capture  dispatching semantics of requests across ports. (Note: Adresses requirement R2 &quot;Invocation actions may also be sent to a target via a given port, either on the sending object or on another object.&quot;)</body>
            </ownedComment>
            <ownedComment xmi:type="uml:Comment" xmi:id="_0jKwgOH1EeG4NZyomhkW-A">
              <body>// Imports&#xD;
import CompositeStructuresSyntaxAndSemantics.Semantics.CompositeStructures.StructuredClasses.CS_Reference;&#xD;
import fUML.Semantics.Actions.BasicActions.CallOperationActionActivation;&#xD;
import fUML.Semantics.Classes.Kernel.Object_;&#xD;
import fUML.Semantics.Classes.Kernel.Value;&#xD;
import fUML.Semantics.CommonBehaviors.BasicBehaviors.Execution;&#xD;
import fUML.Syntax.Actions.BasicActions.CallOperationAction;</body>
            </ownedComment>
            <generalization xmi:type="uml:Generalization" xmi:id="_wUwMKN2JEeGnO-TF_1T_iQ" specific="_wUwMI92JEeGnO-TF_1T_iQ">
              <general xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Actions-BasicActions-CallOperationActionActivation"/>
            </generalization>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_wUwMKd2JEeGnO-TF_1T_iQ" name="getCallExecution" specification="_wUwMLd2JEeGnO-TF_1T_iQ">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_wUwMKt2JEeGnO-TF_1T_iQ" name="result">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-CommonBehaviors-BasicBehaviors-Execution"/>
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUwMK92JEeGnO-TF_1T_iQ" value="1"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUwMLN2JEeGnO-TF_1T_iQ" value="1"/>
              </ownedParameter>
              <language>Java</language>
              <body>		// If onPort is not specified, behaves like in fUML&#xD;
		// If onPort is specified, and if the value on the target input pin is a &#xD;
		// reference, dispatch the operation &#xD;
		// to it and return the resulting execution object.&#xD;
		// As compared to fUML, instead of dispatching directly to target reference &#xD;
		// by calling operation dispatch:&#xD;
		// - If the invoked BehavioralFeature is on a provided Interface but not on any required Interface, &#xD;
		// then, when the InvocationAction is executed, the invocation is made into the object given on &#xD;
		// the target InputPin through the given Port&#xD;
		// - If the invoked BehavioralFeature is on a required Interface but not on any provided Interface, &#xD;
		// then, if the InvocationAction is being executed inside the object given on the target InputPin, &#xD;
		// the invocation is forwarded out of the target object through the given Port.&#xD;
		// - If the invoked BehavioralFeature is on both a provided and a required Interface, &#xD;
		// then, if the InvocationAction is being executed inside the object given on the target InputPin, &#xD;
		// the invocation is made out of the target object through the given Port. &#xD;
		// Otherwise the invocation is made into the target object through the given Port.&#xD;
&#xD;
		CallOperationAction action = (CallOperationAction)(this.node);&#xD;
		Execution execution = null ; &#xD;
		if (action.onPort == null ) {&#xD;
			execution = super.getCallExecution() ;&#xD;
		}&#xD;
		else {&#xD;
			Value target = this.takeTokens(action.target).get(0);&#xD;
			if (target instanceof CS_Reference) {&#xD;
				// Tries to determine if the operation call has to be&#xD;
				// dispatched to the environment or to the internals of&#xD;
				// target, through onPort&#xD;
				CS_Reference targetReference = (CS_Reference)target ;&#xD;
				Object_ executionContext = this.group.activityExecution.context ;&#xD;
				boolean operationIsOnProvidedInterface = this.isOperationProvided(action.onPort, action.operation) ;&#xD;
				boolean operationIsOnRequiredInterface = this.isOperationRequired(action.onPort, action.operation) ;&#xD;
				// Operation on a provided interface only&#xD;
				if (operationIsOnProvidedInterface &amp;&amp; !operationIsOnRequiredInterface) {&#xD;
					execution = targetReference.dispatchIn(action.operation, action.onPort);&#xD;
				}&#xD;
				// Operation is on a required interface only&#xD;
				else if (!operationIsOnProvidedInterface &amp;&amp; operationIsOnRequiredInterface){&#xD;
					// If not executing in the context of the target,&#xD;
					// Semantics are undefined.&#xD;
					// Otherwise, dispatch outside.&#xD;
					if (executionContext == targetReference.referent &#xD;
							|| targetReference.compositeReferent.contains(executionContext)) {&#xD;
						execution = targetReference.dispatchOut(action.operation, action.onPort);&#xD;
					}&#xD;
				}&#xD;
				// Operation is both on a provided and a required interface&#xD;
				else if (operationIsOnProvidedInterface &amp;&amp; operationIsOnRequiredInterface) {&#xD;
					if (executionContext == targetReference.referent &#xD;
							|| targetReference.compositeReferent.contains(executionContext)) {&#xD;
						execution = targetReference.dispatchOut(action.operation, action.onPort);&#xD;
					}&#xD;
					else {&#xD;
						execution = targetReference.dispatchIn(action.operation, action.onPort);&#xD;
					}&#xD;
				}&#xD;
			}&#xD;
		}&#xD;
		return execution;</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="__AmB4MFCEeKkJbQgitQ3JQ" name="doAction" specification="_21gPwMFCEeKkJbQgitQ3JQ">
              <language>Java</language>
              <body>		CallOperationAction action = (CallOperationAction)(this.node);&#xD;
		// First determines if this is a call to a constructor and if a default &#xD;
		// construction strategy needs to be applied.&#xD;
		// This is a call to a constructor if the called operation has &#xD;
		// stereotype &lt;&lt;Create>> applied. &#xD;
		// The default construction strategy is used if no method is associated with the &#xD;
		// &lt;&lt;Create>> operation.&#xD;
		// Otherwise, behaves like in fUML.&#xD;
		if (action.onPort == null &amp;&amp; this.isCreate(action.operation) &amp;&amp; action.operation.method.size() == 0) {&#xD;
			Locus locus = this.getExecutionLocus() ;&#xD;
			CS_ConstructStrategy strategy = ((CS_ConstructStrategy)locus.factory.getStrategy(&quot;constructStrategy&quot;)) ;&#xD;
			Value target = this.takeTokens(action.target).get(0);&#xD;
			if (target instanceof CS_Reference) {&#xD;
				strategy.construct(action.operation, ((CS_Reference)target).compositeReferent) ;&#xD;
				ParameterList parameters = action.operation.ownedParameter ;&#xD;
				OutputPinList resultPins = action.result ;&#xD;
				ValueList values = new ValueList() ;&#xD;
				values.add(target) ;&#xD;
				int i = 1 ;&#xD;
				while(i &lt;= parameters.size()) {&#xD;
					Parameter parameter = parameters.get(i - 1);&#xD;
					if(parameter.direction == ParameterDirectionKind.return_) {&#xD;
						OutputPin resultPin = resultPins.get(0);&#xD;
						this.putTokens(resultPin, values);&#xD;
					}&#xD;
					i = i + 1;&#xD;
				}&#xD;
			}&#xD;
		}&#xD;
		else {&#xD;
			super.doAction();&#xD;
		}</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_vWpcEMFDEeKkJbQgitQ3JQ" name="isOperationProvided" specification="_HZXqsMFDEeKkJbQgitQ3JQ">
              <language>Java</language>
              <body>		boolean isProvided = false ;&#xD;
		if (operation.owner instanceof Interface) {&#xD;
			// We have to look in provided interfaces of the port if &#xD;
			// they define directly or indirectly the Operation&#xD;
			Integer interfaceIndex = 1 ;&#xD;
			// Iterates on provided interfaces of the port&#xD;
			InterfaceList providedInterfaces = port.provided ;&#xD;
			while (interfaceIndex &lt;= providedInterfaces.size() &amp;&amp; !isProvided) {&#xD;
				Interface interface_ = providedInterfaces.get(interfaceIndex-1) ;&#xD;
				// Iterates on members of the current Interface&#xD;
				Integer memberIndex = 1 ;&#xD;
				while (memberIndex &lt;= interface_.member.size() &amp;&amp; !isProvided) {&#xD;
					NamedElement cddOperation = interface_.member.get(memberIndex-1) ;&#xD;
					if (cddOperation instanceof Operation) {&#xD;
						isProvided = operation == cddOperation ;&#xD;
					}&#xD;
					memberIndex = memberIndex + 1 ;&#xD;
				}&#xD;
				interfaceIndex = interfaceIndex + 1 ;&#xD;
			}&#xD;
		}&#xD;
		return isProvided ;</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_0nUEcMFDEeKkJbQgitQ3JQ" name="isOperationRequired" specification="_HlRYsMFDEeKkJbQgitQ3JQ">
              <language>Java</language>
              <body>		boolean isRequired = false ;&#xD;
		Integer interfaceIndex = 1 ;&#xD;
		// Iterates on provided interfaces of the port&#xD;
		InterfaceList requiredInterfaces = port.required ;&#xD;
		while (interfaceIndex &lt;= requiredInterfaces.size() &amp;&amp; !isRequired) {&#xD;
			Interface interface_ = requiredInterfaces.get(interfaceIndex-1) ;&#xD;
			// Iterates on members of the current Interface&#xD;
			Integer memberIndex = 1 ;&#xD;
			while (memberIndex &lt;= interface_.member.size() &amp;&amp; !isRequired) {&#xD;
				NamedElement cddOperation = interface_.member.get(memberIndex-1) ;&#xD;
				if (cddOperation instanceof Operation) {&#xD;
					isRequired = operation == cddOperation ;&#xD;
				}&#xD;
				memberIndex = memberIndex + 1 ;&#xD;
			}&#xD;
			interfaceIndex = interfaceIndex + 1 ;&#xD;
		}&#xD;
		return isRequired ;</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_3_x1EMFDEeKkJbQgitQ3JQ" name="isCreate" specification="_Hw3ksMFDEeKkJbQgitQ3JQ">
              <language>Java</language>
              <body>		CS_ExecutionFactory executionFactory = (CS_ExecutionFactory)this.getExecutionLocus().factory ;&#xD;
		Class_ stereotypeCreate = executionFactory.getStereotypeClass(&quot;StandardProfile&quot;, &quot;Create&quot;) ;&#xD;
		if (stereotypeCreate == null) {&#xD;
			// standard profile is not applied&#xD;
			return false ;&#xD;
		}&#xD;
		return executionFactory.getStereotypeApplication(stereotypeCreate, o) != null ;</body>
            </ownedBehavior>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_wUwMLd2JEeGnO-TF_1T_iQ" name="getCallExecution" visibility="public" method="_wUwMKd2JEeGnO-TF_1T_iQ" class="_wUwMI92JEeGnO-TF_1T_iQ">
              <ownedComment xmi:type="uml:Comment" xmi:id="_wUwMLt2JEeGnO-TF_1T_iQ">
                <body>&lt;&lt;TextualRepresentation>>public getCallExecution() : Execution { &#xD;
	// If onPort is not specified, behaves like in fUML&#xD;
	// If onPort is specified, and if the value on the target input pin is a &#xD;
	// reference, dispatch the operation &#xD;
	// to it and return the resulting execution object.&#xD;
	// As compared to fUML, instead of dispatching directly to target reference &#xD;
	// by calling operation dispatch,&#xD;
    // dispatchOut is called, so that the operation call will be finally &#xD;
	// dispatched to the environment (from where the execution will be taken).&#xD;
	&#xD;
	CallOperationAction action = (CallOperationAction)(this.node);&#xD;
	Execution execution = null ; &#xD;
	if (action.onPort == null ) {&#xD;
		execution = super.getCallExecution() ;&#xD;
	}&#xD;
	else {&#xD;
		Value target = this.takeTokens(action.target).getValue(0);&#xD;
		if (target instanceof ReferenceToCompositeStructure) {&#xD;
	    	execution = ((ReferenceToCompositeStructure)target)&#xD;
										.dispatchOut(action.operation, action.onPort);&#xD;
		}&#xD;
	}&#xD;
	return execution;&#xD;
&#xD;
}</body>
              </ownedComment>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_wUwML92JEeGnO-TF_1T_iQ" name="result" direction="return">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-CommonBehaviors-BasicBehaviors-Execution"/>
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUwMMN2JEeGnO-TF_1T_iQ" value="1"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUwMMd2JEeGnO-TF_1T_iQ" value="1"/>
              </ownedParameter>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_21gPwMFCEeKkJbQgitQ3JQ" name="doAction" method="__AmB4MFCEeKkJbQgitQ3JQ" class="_wUwMI92JEeGnO-TF_1T_iQ"/>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_HZXqsMFDEeKkJbQgitQ3JQ" name="isOperationProvided" method="_vWpcEMFDEeKkJbQgitQ3JQ" class="_wUwMI92JEeGnO-TF_1T_iQ">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_QEwGcMFDEeKkJbQgitQ3JQ" name="port" type="_LdpeD9zBEeGru4CffneBug"/>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_Tdzs8MFDEeKkJbQgitQ3JQ" name="operation" type="_vBjwrtzDEeGru4CffneBug"/>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_WElh8MFDEeKkJbQgitQ3JQ" name="result" direction="return">
                <type xmi:type="uml:PrimitiveType" href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
              </ownedParameter>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_HlRYsMFDEeKkJbQgitQ3JQ" name="isOperationRequired" method="_0nUEcMFDEeKkJbQgitQ3JQ" class="_wUwMI92JEeGnO-TF_1T_iQ">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_dmdX8cFDEeKkJbQgitQ3JQ" name="port" type="_LdpeD9zBEeGru4CffneBug"/>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_dmdX8sFDEeKkJbQgitQ3JQ" name="operation" type="_vBjwrtzDEeGru4CffneBug"/>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_dmdX8MFDEeKkJbQgitQ3JQ" name="result" direction="return">
                <type xmi:type="uml:PrimitiveType" href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
              </ownedParameter>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_Hw3ksMFDEeKkJbQgitQ3JQ" name="isCreate" method="_3_x1EMFDEeKkJbQgitQ3JQ" class="_wUwMI92JEeGnO-TF_1T_iQ">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_eZySUcFDEeKkJbQgitQ3JQ" name="operation" type="_vBjwrtzDEeGru4CffneBug"/>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_eZySUsFDEeKkJbQgitQ3JQ" name="result" direction="return">
                <type xmi:type="uml:PrimitiveType" href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
              </ownedParameter>
            </ownedOperation>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="_wUwMFt2JEeGnO-TF_1T_iQ" name="CS_SendSignalActionActivation">
            <ownedComment xmi:type="uml:Comment" xmi:id="_wUwMF92JEeGnO-TF_1T_iQ">
              <body>Extends semantics of fUML SendSignalActionActivation::doAction() to capture propagation of signals across ports. (Note: Addresses requirement R2 &quot;Invocation actions may also be sent to a target via a given port, either on the sending object or on another object.&quot;)</body>
            </ownedComment>
            <ownedComment xmi:type="uml:Comment" xmi:id="_5bWAYOH1EeG4NZyomhkW-A">
              <body>// Imports&#xD;
import CompositeStructuresSyntaxAndSemantics.Semantics.CompositeStructures.StructuredClasses.CS_Reference;&#xD;
import CompositeStructuresSyntaxAndSemantics.Syntax.CompositeStructures.InternalStructures.Property;&#xD;
import CompositeStructuresSyntaxAndSemantics.Syntax.CompositeStructures.InternalStructures.PropertyList;&#xD;
import fUML.Semantics.Actions.BasicActions.SendSignalActionActivation;&#xD;
import fUML.Semantics.Classes.Kernel.Object_;&#xD;
import fUML.Semantics.Classes.Kernel.Reference;&#xD;
import fUML.Semantics.Classes.Kernel.Value;&#xD;
import fUML.Semantics.Classes.Kernel.ValueList;&#xD;
import fUML.Syntax.Actions.BasicActions.InputPin;&#xD;
import fUML.Syntax.Actions.BasicActions.InputPinList;&#xD;
import fUML.Syntax.Actions.BasicActions.SendSignalAction;&#xD;
import fUML.Syntax.CommonBehaviors.Communications.Signal;&#xD;
</body>
            </ownedComment>
            <generalization xmi:type="uml:Generalization" xmi:id="_wUwMH92JEeGnO-TF_1T_iQ" specific="_wUwMFt2JEeGnO-TF_1T_iQ">
              <general xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Actions-BasicActions-SendSignalActionActivation"/>
            </generalization>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_wUwMIN2JEeGnO-TF_1T_iQ" name="doAction" specification="_wUwMId2JEeGnO-TF_1T_iQ">
              <language>Java</language>
              <body>		// If onPort is not specified, behaves like in fUML&#xD;
		// If onPort is specified,&#xD;
		// Get the value from the target pin. If the value is not a reference, &#xD;
		// then do nothing.&#xD;
		// Otherwise, construct a signal using the values from the argument pins&#xD;
		// As compared to fUML, instead of sending directly to target reference &#xD;
		// by calling operation send:&#xD;
		// - If the InvocationAction is being executed inside the object given &#xD;
		// on the target InputPin, the invocation is made out of the target object &#xD;
		// through the given Port. &#xD;
		// Otherwise the invocation is made into the target object through the &#xD;
		// given Port.&#xD;
&#xD;
		SendSignalAction action = (SendSignalAction)(this.node);&#xD;
&#xD;
		if (action.onPort == null) {&#xD;
			// Behaves like in fUML&#xD;
			this.doActionDefault() ;&#xD;
		}&#xD;
		else {&#xD;
			Value target = this.takeTokens(action.target).get(0) ;&#xD;
&#xD;
			if (target instanceof CS_Reference) {&#xD;
				// Constructs the signal instance&#xD;
				Signal signal = action.signal;&#xD;
				CS_SignalInstance signalInstance = new CS_SignalInstance();&#xD;
				signalInstance.type = signal;&#xD;
&#xD;
				PropertyList attributes = signal.ownedAttribute ;&#xD;
				InputPinList argumentPins = action.argument ;&#xD;
				Integer i = 0 ;&#xD;
				while ( i &lt; attributes.size()) {&#xD;
					Property attribute = attributes.get(i);&#xD;
					InputPin argumentPin = argumentPins.get(i);&#xD;
					ValueList values = this.takeTokens(argumentPin);&#xD;
					signalInstance.setFeatureValue(attribute, values, 0);&#xD;
					i = i + 1 ;&#xD;
				}&#xD;
&#xD;
				// Tries to determine if the signal has to be&#xD;
				// sent to the environment or to the internals of&#xD;
				// target, through onPort&#xD;
				CS_Reference targetReference = (CS_Reference)target ;&#xD;
				//Port onPort = action.onPort ;&#xD;
				Object_ executionContext = this.group.activityExecution.context ;&#xD;
				if (executionContext == targetReference.referent &#xD;
						|| targetReference.compositeReferent.contains(executionContext)) {&#xD;
					targetReference.sendOut(signalInstance, action.onPort);&#xD;
				}&#xD;
				else {&#xD;
					targetReference.sendIn(signalInstance, action.onPort);&#xD;
				}&#xD;
			}&#xD;
		}</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ta-20OYcEeGYZqnbU6eCYw" name="doActionDefault" specification="_nDvn8OYcEeGYZqnbU6eCYw">
              <language>Java</language>
              <body>		// Get the value from the target pin. If the value is not a reference,&#xD;
		// then do nothing.&#xD;
		// Otherwise, construct a signal using the values from the argument pins&#xD;
		// and send it to the referent object.&#xD;
		// This operation captures same semantics as fUML&#xD;
		// SendSignalActionActivation.doAction() except that it constructs&#xD;
		// a CS_SignalInstance instead of a SignalInstance&#xD;
&#xD;
		SendSignalAction action = (SendSignalAction) (this.node);&#xD;
		Value target = this.takeTokens(action.target).getValue(0);&#xD;
&#xD;
		if (target instanceof Reference) {&#xD;
			Signal signal = action.signal;&#xD;
&#xD;
			CS_SignalInstance signalInstance = new CS_SignalInstance();&#xD;
			signalInstance.type = signal;&#xD;
&#xD;
			PropertyList attributes = signal.ownedAttribute;&#xD;
			InputPinList argumentPins = action.argument;&#xD;
			for (int i = 0; i &lt; attributes.size(); i++) {&#xD;
				Property attribute = attributes.getValue(i);&#xD;
				InputPin argumentPin = argumentPins.getValue(i);&#xD;
				ValueList values = this.takeTokens(argumentPin);&#xD;
				signalInstance.setFeatureValue(attribute, values, 0);&#xD;
			}&#xD;
&#xD;
			((Reference) target).send(signalInstance);&#xD;
		}</body>
            </ownedBehavior>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_wUwMId2JEeGnO-TF_1T_iQ" name="doAction" visibility="public" method="_wUwMIN2JEeGnO-TF_1T_iQ" class="_wUwMFt2JEeGnO-TF_1T_iQ">
              <ownedComment xmi:type="uml:Comment" xmi:id="_wUwMIt2JEeGnO-TF_1T_iQ">
                <body>&lt;&lt;TextualRepresentation>>public doAction () { &#xD;
    // If onPort is not specified, behaves like in fUML&#xD;
	// If onPort is specified,&#xD;
	// Get the value from the target pin. If the value is not a reference, &#xD;
	// then do nothing.&#xD;
	// Otherwise, construct a signal using the values from the argument pins&#xD;
	// As compared to fUML, instead of sending directly to target reference &#xD;
	// by calling operation send,&#xD;
    // sendOut is called, so that the constructed signal will be finally sent &#xD;
	// to the environment.&#xD;
	&#xD;
	SendSignalAction action = (SendSignalAction)(this.node);&#xD;
&#xD;
	if (action.onPort == null) {&#xD;
		super.doAction() ;&#xD;
	}&#xD;
	else {&#xD;
		Value target = this.takeTokens(action.target).getValue(0) ;&#xD;
	&#xD;
		if (target instanceof ReferenceToCompositeStructure) {&#xD;
		    Signal signal = action.signal;&#xD;
		    SignalInstance signalInstance = new SignalInstance();&#xD;
		    signalInstance.type = signal;&#xD;
	&#xD;
		    PropertyList attributes = signal.ownedAttribute;&#xD;
		    InputPinList argumentPins = action.argument;&#xD;
			Integer i = 0 ;&#xD;
		    while ( i &lt; attributes.size()) {&#xD;
		        Property attribute = attributes.getValue(i);&#xD;
		        InputPin argumentPin = argumentPins.getValue(i);&#xD;
		        ValueList values = this.takeTokens(argumentPin);&#xD;
		        signalInstance.setFeatureValue(attribute, values, 0);&#xD;
		    }&#xD;
	    &#xD;
			ReferenceToCompositeStructure targetReference = &#xD;
					(ReferenceToCompositeStructure)target ;&#xD;
			Port onPort = action.onPort ;&#xD;
			targetReference.sendOut(signalInstance, onPort) ;&#xD;
		}&#xD;
	}&#xD;
}</body>
              </ownedComment>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_nDvn8OYcEeGYZqnbU6eCYw" name="doActionDefault" method="_ta-20OYcEeGYZqnbU6eCYw" class="_wUwMFt2JEeGnO-TF_1T_iQ"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="_WuOboOeIEeGYZqnbU6eCYw" name="CS_RequestPropagationStrategy" isAbstract="true">
            <ownedComment xmi:type="uml:Comment" xmi:id="_xMxR0OeaEeGYZqnbU6eCYw">
              <body>This semantic strategy is introduced to enable semantic variants related to propagation of requests through connectors, in the case where multiple propagation paths are possible. Concrete strategy classes shall provide a behavior for abstract operation select.</body>
            </ownedComment>
            <ownedComment xmi:type="uml:Comment" xmi:id="_Be7fcOegEeGYZqnbU6eCYw">
              <body>// Imports&#xD;
import fUML.Semantics.Classes.Kernel.ReferenceList;&#xD;
import fUML.Semantics.Loci.LociL1.SemanticStrategy;&#xD;
import fUML.Semantics.Loci.LociL1.SemanticVisitor;&#xD;
</body>
            </ownedComment>
            <generalization xmi:type="uml:Generalization" xmi:id="_qnVUEOeIEeGYZqnbU6eCYw" specific="_WuOboOeIEeGYZqnbU6eCYw">
              <general xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Loci-LociL1-SemanticStrategy"/>
            </generalization>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_3ZSjoOeIEeGYZqnbU6eCYw" name="getName" specification="_uGsW4OeIEeGYZqnbU6eCYw">
              <language>Java</language>
              <body>		// a CS_RequestPropagationStrategy are always named &quot;requestPropagation&quot;&#xD;
		return &quot;requestPropagation&quot;;&#xD;
</body>
            </ownedBehavior>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_uGsW4OeIEeGYZqnbU6eCYw" name="getName" method="_3ZSjoOeIEeGYZqnbU6eCYw" class="_WuOboOeIEeGYZqnbU6eCYw">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_yybtQOeIEeGYZqnbU6eCYw" name="result" direction="return">
                <type xmi:type="uml:PrimitiveType" href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#String"/>
              </ownedParameter>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_-62QkOeIEeGYZqnbU6eCYw" name="select" isAbstract="true" class="_WuOboOeIEeGYZqnbU6eCYw">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_cNnnEOeJEeGYZqnbU6eCYw" name="potentialTargets">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Classes-Kernel-Reference"/>
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_dcfN8OeJEeGYZqnbU6eCYw"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_dckGcOeJEeGYZqnbU6eCYw" value="*"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_iOKNMOeJEeGYZqnbU6eCYw" name="context">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Loci-LociL1-SemanticVisitor"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_n8XtMOeJEeGYZqnbU6eCYw" name="result" direction="return">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Classes-Kernel-Reference"/>
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_o5Xg8OeJEeGYZqnbU6eCYw"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_o5cZcOeJEeGYZqnbU6eCYw" value="*"/>
              </ownedParameter>
            </ownedOperation>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="_A8IWYOeKEeGYZqnbU6eCYw" name="CS_DefaultRequestPropagationStrategy">
            <ownedComment xmi:type="uml:Comment" xmi:id="_C3r0YOebEeGYZqnbU6eCYw">
              <body>This class proposes a basic semantic variant for the semantic variation point captured by CS_RequestPropagationSrategy. This semantic variants consists in broadcasting the request to all possible targets in the case where the request concerns a signal sending. In the case where the request concerns an operation call, only the first target is kept.</body>
            </ownedComment>
            <ownedComment xmi:type="uml:Comment" xmi:id="_5WNE0OefEeGYZqnbU6eCYw">
              <body>// Imports&#xD;
import fUML.Semantics.Actions.BasicActions.SendSignalActionActivation;&#xD;
import fUML.Semantics.Classes.Kernel.ReferenceList;&#xD;
import fUML.Semantics.Loci.LociL1.SemanticVisitor;&#xD;
</body>
            </ownedComment>
            <generalization xmi:type="uml:Generalization" xmi:id="_HSolcOeKEeGYZqnbU6eCYw" general="_WuOboOeIEeGYZqnbU6eCYw" specific="_A8IWYOeKEeGYZqnbU6eCYw"/>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_8dVaYOeKEeGYZqnbU6eCYw" name="select" specification="_OhIMcOeKEeGYZqnbU6eCYw">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_FrsAUOeLEeGYZqnbU6eCYw" name="potentialTargets">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Classes-Kernel-Reference"/>
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_OCzcQOeLEeGYZqnbU6eCYw"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_OC9NQOeLEeGYZqnbU6eCYw" value="*"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_HZipQOeLEeGYZqnbU6eCYw" name="semanticVisitor">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Loci-LociL1-SemanticVisitor"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_JMAscOeLEeGYZqnbU6eCYw" name="result" direction="return">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Classes-Kernel-Reference"/>
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ZmQRUOeLEeGYZqnbU6eCYw"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Zmb3gOeLEeGYZqnbU6eCYw" value="*"/>
              </ownedParameter>
              <language>Java</language>
              <body>		// returns all potential targets in the case where the context is a SendSignalActionActivation&#xD;
		// returns the first potential target in the case where the context is anything else&#xD;
		ReferenceList selectedTargets = new ReferenceList() ;&#xD;
		if (context instanceof SendSignalActionActivation) {&#xD;
			for (int i = 0 ; i &lt; potentialTargets.size() ; i++) {&#xD;
				selectedTargets.addValue(potentialTargets.getValue(i)) ;&#xD;
			}&#xD;
		}&#xD;
		else { &#xD;
			if (potentialTargets.size() >= 1) {&#xD;
				selectedTargets.addValue(potentialTargets.get(0)) ;&#xD;
			}&#xD;
		}&#xD;
		return selectedTargets;</body>
            </ownedBehavior>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_OhIMcOeKEeGYZqnbU6eCYw" name="select" method="_8dVaYOeKEeGYZqnbU6eCYw" class="_A8IWYOeKEeGYZqnbU6eCYw">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_OhIMceeKEeGYZqnbU6eCYw" name="potentialTargets">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Classes-Kernel-Reference"/>
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_OhIMcueKEeGYZqnbU6eCYw"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_OhIMc-eKEeGYZqnbU6eCYw" value="*"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_OhIMdOeKEeGYZqnbU6eCYw" name="context">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Loci-LociL1-SemanticVisitor"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_OhIMdeeKEeGYZqnbU6eCYw" name="result" direction="return">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Classes-Kernel-Reference"/>
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_OhIMdueKEeGYZqnbU6eCYw"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_OhIMd-eKEeGYZqnbU6eCYw" value="*"/>
              </ownedParameter>
            </ownedOperation>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="_didLwJtyEeKfyJQ76Ld1Rg" name="CS_ConstructStrategy" isAbstract="true">
            <generalization xmi:type="uml:Generalization" xmi:id="_nFGfUJt1EeKfyJQ76Ld1Rg" specific="_didLwJtyEeKfyJQ76Ld1Rg">
              <general xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Loci-LociL1-SemanticStrategy"/>
            </generalization>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_75QyoMFEEeKkJbQgitQ3JQ" name="getName" specification="_n60GsJtyEeKfyJQ76Ld1Rg">
              <language>Java</language>
              <body>		// a CS_ConstructionStrategy is always named &quot;constructStrategy&quot;&#xD;
		return &quot;constructStrategy&quot;;</body>
            </ownedBehavior>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_n60GsJtyEeKfyJQ76Ld1Rg" name="getName" method="_75QyoMFEEeKkJbQgitQ3JQ" class="_didLwJtyEeKfyJQ76Ld1Rg">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_sTORYJtyEeKfyJQ76Ld1Rg" name="result" direction="return">
                <type xmi:type="uml:PrimitiveType" href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#String"/>
              </ownedParameter>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_yQWXIJtyEeKfyJQ76Ld1Rg" name="construct" isAbstract="true" class="_didLwJtyEeKfyJQ76Ld1Rg">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_-R6EgJtyEeKfyJQ76Ld1Rg" name="constructor">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-Operation"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_DptPoJtzEeKfyJQ76Ld1Rg" name="context" type="_wUwzPd2JEeGnO-TF_1T_iQ"/>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_igycEJt0EeKfyJQ76Ld1Rg" name="result" direction="return">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Classes-Kernel-Object"/>
              </ownedParameter>
            </ownedOperation>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="_tzBlUJt0EeKfyJQ76Ld1Rg" name="CS_DefaultConstructStrategy">
            <generalization xmi:type="uml:Generalization" xmi:id="_0EFTsJt0EeKfyJQ76Ld1Rg" general="_didLwJtyEeKfyJQ76Ld1Rg" specific="_tzBlUJt0EeKfyJQ76Ld1Rg"/>
            <ownedAttribute xmi:type="uml:Property" xmi:id="_aXlM0DJwEeOOxr3mXNMmgg" name="locus" association="_aXuWwDJwEeOOxr3mXNMmgg">
              <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Loci-LociL1-Locus"/>
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_aXlM0TJwEeOOxr3mXNMmgg" value="1"/>
              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_aXlM0jJwEeOOxr3mXNMmgg" value="1"/>
            </ownedAttribute>
            <ownedAttribute xmi:type="uml:Property" xmi:id="_988Q0DJyEeOOxr3mXNMmgg" name="defaultAssociation" aggregation="composite" association="_99Go4DJyEeOOxr3mXNMmgg">
              <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-Association"/>
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_988Q0TJyEeOOxr3mXNMmgg" value="1"/>
              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_988Q0jJyEeOOxr3mXNMmgg" value="1"/>
            </ownedAttribute>
            <ownedAttribute xmi:type="uml:Property" xmi:id="_YyjhADJ2EeOOxr3mXNMmgg" name="generatedRealizingClasses" type="_LdpeR9zBEeGru4CffneBug" aggregation="composite" association="_Yy6GUDJ2EeOOxr3mXNMmgg">
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_YyjhATJ2EeOOxr3mXNMmgg"/>
              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_YyjhAjJ2EeOOxr3mXNMmgg" value="*"/>
            </ownedAttribute>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_uQ9pkMFHEeKkJbQgitQ3JQ" name="construct" specification="_4h3GkJt0EeKfyJQ76Ld1Rg">
              <language>Java</language>
              <body>		this.locus = context.locus ;&#xD;
		return this.constructObject(context, (Class_)constructor.type) ;</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_37ktsMFHEeKkJbQgitQ3JQ" name="canInstantiate" specification="_1Dms8MFFEeKkJbQgitQ3JQ">
              <language>Java</language>
              <body>		// Instantiate is possible if:&#xD;
		// - p is composite&#xD;
		// - p is typed&#xD;
		// - This type is a Class and it is not abstract&#xD;
		// - Or p is a Port and the type is an Interface&#xD;
		if (p.isComposite) {&#xD;
			if (p.typedElement.type != null) {&#xD;
				if (p.typedElement.type instanceof Class_) {&#xD;
					return ! ((Class_)p.typedElement.type).isAbstract ;&#xD;
				}&#xD;
				else if (p.typedElement.type instanceof Interface) { &#xD;
					return p instanceof Port ;&#xD;
				}&#xD;
			}&#xD;
		}&#xD;
		return false ;</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="__jjLsMFHEeKkJbQgitQ3JQ" name="constructObject" specification="_1M-rYMFFEeKkJbQgitQ3JQ">
              <language>Java</language>
              <body>		CS_Reference referenceToContext = new CS_Reference() ;&#xD;
		referenceToContext.referent = context ;&#xD;
		referenceToContext.compositeReferent = (CS_Object)context ;&#xD;
		// FIXME detect infinite recursive instantiation&#xD;
		PropertyList allAttributes = type.attribute ;&#xD;
		int i = 1 ;&#xD;
		// Instantiate ports and parts&#xD;
		while (i &lt;= allAttributes.size()) {&#xD;
			Property p = allAttributes.get(i - 1) ;&#xD;
			if (p.default_ != null) {&#xD;
				ValueSpecification defaultValueSpecification = p.default_ ;&#xD;
				Evaluation evaluation = (Evaluation)context.locus.factory.instantiateVisitor(defaultValueSpecification) ;&#xD;
				evaluation.specification = defaultValueSpecification ;&#xD;
				evaluation.locus = context.locus ;&#xD;
				if (evaluation instanceof CS_OpaqueExpressionEvaluation) {&#xD;
					ValueList evaluations = ((CS_OpaqueExpressionEvaluation)evaluation).executeExpressionBehavior() ;&#xD;
					for (int j = 0 ; j &lt; evaluations.size() ; j++) {&#xD;
						this.addStructuralFeatureValue(referenceToContext, p, evaluations.get(j)) ;&#xD;
					}&#xD;
				}&#xD;
				else {&#xD;
					Value defaultValue = evaluation.evaluate() ;&#xD;
					this.addStructuralFeatureValue(referenceToContext, p, defaultValue) ;&#xD;
				}&#xD;
			}&#xD;
			else &#xD;
				if (this.canInstantiate(p)) {&#xD;
					int j = 1 ;&#xD;
					while (j &lt;= p.multiplicityElement.lower) {&#xD;
						Object_ value ;&#xD;
						// if p is a Port typed by an Interface&#xD;
						// creates an Object without type, but with FeatureValues corresponding to &#xD;
						// structural features of the interface.&#xD;
						if (p instanceof Port &amp;&amp; p.typedElement.type instanceof Interface) {&#xD;
							value = this.instantiateInterface((Interface)p.typedElement.type, this.locus) ;&#xD;
							this.addStructuralFeatureValue(referenceToContext, p, value);&#xD;
						}&#xD;
						else {&#xD;
							value = context.locus.instantiate((Class_)p.typedElement.type) ;&#xD;
							// TODO account for existing constructors&#xD;
							value = this.constructObject((CS_Object)value, (Class_)p.typedElement.type) ;&#xD;
							this.addStructuralFeatureValue(referenceToContext, p, (CS_Object)value) ;&#xD;
							if (((Class_)p.typedElement.type).isActive) {&#xD;
								value.startBehavior((Class_)p.typedElement.type, new ParameterValueList()) ;&#xD;
							}&#xD;
						}&#xD;
						j = j + 1 ;&#xD;
					}&#xD;
				}&#xD;
			i = i + 1 ;&#xD;
		}&#xD;
		// Instantiate connectors&#xD;
		NamedElementList allMembers = type.member ;&#xD;
		i = 1 ;&#xD;
		while (i &lt;= allMembers.size()) {&#xD;
			NamedElement member = allMembers.get(i - 1) ;&#xD;
			if (member instanceof Connector) {&#xD;
				Connector connector = (Connector)member ;&#xD;
				if (this.isArrayPattern(connector)) {&#xD;
					this.generateArrayPattern(referenceToContext, connector) ;&#xD;
				}&#xD;
				else if (this.isStarPattern(connector)) {&#xD;
					this.generateStarPattern(referenceToContext, connector) ;&#xD;
				}&#xD;
			}&#xD;
			i = i + 1 ;&#xD;
		}&#xD;
		return referenceToContext.referent ;</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_JD6HoMFIEeKkJbQgitQ3JQ" name="generateArrayPattern" specification="_1ZLUUMFFEeKkJbQgitQ3JQ">
              <language>Java</language>
              <body>		ConnectorEnd end1 = connector.end.getValue(0) ;&#xD;
		ConnectorEnd end2 = connector.end.getValue(1) ;&#xD;
		ReferenceList end1Values = this.getValuesFromConnectorEnd(context, end1) ;&#xD;
		ReferenceList end2Values = this.getValuesFromConnectorEnd(context, end2) ;&#xD;
		for (int i = 0 ; i &lt; end1Values.size() ; i++) {&#xD;
			CS_Link link = new CS_Link() ;&#xD;
			if (connector.type == null) {&#xD;
				link.type = this.getDefaultAssociation() ;&#xD;
			}&#xD;
			else {&#xD;
				link.type = connector.type ;&#xD;
			}&#xD;
			ValueList valuesForEnd1 = new ValueList() ;&#xD;
			valuesForEnd1.add(end1Values.get(i)) ;&#xD;
			ValueList valuesForEnd2 = new ValueList() ;&#xD;
			valuesForEnd2.add(end2Values.get(i)) ;&#xD;
			link.setFeatureValue(link.type.ownedEnd.getValue(0), valuesForEnd1, -1) ;&#xD;
			link.setFeatureValue(link.type.ownedEnd.getValue(1), valuesForEnd2, -1) ;&#xD;
			link.addTo(context.referent.locus) ;&#xD;
		}</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_QRQfIMFIEeKkJbQgitQ3JQ" name="generateStarPattern" specification="_1jvlkMFFEeKkJbQgitQ3JQ">
              <language>Java</language>
              <body>		ConnectorEnd end1 = connector.end.getValue(0) ;&#xD;
		ConnectorEnd end2 = connector.end.getValue(1) ;&#xD;
		ReferenceList end1Values = this.getValuesFromConnectorEnd(context, end1) ;&#xD;
		ReferenceList end2Values = this.getValuesFromConnectorEnd(context, end2) ;&#xD;
		for (int i = 0 ; i &lt; end1Values.size() ; i++) {&#xD;
			for (int j = 0 ; j &lt; end2Values.size(); j++) {&#xD;
				CS_Link link = new CS_Link() ;&#xD;
				if (connector.type == null) {&#xD;
					link.type = this.getDefaultAssociation() ;&#xD;
				}&#xD;
				else {&#xD;
					link.type = connector.type ;&#xD;
				}&#xD;
				ValueList valuesForEnd1 = new ValueList() ;&#xD;
				valuesForEnd1.add(end1Values.get(i)) ;&#xD;
				ValueList valuesForEnd2 = new ValueList() ;&#xD;
				valuesForEnd2.add(end2Values.get(j)) ;&#xD;
				link.setFeatureValue(link.type.ownedEnd.get(0), valuesForEnd1, -1) ;&#xD;
				link.setFeatureValue(link.type.ownedEnd.get(1), valuesForEnd2, -1) ;&#xD;
				link.addTo(context.referent.locus) ;&#xD;
			}&#xD;
		}</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Zm4KsMFIEeKkJbQgitQ3JQ" name="getCardinality" specification="_1wircMFFEeKkJbQgitQ3JQ">
              <language>Java</language>
              <body>		int lowerOfRole = end.role.actualConnectableElement.multiplicityElement.lower ;&#xD;
		if (lowerOfRole == 0) {&#xD;
			return 0 ;&#xD;
		}&#xD;
		else if (end.partWithPort == null) {&#xD;
			return lowerOfRole ;&#xD;
		}&#xD;
		else {&#xD;
			int lowerOfPart = end.partWithPort.multiplicityElement.lower ;&#xD;
			return lowerOfRole * lowerOfPart ;&#xD;
		}</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_jTjrYMFIEeKkJbQgitQ3JQ" name="getValuesFromConnectorEnd" specification="_18SocMFFEeKkJbQgitQ3JQ">
              <language>Java</language>
              <body>		ReferenceList endValues = new ReferenceList() ;&#xD;
		if (end.partWithPort != null) {&#xD;
			FeatureValue valueForPart = context.getFeatureValue(end.partWithPort) ;&#xD;
			if (valueForPart != null) {&#xD;
				for (int i = 0 ; i &lt; valueForPart.values.size() ; i++) {&#xD;
					Reference reference = (Reference)valueForPart.values.get(i) ;&#xD;
					FeatureValue valueForPort = reference.getFeatureValue((Port)end.role.actualConnectableElement) ;&#xD;
					if (valueForPort != null) {&#xD;
						for (int j = 0 ; j &lt; valueForPort.values.size() ; j++) {&#xD;
							endValues.add((Reference)valueForPort.values.get(j)) ;&#xD;
						}&#xD;
					}&#xD;
				}&#xD;
			}&#xD;
		}&#xD;
		else {&#xD;
			FeatureValue valueForRole = context.getFeatureValue((Property)end.role.actualConnectableElement) ;&#xD;
			if (valueForRole != null) {&#xD;
				for (int i = 0 ; i &lt; valueForRole.values.size() ; i++) {&#xD;
					endValues.add((Reference)valueForRole.values.get(i)) ;&#xD;
				}&#xD;
			}&#xD;
		}&#xD;
		return endValues ;</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_sITegMFIEeKkJbQgitQ3JQ" name="isArrayPattern" specification="_2IClcMFFEeKkJbQgitQ3JQ">
              <language>Java</language>
              <body>		// This is an array pattern if:&#xD;
		// - c is binary&#xD;
		// - lower bound of the two connector ends is 1&#xD;
		// - Cardinality of ends are equals&#xD;
		if (c.end.size() == 2) {&#xD;
			if (c.end.get(0).role.actualConnectableElement.multiplicityElement.lower == 1) {&#xD;
				if (c.end.get(1).role.actualConnectableElement.multiplicityElement.lower == 1) {&#xD;
					if (this.canInstantiate(c.end.get(0).role.actualConnectableElement)&#xD;
							&amp;&amp; this.canInstantiate(c.end.get(1).role.actualConnectableElement)) {&#xD;
						int cardinality1 = this.getCardinality(c.end.get(0)) ;&#xD;
						int cardinality2 = this.getCardinality(c.end.get(1)) ;&#xD;
						return cardinality1 == cardinality2 ;&#xD;
					}&#xD;
				}&#xD;
			}&#xD;
		}&#xD;
		return false ;</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_zPjOAMFIEeKkJbQgitQ3JQ" name="isStarPattern" specification="_2U1rUMFFEeKkJbQgitQ3JQ">
              <language>Java</language>
              <body>		// This is an array pattern if:&#xD;
		// - c is binary&#xD;
		// - lower bound of end1 equals cardinality of end1&#xD;
		// - lower bound of end2 equals cardinality of end2&#xD;
		if (c.end.size() == 2) {&#xD;
			if (this.canInstantiate(c.end.get(0).role.actualConnectableElement)&#xD;
					&amp;&amp; this.canInstantiate(c.end.get(1).role.actualConnectableElement)) {&#xD;
				int cardinalityOfEnd1 = this.getCardinality(c.end.get(0)) ;&#xD;
				int lowerBoundofEnd1 = c.end.get(0).role.actualConnectableElement.multiplicityElement.lower ;&#xD;
				if (cardinalityOfEnd1 == lowerBoundofEnd1) {&#xD;
					int cardinalityOfEnd2 = this.getCardinality(c.end.get(1)) ;&#xD;
					int lowerBoundofEnd2 = c.end.get(1).role.actualConnectableElement.multiplicityElement.lower ;&#xD;
					return cardinalityOfEnd2 == lowerBoundofEnd2 ;&#xD;
				}&#xD;
			}&#xD;
		}&#xD;
		return false ;</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_9Gp2AMFIEeKkJbQgitQ3JQ" name="addStructuralFeatureValue" specification="_04Tb4MFFEeKkJbQgitQ3JQ">
              <language>Java</language>
              <body>		FeatureValue featureValue = context.getFeatureValue(feature) ;&#xD;
		if (featureValue != null) {&#xD;
			ValueList values = featureValue.values ;&#xD;
			if (feature instanceof Port) {&#xD;
				// insert an interaction point&#xD;
				CS_InteractionPoint interactionPoint = new CS_InteractionPoint() ;&#xD;
				interactionPoint.definingPort = (Port)feature ;&#xD;
				interactionPoint.referent = (CS_Object)value ;&#xD;
				interactionPoint.owner = context ;&#xD;
				values.add(interactionPoint) ;&#xD;
			}&#xD;
			else if (value instanceof CS_Object) {&#xD;
				// insert a reference&#xD;
				CS_Reference reference = new CS_Reference() ;&#xD;
				reference.compositeReferent = (CS_Object)value ;&#xD;
				reference.referent = (CS_Object)value ;&#xD;
				values.add(reference) ;&#xD;
			}&#xD;
			else {&#xD;
				values.add(value) ;&#xD;
			}&#xD;
		}</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_hjaLQDJ5EeOOxr3mXNMmgg" name="getDefaultAssociation" specification="_Xw5XEDJzEeOOxr3mXNMmgg">
              <language>JAVA</language>
              <body>		// Computes an returns an Association with two untyped owned ends, &#xD;
		// with multiplicity [*].&#xD;
		// This association can be used to type links instantiated from untyped connectors&#xD;
		if (defaultAssociation == null) {&#xD;
			defaultAssociation = new Association() ;&#xD;
			defaultAssociation.name = &quot;DefaultGeneratedAssociation&quot;;&#xD;
			Property end1 = new Property() ;&#xD;
			end1.setName(&quot;x&quot;); ;&#xD;
			end1.setLower(0);&#xD;
			end1.setUpper(-1);&#xD;
			end1.setIsOrdered(true);&#xD;
			end1.setIsUnique(true);&#xD;
			defaultAssociation.addOwnedEnd(end1);&#xD;
			Property end2 = new Property() ;&#xD;
			end2.setName(&quot;y&quot;);&#xD;
			end2.setLower(0);&#xD;
			end2.setUpper(-1);&#xD;
			end2.setIsOrdered(true);&#xD;
			end2.setIsUnique(true);&#xD;
			defaultAssociation.addOwnedEnd(end2);&#xD;
		}&#xD;
		return defaultAssociation ;</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_wEQlkDJ5EeOOxr3mXNMmgg" name="instantiateInterface" specification="_KRQQMDJ1EeOOxr3mXNMmgg">
              <language>JAVA</language>
              <body>		Class_ realizingClass = this.getRealizingClass(interface_) ;&#xD;
		Object_ object = locus.instantiate(realizingClass) ;&#xD;
		return object ;</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_2yafoDJ5EeOOxr3mXNMmgg" name="getRealizingClass" specification="_tHXeADJ2EeOOxr3mXNMmgg">
              <language>JAVA</language>
              <body>		Class_ realizingClass = null ;&#xD;
		// TODO For cached RealizingClasses, search based on InterfaceRealizations rather than name&#xD;
		String realizingClassName = interface_.qualifiedName + &quot;GeneratedRealizingClass&quot; ;&#xD;
		int i = 1 ;&#xD;
		while (i &lt;= generatedRealizingClasses.size() &amp;&amp; realizingClass == null) {&#xD;
			Class_ cddRealizingClass = generatedRealizingClasses.getValue(i - 1) ;&#xD;
			if (cddRealizingClass.name.equals(realizingClassName)) {&#xD;
				realizingClass = cddRealizingClass ;&#xD;
			}&#xD;
			i = i + 1 ;&#xD;
		}&#xD;
		if (realizingClass == null) {&#xD;
			realizingClass = this.generateRealizingClass(interface_, realizingClassName) ;&#xD;
			generatedRealizingClasses.addValue(realizingClass) ;&#xD;
		}&#xD;
		return realizingClass ;</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_BfOAkDJ6EeOOxr3mXNMmgg" name="generateRealizingClass" specification="_GSr28DJ3EeOOxr3mXNMmgg">
              <language>JAVA</language>
              <body>		Class_ realizingClass = new Class_() ;&#xD;
		realizingClass.setName(className) ;&#xD;
		InterfaceRealization realization = new InterfaceRealization() ;&#xD;
		realization.contract = interface_ ;&#xD;
		realization.implementingClassifier = realizingClass ;&#xD;
		realizingClass.interfaceRealization.addValue(realization); &#xD;
		// TODO Deal with structural features of the interface&#xD;
		// TODO Make a test case for reading/writing structural features of an interface&#xD;
		return realizingClass ;</body>
            </ownedBehavior>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_4h3GkJt0EeKfyJQ76Ld1Rg" name="construct" method="_uQ9pkMFHEeKkJbQgitQ3JQ" class="_tzBlUJt0EeKfyJQ76Ld1Rg" redefinedOperation="_yQWXIJtyEeKfyJQ76Ld1Rg">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_4h3GkZt0EeKfyJQ76Ld1Rg" name="constructor">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-Operation"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_4h3Gkpt0EeKfyJQ76Ld1Rg" name="context" type="_wUwzPd2JEeGnO-TF_1T_iQ"/>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_4h3Gk5t0EeKfyJQ76Ld1Rg" name="result" direction="return">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Classes-Kernel-Object"/>
              </ownedParameter>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_04Tb4MFFEeKkJbQgitQ3JQ" name="addStructuralFeatureValue" method="_9Gp2AMFIEeKkJbQgitQ3JQ" class="_tzBlUJt0EeKfyJQ76Ld1Rg">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_Fp_3cMFGEeKkJbQgitQ3JQ" name="context" type="_wUwMMt2JEeGnO-TF_1T_iQ"/>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_I7BjUMFGEeKkJbQgitQ3JQ" name="feature">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-Property"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_LZLAwMFGEeKkJbQgitQ3JQ" name="value">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Classes-Kernel-Value"/>
              </ownedParameter>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_1Dms8MFFEeKkJbQgitQ3JQ" name="canInstantiate" method="_37ktsMFHEeKkJbQgitQ3JQ" class="_tzBlUJt0EeKfyJQ76Ld1Rg">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_Xx1mkMFGEeKkJbQgitQ3JQ" name="p">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-Property"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_adFE0MFGEeKkJbQgitQ3JQ" name="result" direction="return">
                <type xmi:type="uml:PrimitiveType" href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
              </ownedParameter>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_1M-rYMFFEeKkJbQgitQ3JQ" name="constructObject" method="__jjLsMFHEeKkJbQgitQ3JQ" class="_tzBlUJt0EeKfyJQ76Ld1Rg">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_jYrG0MFGEeKkJbQgitQ3JQ" name="context" type="_wUwzPd2JEeGnO-TF_1T_iQ"/>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_mB06YMFGEeKkJbQgitQ3JQ" name="type" type="_LdpeR9zBEeGru4CffneBug"/>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_qplvsMFGEeKkJbQgitQ3JQ" name="result" direction="return">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Classes-Kernel-Object"/>
              </ownedParameter>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_1ZLUUMFFEeKkJbQgitQ3JQ" name="generateArrayPattern" method="_JD6HoMFIEeKkJbQgitQ3JQ" class="_tzBlUJt0EeKfyJQ76Ld1Rg">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_wnMWkMFGEeKkJbQgitQ3JQ" name="context" type="_wUwMMt2JEeGnO-TF_1T_iQ"/>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_zSuvwMFGEeKkJbQgitQ3JQ" name="connector" type="_Ldo3B9zBEeGru4CffneBug"/>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_1jvlkMFFEeKkJbQgitQ3JQ" name="generateStarPattern" method="_QRQfIMFIEeKkJbQgitQ3JQ" class="_tzBlUJt0EeKfyJQ76Ld1Rg">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_4GidAcFGEeKkJbQgitQ3JQ" name="context" type="_wUwMMt2JEeGnO-TF_1T_iQ"/>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_4GidAMFGEeKkJbQgitQ3JQ" name="connector" type="_Ldo3B9zBEeGru4CffneBug"/>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_1wircMFFEeKkJbQgitQ3JQ" name="getCardinality" method="_Zm4KsMFIEeKkJbQgitQ3JQ" class="_tzBlUJt0EeKfyJQ76Ld1Rg">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_AzGkgMFHEeKkJbQgitQ3JQ" name="end" type="_Ldo3H9zBEeGru4CffneBug"/>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_DVHOQMFHEeKkJbQgitQ3JQ" name="result" direction="return">
                <type xmi:type="uml:PrimitiveType" href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Integer"/>
              </ownedParameter>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_18SocMFFEeKkJbQgitQ3JQ" name="getValuesFromConnectorEnd" method="_jTjrYMFIEeKkJbQgitQ3JQ" class="_tzBlUJt0EeKfyJQ76Ld1Rg">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_LIQacMFHEeKkJbQgitQ3JQ" name="context" type="_wUwMMt2JEeGnO-TF_1T_iQ"/>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_NLBjcMFHEeKkJbQgitQ3JQ" name="end" type="_Ldo3H9zBEeGru4CffneBug"/>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_QXSrIMFHEeKkJbQgitQ3JQ" name="result" direction="return">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Classes-Kernel-Reference"/>
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RRUDYMFHEeKkJbQgitQ3JQ"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RRUDYcFHEeKkJbQgitQ3JQ" value="*"/>
              </ownedParameter>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_2IClcMFFEeKkJbQgitQ3JQ" name="isArrayPattern" method="_sITegMFIEeKkJbQgitQ3JQ" class="_tzBlUJt0EeKfyJQ76Ld1Rg">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_dFh4UMFHEeKkJbQgitQ3JQ" name="c" type="_Ldo3B9zBEeGru4CffneBug"/>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_fPl8IMFHEeKkJbQgitQ3JQ" name="result" direction="return">
                <type xmi:type="uml:PrimitiveType" href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
              </ownedParameter>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_2U1rUMFFEeKkJbQgitQ3JQ" name="isStarPattern" method="_zPjOAMFIEeKkJbQgitQ3JQ" class="_tzBlUJt0EeKfyJQ76Ld1Rg">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_iSVUYMFHEeKkJbQgitQ3JQ" name="result" direction="return">
                <type xmi:type="uml:PrimitiveType" href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_iSVUYcFHEeKkJbQgitQ3JQ" name="c" type="_Ldo3B9zBEeGru4CffneBug"/>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_Xw5XEDJzEeOOxr3mXNMmgg" name="getDefaultAssociation" method="_hjaLQDJ5EeOOxr3mXNMmgg" class="_tzBlUJt0EeKfyJQ76Ld1Rg">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_gJxGgDJzEeOOxr3mXNMmgg" name="result" direction="return">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-Association"/>
              </ownedParameter>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_KRQQMDJ1EeOOxr3mXNMmgg" name="instantiateInterface" method="_wEQlkDJ5EeOOxr3mXNMmgg" class="_tzBlUJt0EeKfyJQ76Ld1Rg">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_fhWwwDJ1EeOOxr3mXNMmgg" name="interface" type="_vBjwkNzDEeGru4CffneBug"/>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_l9KWkDJ1EeOOxr3mXNMmgg" name="locus">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Loci-LociL1-Locus"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_tWulIDJ1EeOOxr3mXNMmgg" name="result" direction="return">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Classes-Kernel-Object"/>
              </ownedParameter>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_tHXeADJ2EeOOxr3mXNMmgg" name="getRealizingClass" method="_2yafoDJ5EeOOxr3mXNMmgg" class="_tzBlUJt0EeKfyJQ76Ld1Rg">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_3AkXwDJ2EeOOxr3mXNMmgg" name="interface_" type="_vBjwkNzDEeGru4CffneBug"/>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_8rmA4DJ2EeOOxr3mXNMmgg" name="result" type="_LdpeR9zBEeGru4CffneBug" direction="return"/>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_GSr28DJ3EeOOxr3mXNMmgg" name="generateRealizingClass" method="_BfOAkDJ6EeOOxr3mXNMmgg" class="_tzBlUJt0EeKfyJQ76Ld1Rg">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_GSr28TJ3EeOOxr3mXNMmgg" name="interface_" type="_vBjwkNzDEeGru4CffneBug"/>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_GSr28jJ3EeOOxr3mXNMmgg" name="result" type="_LdpeR9zBEeGru4CffneBug" direction="return"/>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_Py8sQDJ3EeOOxr3mXNMmgg" name="className">
                <type xmi:type="uml:PrimitiveType" href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#String"/>
              </ownedParameter>
            </ownedOperation>
          </packagedElement>
          <packagedElement xmi:type="uml:Association" xmi:id="_aXuWwDJwEeOOxr3mXNMmgg" name="cS_DefaultConstructStrategy_locus_1" memberEnd="_aXuWwTJwEeOOxr3mXNMmgg _aXlM0DJwEeOOxr3mXNMmgg">
            <ownedEnd xmi:type="uml:Property" xmi:id="_aXuWwTJwEeOOxr3mXNMmgg" name="cS_DefaultConstructStrategy" type="_tzBlUJt0EeKfyJQ76Ld1Rg" owningAssociation="_aXuWwDJwEeOOxr3mXNMmgg" association="_aXuWwDJwEeOOxr3mXNMmgg">
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_aXuWwjJwEeOOxr3mXNMmgg" value="1"/>
              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_aXuWwzJwEeOOxr3mXNMmgg" value="1"/>
            </ownedEnd>
          </packagedElement>
          <packagedElement xmi:type="uml:Association" xmi:id="_99Go4DJyEeOOxr3mXNMmgg" name="cS_DefaultConstructStrategy_association_1" memberEnd="_99Go4TJyEeOOxr3mXNMmgg _988Q0DJyEeOOxr3mXNMmgg">
            <ownedEnd xmi:type="uml:Property" xmi:id="_99Go4TJyEeOOxr3mXNMmgg" name="cS_DefaultConstructStrategy" type="_tzBlUJt0EeKfyJQ76Ld1Rg" owningAssociation="_99Go4DJyEeOOxr3mXNMmgg" association="_99Go4DJyEeOOxr3mXNMmgg">
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_99Go4jJyEeOOxr3mXNMmgg" value="1"/>
              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_99Go4zJyEeOOxr3mXNMmgg" value="1"/>
            </ownedEnd>
          </packagedElement>
          <packagedElement xmi:type="uml:Association" xmi:id="_Yy6GUDJ2EeOOxr3mXNMmgg" name="cS_DefaultConstructStrategy_class_1" memberEnd="_Yy6GUTJ2EeOOxr3mXNMmgg _YyjhADJ2EeOOxr3mXNMmgg">
            <ownedEnd xmi:type="uml:Property" xmi:id="_Yy6GUTJ2EeOOxr3mXNMmgg" name="cS_DefaultConstructStrategy" type="_tzBlUJt0EeKfyJQ76Ld1Rg" owningAssociation="_Yy6GUDJ2EeOOxr3mXNMmgg" association="_Yy6GUDJ2EeOOxr3mXNMmgg">
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Yy6GUjJ2EeOOxr3mXNMmgg" value="1"/>
              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Yy6GUzJ2EeOOxr3mXNMmgg" value="1"/>
            </ownedEnd>
          </packagedElement>
        </packagedElement>
      </packagedElement>
      <packagedElement xmi:type="uml:Package" xmi:id="_RDIo4N-4EeGnO-TF_1T_iQ" name="Actions">
        <packagedElement xmi:type="uml:Package" xmi:id="_c1F0AN-4EeGnO-TF_1T_iQ" name="IntermediateActions">
          <packagedElement xmi:type="uml:Class" xmi:id="_wUwMCN2JEeGnO-TF_1T_iQ" name="CS_AddStructuralFeatureValueActionActivation">
            <ownedComment xmi:type="uml:Comment" xmi:id="_wUwMCd2JEeGnO-TF_1T_iQ">
              <body>The behavior of fUML AddStructuralFeatureActionActivation::doAction() is overriden. In the case where the targeted structural feature is a port and the value to be added is a Reference, an interaction point is created on the basis of the given Reference. It then behaves like in fUML, except that the execution continues using the created interaction point instead of the given Reference.</body>
            </ownedComment>
            <ownedComment xmi:type="uml:Comment" xmi:id="_hMIDUOH1EeG4NZyomhkW-A">
              <body>// Imports&#xD;
import CompositeStructuresSyntaxAndSemantics.Semantics.CompositeStructures.StructuredClasses.CS_InteractionPoint;&#xD;
import CompositeStructuresSyntaxAndSemantics.Semantics.CompositeStructures.StructuredClasses.CS_Link;&#xD;
import CompositeStructuresSyntaxAndSemantics.Semantics.CompositeStructures.StructuredClasses.CS_Reference;&#xD;
import CompositeStructuresSyntaxAndSemantics.Syntax.CompositeStructures.InternalStructures.Property;&#xD;
import CompositeStructuresSyntaxAndSemantics.Syntax.CompositeStructures.Ports.Port;&#xD;
import fUML.Semantics.Actions.IntermediateActions.AddStructuralFeatureValueActionActivation;&#xD;
import fUML.Semantics.Classes.Kernel.FeatureValue;&#xD;
import fUML.Semantics.Classes.Kernel.Link;&#xD;
import fUML.Semantics.Classes.Kernel.LinkList;&#xD;
import fUML.Semantics.Classes.Kernel.Reference;&#xD;
import fUML.Semantics.Classes.Kernel.StructuredValue;&#xD;
import fUML.Semantics.Classes.Kernel.UnlimitedNaturalValue;&#xD;
import fUML.Semantics.Classes.Kernel.Value;&#xD;
import fUML.Semantics.Classes.Kernel.ValueList;&#xD;
import fUML.Semantics.Loci.LociL1.ChoiceStrategy;&#xD;
import fUML.Syntax.Actions.IntermediateActions.AddStructuralFeatureValueAction;&#xD;
import fUML.Syntax.Classes.Kernel.Association;&#xD;
import fUML.Syntax.Classes.Kernel.StructuralFeature;&#xD;
</body>
            </ownedComment>
            <generalization xmi:type="uml:Generalization" xmi:id="_wUwMEt2JEeGnO-TF_1T_iQ" specific="_wUwMCN2JEeGnO-TF_1T_iQ">
              <general xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Actions-IntermediateActions-AddStructuralFeatureValueActionActivation"/>
            </generalization>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_wUwME92JEeGnO-TF_1T_iQ" name="doAction" specification="_wUwMFN2JEeGnO-TF_1T_iQ">
              <language>Java</language>
              <body>		// If the feature is a port and the input value to be added is a&#xD;
		// Reference,&#xD;
		// Replaces this Reference by an InteractionPoint, and then behaves&#xD;
		// as usual.&#xD;
		// If the feature is not a port, behaves as usual&#xD;
&#xD;
		AddStructuralFeatureValueAction action = (AddStructuralFeatureValueAction) (this.node);&#xD;
		StructuralFeature feature = action.structuralFeature;&#xD;
&#xD;
		if (!(feature instanceof Port)) {&#xD;
			// Behaves as usual&#xD;
			this.doActionDefault() ;&#xD;
		} &#xD;
		else {&#xD;
			ValueList inputValues = this.takeTokens(action.value);&#xD;
			// NOTE: Multiplicity of the value input pin is required to be 1..1.&#xD;
			Value inputValue = inputValues.getValue(0);&#xD;
			if (inputValue instanceof Reference) {&#xD;
				// First constructs an InteractionPoint from the inputValue&#xD;
				Reference reference = (Reference) inputValue;&#xD;
				CS_InteractionPoint interactionPoint = new CS_InteractionPoint();&#xD;
				interactionPoint.referent = reference.referent;&#xD;
				interactionPoint.definingPort = (Port) feature;&#xD;
				// The value on action.object is necessarily instanceof&#xD;
				// ReferenceToCompositeStructure (otherwise, the feature cannot&#xD;
				// be a port)&#xD;
				CS_Reference owner = (CS_Reference) this.takeTokens(&#xD;
						action.object).getValue(0);&#xD;
				interactionPoint.owner = owner;&#xD;
				// Then replaces the Reference by an InteractionPoint&#xD;
				// in the inputValues&#xD;
				inputValues.remove(0);&#xD;
				inputValues.addValue(0, interactionPoint);&#xD;
				// Finally concludes with usual fUML behavior of&#xD;
				// AddStructuralFeatureValueAction (i.e., the usual behavior&#xD;
				// when&#xD;
				// the value on action.object pin is a StructuredValue)&#xD;
				Integer insertAt = 0;&#xD;
				if (action.insertAt != null) {&#xD;
					insertAt = ((UnlimitedNaturalValue) this.takeTokens(&#xD;
							action.insertAt).getValue(0)).value.naturalValue;&#xD;
				}&#xD;
				if (action.isReplaceAll) {&#xD;
					owner.setFeatureValue(feature, inputValues, 0);&#xD;
				} &#xD;
				else {&#xD;
					FeatureValue featureValue = owner.getFeatureValue(feature);&#xD;
&#xD;
					if (featureValue.values.size() > 0 &amp; insertAt == 0) {&#xD;
						// If there is no insertAt pin, then the structural&#xD;
						// feature must&#xD;
						// be unordered, and the insertion position is&#xD;
						// immaterial.&#xD;
						insertAt = ((ChoiceStrategy) this.getExecutionLocus().factory&#xD;
								.getStrategy(&quot;choice&quot;))&#xD;
								.choose(featureValue.values.size());&#xD;
					}&#xD;
					if (feature.multiplicityElement.isUnique) {&#xD;
						// Remove any existing value that duplicates the input&#xD;
						// value&#xD;
						Integer j = position(interactionPoint, featureValue.values, 1);&#xD;
						if (j > 0) {&#xD;
							featureValue.values.remove(j - 1);&#xD;
							if (insertAt > 0 &amp; j &lt; insertAt) {&#xD;
								insertAt = insertAt - 1;&#xD;
							}&#xD;
						}&#xD;
					}&#xD;
&#xD;
					if (insertAt &lt;= 0) {&#xD;
						// Note: insertAt = -1 indicates an unlimited value of&#xD;
						// &quot;*&quot;&#xD;
						featureValue.values.addValue(interactionPoint);&#xD;
					} else {&#xD;
						featureValue.values.addValue(insertAt - 1, interactionPoint);&#xD;
					}&#xD;
				}&#xD;
				if (action.result != null) {&#xD;
					this.putToken(action.result, owner);&#xD;
				}&#xD;
			} &#xD;
			else {&#xD;
				// behaves as usual&#xD;
				this.doActionDefault() ;&#xD;
			}&#xD;
		}</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_AlLQQOYcEeGYZqnbU6eCYw" name="doActionDefault" specification="_7f6moOYbEeGYZqnbU6eCYw">
              <language>Java</language>
              <body>		// Get the values of the object and value input pins.&#xD;
		// If the given feature is an association end, then create a link&#xD;
		// between the object and value inputs.&#xD;
		// Otherwise, if the object input is a structural value, then add a&#xD;
		// value to the values for the feature.&#xD;
		// If isReplaceAll is true, first remove all current matching links or&#xD;
		// feature values.&#xD;
		// If isReplaceAll is false and there is an insertAt pin, insert the&#xD;
		// value at the appropriate position.&#xD;
		// This operation captures same semantics as fUML &#xD;
		// AddStructuralFeatureValueActionActivation.doAction(), except that&#xD;
		// when the feature is an association end, a CS_Link will be created instead&#xD;
		// of a Link&#xD;
&#xD;
		AddStructuralFeatureValueAction action = (AddStructuralFeatureValueAction) (this.node);&#xD;
		StructuralFeature feature = action.structuralFeature;&#xD;
		Association association = this.getAssociation(feature);&#xD;
&#xD;
		Value value = this.takeTokens(action.object).getValue(0);&#xD;
		ValueList inputValues = this.takeTokens(action.value);&#xD;
&#xD;
		// NOTE: Multiplicity of the value input pin is required to be 1..1.&#xD;
		Value inputValue = inputValues.getValue(0);&#xD;
&#xD;
		int insertAt = 0;&#xD;
		if (action.insertAt != null) {&#xD;
			insertAt = ((UnlimitedNaturalValue) this&#xD;
					.takeTokens(action.insertAt).getValue(0)).value.naturalValue;&#xD;
		}&#xD;
&#xD;
		if (association != null) {&#xD;
			LinkList links = this.getMatchingLinks(association, feature, value);&#xD;
&#xD;
			Property oppositeEnd = this.getOppositeEnd(association, feature);&#xD;
			int position = 0;&#xD;
			if (oppositeEnd.multiplicityElement.isOrdered) {&#xD;
				position = -1;&#xD;
			}&#xD;
&#xD;
			if (action.isReplaceAll) {&#xD;
				for (int i = 0; i &lt; links.size(); i++) {&#xD;
					Link link = links.getValue(i);&#xD;
					link.destroy();&#xD;
				}&#xD;
			} else if (feature.multiplicityElement.isUnique) {&#xD;
				for (int i = 0; i &lt; links.size(); i++) {&#xD;
					Link link = links.getValue(i);&#xD;
					FeatureValue featureValue = link.getFeatureValue(feature);&#xD;
					if (featureValue.values.getValue(0).equals(inputValue)) {&#xD;
						position = link.getFeatureValue(oppositeEnd).position;&#xD;
						if (insertAt > 0 &amp; featureValue.position &lt; insertAt) {&#xD;
							insertAt = insertAt - 1;&#xD;
						}&#xD;
						link.destroy();&#xD;
					}&#xD;
				}&#xD;
			}&#xD;
&#xD;
			CS_Link newLink = new CS_Link();&#xD;
			newLink.type = association;&#xD;
&#xD;
			// This necessary when setting a feature value with an insertAt&#xD;
			// position&#xD;
			newLink.locus = this.getExecutionLocus();&#xD;
&#xD;
			newLink.setFeatureValue(feature, inputValues, insertAt);&#xD;
&#xD;
			ValueList oppositeValues = new ValueList();&#xD;
			oppositeValues.addValue(value);&#xD;
			newLink.setFeatureValue(oppositeEnd, oppositeValues, position);&#xD;
&#xD;
			newLink.locus.add(newLink);&#xD;
&#xD;
		} else if (value instanceof StructuredValue) {&#xD;
			StructuredValue structuredValue = (StructuredValue) value;&#xD;
&#xD;
			if (action.isReplaceAll) {&#xD;
				structuredValue.setFeatureValue(feature, inputValues, 0);&#xD;
			} else {&#xD;
				FeatureValue featureValue = structuredValue&#xD;
						.getFeatureValue(feature);&#xD;
&#xD;
				if (featureValue.values.size() > 0 &amp; insertAt == 0) {&#xD;
					// *** If there is no insertAt pin, then the structural&#xD;
					// feature must be unordered, and the insertion position is&#xD;
					// immaterial. ***&#xD;
					insertAt = ((ChoiceStrategy) this.getExecutionLocus().factory&#xD;
							.getStrategy(&quot;choice&quot;)).choose(featureValue.values&#xD;
									.size());&#xD;
				}&#xD;
&#xD;
				if (feature.multiplicityElement.isUnique) {&#xD;
					// Remove any existing value that duplicates the input value&#xD;
					int j = position(inputValue, featureValue.values, 1);&#xD;
					if (j > 0) {&#xD;
						featureValue.values.remove(j - 1);&#xD;
						if (insertAt > 0 &amp; j &lt; insertAt) {&#xD;
							insertAt = insertAt - 1;&#xD;
						}&#xD;
					}&#xD;
				}&#xD;
&#xD;
				if (insertAt &lt;= 0) { // Note: insertAt = -1 indicates an&#xD;
					// unlimited value of &quot;*&quot;&#xD;
					featureValue.values.addValue(inputValue);&#xD;
				} else {&#xD;
					featureValue.values.addValue(insertAt - 1, inputValue);&#xD;
				}&#xD;
			}&#xD;
		}&#xD;
&#xD;
		if (action.result != null) {&#xD;
			this.putToken(action.result, value);&#xD;
		}</body>
            </ownedBehavior>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_wUwMFN2JEeGnO-TF_1T_iQ" name="doAction" visibility="public" method="_wUwME92JEeGnO-TF_1T_iQ" class="_wUwMCN2JEeGnO-TF_1T_iQ">
              <ownedComment xmi:type="uml:Comment" xmi:id="_wUwMFd2JEeGnO-TF_1T_iQ">
                <body>&lt;&lt;TextualRepresentation>>public doAction () { &#xD;
	// If the feature is a port and the input value to be added is a Reference,&#xD;
	// Replaces this Reference by an InteractionPoint, and then behaves &#xD;
	// as usual.&#xD;
	// If the feature is not a port, behaves as usual&#xD;
&#xD;
	AddStructuralFeatureValueAction action = &#xD;
							(AddStructuralFeatureValueAction)(this.node);&#xD;
	StructuralFeature feature = action.structuralFeature;&#xD;
&#xD;
	if (! (feature instanceof Port)) {&#xD;
		// Behaves as usual&#xD;
		super.doAction() ;&#xD;
	}&#xD;
	else {&#xD;
		ValueList inputValues = this.takeTokens(action.value);&#xD;
		// NOTE: Multiplicity of the value input pin is required to be 1..1.&#xD;
		Value inputValue = inputValues.getValue(0);&#xD;
		if (inputValue instanceof Reference) {&#xD;
			// First constructs an InteractionPoint from the inputValue&#xD;
			Reference reference = (Reference)inputValue ;&#xD;
			InteractionPoint interactionPoint = new InteractionPoint() ;&#xD;
			interactionPoint.referent = reference.referent ;&#xD;
			interactionPoint.definingPort = (Port)feature ;&#xD;
			// The value on action.object is necessarily instanceof &#xD;
			// ReferenceToCompositeStructure (otherwise, the feature cannot &#xD;
			// be a port)&#xD;
			ReferenceToCompositeStructure owner = &#xD;
									(ReferenceToCompositeStructure)this&#xD;
													.takeTokens(action.object).getValue(0);&#xD;
			interactionPoint.owner = owner ;&#xD;
			// Then replaces the Reference by an InteractionPoint &#xD;
			// in the inputValues&#xD;
			inputValues.remove(0) ;&#xD;
			inputValues.addValue(0,interactionPoint) ;&#xD;
			// Finally concludes with usual fUML behavior of &#xD;
			// AddStructuralFeatureValueAction (i.e., the usual behavior when &#xD;
			// the value on action.object pin is a StructuredValue)&#xD;
			Integer insertAt = 0;&#xD;
			if (action.insertAt != null) {&#xD;
	    		insertAt = ((UnlimitedNaturalValue)this&#xD;
												.takeTokens(action.insertAt).getValue(0))&#xD;
												.value.naturalValue;&#xD;
			}&#xD;
			if (action.isReplaceAll) {&#xD;
	        	owner.setFeatureValue(feature, inputValues, 0);&#xD;
	    	} else {&#xD;
	        	FeatureValue featureValue = owner.getFeatureValue(feature);&#xD;
	&#xD;
		        if (featureValue.values.size() > 0 &amp; insertAt == 0 ) {&#xD;
		            // If there is no insertAt pin, then the structural feature must &#xD;
					// be unordered, and the insertion position is immaterial.&#xD;
	    	        insertAt = ((ChoiceStrategy)this.getExecutionLocus()&#xD;
												.factory.getStrategy(&quot;choice&quot;))&#xD;
												.choose(featureValue.values.size());&#xD;
	        	}&#xD;
	        	if (feature.multiplicityElement.'isUnique') {&#xD;
	            	// Remove any existing value that duplicates the input value&#xD;
		            Integer j = position(inputValue, featureValue.values, 1);&#xD;
		            if (j > 0) {&#xD;
	    	            featureValue.values.remove(j-1);&#xD;
	        	        if (insertAt > 0 &amp; j &lt; insertAt) {&#xD;
	            	        insertAt = insertAt - 1;&#xD;
	                	}&#xD;
		            }&#xD;
		        }&#xD;
	&#xD;
	    	    if (insertAt &lt;= 0) {  &#xD;
					// Note: insertAt = -1 indicates an unlimited value of &quot;*&quot;&#xD;
	        	    featureValue.values.addValue(inputValue);&#xD;
		        } else {&#xD;
		            featureValue.values.addValue(insertAt - 1, inputValue);&#xD;
	    	    }&#xD;
		    }&#xD;
		}&#xD;
		else {&#xD;
			// behaves as usual&#xD;
			super.doAction();&#xD;
		}&#xD;
	}	&#xD;
} </body>
              </ownedComment>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_7f6moOYbEeGYZqnbU6eCYw" name="doActionDefault" method="_AlLQQOYcEeGYZqnbU6eCYw" class="_wUwMCN2JEeGnO-TF_1T_iQ"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="_xBSTUOYVEeGYZqnbU6eCYw" name="CS_CreateObjectActionActivation">
            <ownedComment xmi:type="uml:Comment" xmi:id="_UrRfAOYgEeGYZqnbU6eCYw">
              <body>// Imports&#xD;
import CompositeStructuresSyntaxAndSemantics.Semantics.CompositeStructures.StructuredClasses.CS_Object;&#xD;
import CompositeStructuresSyntaxAndSemantics.Semantics.CompositeStructures.StructuredClasses.CS_Reference;&#xD;
import CompositeStructuresSyntaxAndSemantics.Syntax.CompositeStructures.StructuredClasses.Class_;&#xD;
import fUML.Semantics.Actions.IntermediateActions.CreateObjectActionActivation;&#xD;
import fUML.Semantics.Classes.Kernel.Object_;&#xD;
import fUML.Semantics.Classes.Kernel.Reference;&#xD;
import fUML.Syntax.Actions.IntermediateActions.CreateObjectAction;&#xD;
</body>
            </ownedComment>
            <ownedComment xmi:type="uml:Comment" xmi:id="_SKurMOecEeGYZqnbU6eCYw">
              <body>Extends fUML semantics in the sense that the reference placed on the result pin is a CS_Reference (in the case where the instantiated object is a CS_Object) not a Reference. [Note: this extension can be avoided if fUML introduces a factory for Reference]</body>
            </ownedComment>
            <generalization xmi:type="uml:Generalization" xmi:id="_4vXZUOYVEeGYZqnbU6eCYw" specific="_xBSTUOYVEeGYZqnbU6eCYw">
              <general xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Actions-IntermediateActions-CreateObjectActionActivation"/>
            </generalization>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_BEtToOYWEeGYZqnbU6eCYw" name="doAction" specification="_8AcIgOYVEeGYZqnbU6eCYw">
              <language>Java</language>
              <body>		// Create an object with the given classifier (which must be a class) as&#xD;
		// its type, at the same locus as the action activation.&#xD;
		// Place a reference to the object on the result pin of the action.&#xD;
		// Extends fUML semantics in the sense that the reference placed&#xD;
		// on the result pin is a CS_Reference (in the case where the instantiated object&#xD;
		// is a CS_Object) not a Reference&#xD;
		// Note that Locus.instantiate(Class) is extended in this specification&#xD;
		// to produce a CS_Object instead of an Object in the case where the class&#xD;
		// to be instantiated is not a behavior&#xD;
&#xD;
		CreateObjectAction action = (CreateObjectAction) (this.node);&#xD;
&#xD;
		Reference reference ;&#xD;
		Object_ referent =  this.getExecutionLocus().instantiate((Class_) (action.classifier));&#xD;
		if (referent instanceof CS_Object) {&#xD;
			reference = new CS_Reference() ;&#xD;
			((CS_Reference)reference).compositeReferent = (CS_Object)referent ;&#xD;
		}&#xD;
		else {&#xD;
			reference = new Reference() ;&#xD;
		}&#xD;
		reference.referent = referent ;&#xD;
&#xD;
		this.putToken(action.result, reference);</body>
            </ownedBehavior>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_8AcIgOYVEeGYZqnbU6eCYw" name="doAction" method="_BEtToOYWEeGYZqnbU6eCYw" class="_xBSTUOYVEeGYZqnbU6eCYw"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="_eItOUOYWEeGYZqnbU6eCYw" name="CS_ReadSelfActionActivation">
            <ownedComment xmi:type="uml:Comment" xmi:id="_kiPXsOYgEeGYZqnbU6eCYw">
              <body>// Imports&#xD;
import CompositeStructuresSyntaxAndSemantics.Semantics.CompositeStructures.StructuredClasses.CS_Object;&#xD;
import CompositeStructuresSyntaxAndSemantics.Semantics.CompositeStructures.StructuredClasses.CS_Reference;&#xD;
import fUML.Semantics.Actions.IntermediateActions.ReadSelfActionActivation;&#xD;
import fUML.Syntax.Actions.BasicActions.OutputPin;&#xD;
import fUML.Syntax.Actions.IntermediateActions.ReadSelfAction;&#xD;
</body>
            </ownedComment>
            <ownedComment xmi:type="uml:Comment" xmi:id="_hG1eIOecEeGYZqnbU6eCYw">
              <body>Extends fUML semantics in the sense that the reference placed on the result pin is a CS_Reference, not a Reference. [Note: this extension can be avoided if fUML introduces a factory for instantiating Reference]</body>
            </ownedComment>
            <generalization xmi:type="uml:Generalization" xmi:id="_mf_pYOYWEeGYZqnbU6eCYw" specific="_eItOUOYWEeGYZqnbU6eCYw">
              <general xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Actions-IntermediateActions-ReadSelfActionActivation"/>
            </generalization>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_vxuTcOYWEeGYZqnbU6eCYw" name="doAction" specification="_n7xq4OYWEeGYZqnbU6eCYw">
              <language>Java</language>
              <body>		// Get the context object of the activity execution containing this&#xD;
		// action activation and place a reference to it on the result output&#xD;
		// pin.&#xD;
		// Extends fUML semantics in the sense that the reference placed on&#xD;
		// the result pin is a CS_Reference, not a Reference&#xD;
&#xD;
		// Debug.println(&quot;[ReadSelfActionActivation] Start...&quot;);&#xD;
&#xD;
		CS_Reference context = new CS_Reference();&#xD;
		context.referent = this.getExecutionContext();&#xD;
		if (context.referent instanceof CS_Object) {// i.e. alternatively, it can be an execution&#xD;
			context.compositeReferent = (CS_Object)context.referent ;&#xD;
		}&#xD;
&#xD;
		// Debug.println(&quot;[ReadSelfActionActivation] context object = &quot; +&#xD;
		// context.referent);&#xD;
&#xD;
		OutputPin resultPin = ((ReadSelfAction) (this.node)).result;&#xD;
		this.putToken(resultPin, context);&#xD;
</body>
            </ownedBehavior>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_n7xq4OYWEeGYZqnbU6eCYw" name="doAction" method="_vxuTcOYWEeGYZqnbU6eCYw" class="_eItOUOYWEeGYZqnbU6eCYw"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="_v_yAwOYaEeGYZqnbU6eCYw" name="CS_CreateLinkActionActivation">
            <ownedComment xmi:type="uml:Comment" xmi:id="_DplfoOYgEeGYZqnbU6eCYw">
              <body>// Imports&#xD;
import CompositeStructuresSyntaxAndSemantics.Semantics.CompositeStructures.StructuredClasses.CS_Link;&#xD;
import fUML.Semantics.Actions.IntermediateActions.CreateLinkActionActivation;&#xD;
import fUML.Semantics.Classes.Kernel.ExtensionalValue;&#xD;
import fUML.Semantics.Classes.Kernel.ExtensionalValueList;&#xD;
import fUML.Semantics.Classes.Kernel.Link;&#xD;
import fUML.Semantics.Classes.Kernel.UnlimitedNaturalValue;&#xD;
import fUML.Syntax.Actions.IntermediateActions.CreateLinkAction;&#xD;
import fUML.Syntax.Actions.IntermediateActions.LinkEndCreationData;&#xD;
import fUML.Syntax.Actions.IntermediateActions.LinkEndCreationDataList;&#xD;
import fUML.Syntax.Classes.Kernel.Association;&#xD;
</body>
            </ownedComment>
            <ownedComment xmi:type="uml:Comment" xmi:id="_uU2XkOecEeGYZqnbU6eCYw">
              <body>fUML semantics is extended in the sense that a CS_Link is created instead of a Link. [Note: This extension can be avoided if fUML introduces a factory for Link]</body>
            </ownedComment>
            <generalization xmi:type="uml:Generalization" xmi:id="_4HvmYOYaEeGYZqnbU6eCYw" specific="_v_yAwOYaEeGYZqnbU6eCYw">
              <general xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Actions-IntermediateActions-CreateLinkActionActivation"/>
            </generalization>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_EmciwOYbEeGYZqnbU6eCYw" name="doAction" specification="_-lgUAOYaEeGYZqnbU6eCYw">
              <language>Java</language>
              <body>		// Get the extent at the current execution locus of the association for&#xD;
		// which a link is being created.&#xD;
		// Destroy all links that have a value for any end for which&#xD;
		// isReplaceAll is true.&#xD;
		// Create a new link for the association, at the current locus, with the&#xD;
		// given end data values,&#xD;
		// inserted at the given insertAt position (for ordered ends).&#xD;
		// fUML semantics is extended in the sense that a CS_Link is created instead of&#xD;
		// a Link&#xD;
&#xD;
		CreateLinkAction action = (CreateLinkAction) (this.node);&#xD;
		LinkEndCreationDataList endDataList = action.endData;&#xD;
&#xD;
		Association linkAssociation = this.getAssociation();&#xD;
		ExtensionalValueList extent = this.getExecutionLocus().getExtent(&#xD;
				linkAssociation);&#xD;
&#xD;
		Link oldLink = null;&#xD;
		for (int i = 0; i &lt; extent.size(); i++) {&#xD;
			ExtensionalValue value = extent.getValue(i);&#xD;
			Link link = (Link) value;&#xD;
&#xD;
			boolean noMatch = true;&#xD;
			int j = 1;&#xD;
			while (noMatch &amp; j &lt;= endDataList.size()) {&#xD;
				LinkEndCreationData endData = endDataList.getValue(j - 1);&#xD;
				if (endData.isReplaceAll&#xD;
						&amp; this.endMatchesEndData(link, endData)) {&#xD;
					oldLink = link;&#xD;
					link.destroy();&#xD;
					noMatch = false;&#xD;
				}&#xD;
				j = j + 1;&#xD;
			}&#xD;
		}&#xD;
&#xD;
		CS_Link newLink = new CS_Link();&#xD;
		newLink.type = linkAssociation;&#xD;
&#xD;
		// This necessary when setting a feature value with an insertAt position&#xD;
		newLink.locus = this.getExecutionLocus();&#xD;
&#xD;
		for (int i = 0; i &lt; endDataList.size(); i++) {&#xD;
			LinkEndCreationData endData = endDataList.getValue(i);&#xD;
&#xD;
			int insertAt;&#xD;
			if (endData.insertAt == null) {&#xD;
				insertAt = 0;&#xD;
			} else {&#xD;
				insertAt = ((UnlimitedNaturalValue) (this&#xD;
						.takeTokens(endData.insertAt).getValue(0))).value.naturalValue;&#xD;
				if (oldLink != null) {&#xD;
					if (oldLink.getFeatureValue(endData.end).position &lt; insertAt) {&#xD;
						insertAt = insertAt - 1;&#xD;
					}&#xD;
				}&#xD;
			}&#xD;
			newLink.setFeatureValue(endData.end,&#xD;
					this.takeTokens(endData.value), insertAt);&#xD;
		}&#xD;
&#xD;
		this.getExecutionLocus().add(newLink);</body>
            </ownedBehavior>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_-lgUAOYaEeGYZqnbU6eCYw" name="doAction" method="_EmciwOYbEeGYZqnbU6eCYw" class="_v_yAwOYaEeGYZqnbU6eCYw"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="_qh0a8MEeEeKkJbQgitQ3JQ" name="CS_ClearStructuralFeatureActionActivation">
            <generalization xmi:type="uml:Generalization" xmi:id="_t_8HoMEeEeKkJbQgitQ3JQ" specific="_qh0a8MEeEeKkJbQgitQ3JQ">
              <general xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Actions-IntermediateActions-ClearStructuralFeatureActionActivation"/>
            </generalization>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_2YtwcsEeEeKkJbQgitQ3JQ" name="doAction" specification="_2YtwcMEeEeKkJbQgitQ3JQ">
              <language>Java</language>
              <body>		// Get the value of the object input pin.&#xD;
		// If the given feature is an association end, then&#xD;
		// destroy all links that have the object input on the opposite end.&#xD;
		// Otherwise, if the object input is a structured value, then&#xD;
		// set the appropriate feature of the input value to be empty.&#xD;
		ClearStructuralFeatureAction action = (ClearStructuralFeatureAction)(this.node);&#xD;
		StructuralFeature feature = action.structuralFeature;&#xD;
		Association association = this.getAssociation(feature);&#xD;
		Value value = this.takeTokens(action.object).get(0);&#xD;
		if(association != null) {&#xD;
			LinkList links = this.getMatchingLinks(association, feature, value);&#xD;
			for(int i = 0; i &lt; links.size(); i++) {&#xD;
				Link link = links.get(i);&#xD;
				link.destroy();&#xD;
			}&#xD;
		} else if(value instanceof StructuredValue) {&#xD;
			// If the value is a data value, then it must be copied before&#xD;
			// any change is made.&#xD;
			if(!(value instanceof Reference)) {&#xD;
				value = value.copy();&#xD;
			}&#xD;
			else {&#xD;
				// extension to fUML&#xD;
				CS_LinkList linksToDestroy = this.getLinksToDestroy((StructuredValue)value, feature) ;&#xD;
				for (int i = 0 ; i &lt; linksToDestroy.size() ; i++) {&#xD;
					linksToDestroy.get(i).destroy() ;&#xD;
				}&#xD;
				//&#xD;
			}&#xD;
			((StructuredValue)value).setFeatureValue(action.structuralFeature, new ValueList(), 0);&#xD;
		}&#xD;
		if(action.result != null) {&#xD;
			this.putToken(action.result, value);&#xD;
		}</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_v1biQMEhEeKkJbQgitQ3JQ" name="getLinksToDestroy" specification="_Fc2MEMEhEeKkJbQgitQ3JQ">
              <language>Java</language>
              <body>		CS_LinkList linksToDestroy = new CS_LinkList() ;&#xD;
		if (value instanceof CS_Reference) {&#xD;
			CS_Reference context = (CS_Reference)value ;&#xD;
			// Retrieves the feature values for the structural feature associated with this action,&#xD;
			// in the context of this reference &#xD;
			FeatureValue featureValue = context.getFeatureValue(feature) ;&#xD;
			if (feature instanceof Port) {&#xD;
				// all values are interaction points&#xD;
				// any link targeting this interaction point must be destroyed&#xD;
				for (int i = 0 ; i &lt; featureValue.values.size() ; i++) {&#xD;
					CS_InteractionPoint interactionPoint = (CS_InteractionPoint)featureValue.values.get(i) ;&#xD;
					CS_LinkList connectorInstances = context.compositeReferent.getLinks(interactionPoint) ;&#xD;
					for (int j = 0 ; j &lt; connectorInstances.size() ; j++) {&#xD;
						CS_Link link = connectorInstances.get(j) ;&#xD;
						linksToDestroy.add(link) ;&#xD;
					}&#xD;
				}&#xD;
			}&#xD;
			else { // feature is an attribute&#xD;
				// Retrieve all potential link ends,&#xD;
				// separating potential link ends corresponding to the given feature,&#xD;
				// and potential link ends corresponding to other features.&#xD;
				// By &quot;potential link ends&quot;, we refer to the values of a given feature,&#xD;
				// as well as interaction points associated with this value, if any.&#xD;
				ValueList allValuesForFeature = new ValueList() ;&#xD;
				ValueList allOtherValues = new ValueList() ;&#xD;
				for (int i = 0 ; i &lt; context.referent.featureValues.size() ; i++) {&#xD;
					StructuralFeature currentFeature = context.referent.featureValues.get(i).feature ;&#xD;
					ValueList values = this.getPotentialLinkEnds(context, currentFeature) ;&#xD;
					for (int j = 0 ; j &lt; values.size() ; j++) {&#xD;
						Value v = values.get(j) ;&#xD;
						if (currentFeature != feature) {&#xD;
							allOtherValues.add(v) ;&#xD;
						}&#xD;
						else {&#xD;
							allValuesForFeature.add(v) ;&#xD;
						}&#xD;
					}&#xD;
				}&#xD;
				// Retrieves all links available at the locus&#xD;
				ExtensionalValueList extensionalValues = this.getExecutionLocus().extensionalValues ;&#xD;
				CS_LinkList allLinks = new CS_LinkList() ;&#xD;
				for (int i = 0 ; i &lt; extensionalValues.size() ; i ++) {&#xD;
					ExtensionalValue extensionalValue = extensionalValues.get(i) ;&#xD;
					if (extensionalValue instanceof CS_Link) {&#xD;
						allLinks.add((CS_Link)extensionalValue) ;&#xD;
					}&#xD;
				}&#xD;
				// Retrieves links representing connector instances in the context object &#xD;
				for (int i = 0 ; i &lt; allLinks.size() ; i++) {&#xD;
					CS_Link link = allLinks.get(i) ;&#xD;
					boolean linkHasToBeDestroyed = false ;&#xD;
					for (int j = 0 ; j &lt; allValuesForFeature.size() &amp;&amp; !linkHasToBeDestroyed; j++) {&#xD;
						Value v = allValuesForFeature.get(j) ;&#xD;
						StructuralFeature featureForV = link.getFeature(v) ;&#xD;
						if (featureForV != null) {&#xD;
							// Check if feature values of this link for other features&#xD;
							// contains elements identified in allOtherValue&#xD;
							for (int k = 0 ; k &lt; link.featureValues.size() &amp;&amp; !linkHasToBeDestroyed ; k++) {&#xD;
								FeatureValue otherFeatureValue = link.featureValues.get(k) ;&#xD;
								if (otherFeatureValue.feature != featureForV) {&#xD;
									for (int l = 0 ; l &lt; otherFeatureValue.values.size() &amp;&amp; !linkHasToBeDestroyed ; l++) {&#xD;
										for (int m = 0 ; m &lt; allOtherValues.size() &amp;&amp; !linkHasToBeDestroyed ; m++) {&#xD;
											if (otherFeatureValue.values.get(l) == allOtherValues.get(m)) {&#xD;
												linkHasToBeDestroyed = true ;&#xD;
											}&#xD;
										}&#xD;
									}&#xD;
								}&#xD;
							}&#xD;
						}&#xD;
					}&#xD;
					if (linkHasToBeDestroyed) {&#xD;
						linksToDestroy.add(link) ;&#xD;
					}&#xD;
				}&#xD;
			}&#xD;
		}&#xD;
		return linksToDestroy ;</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_7OazwMEhEeKkJbQgitQ3JQ" name="getPotentialLinkEnds" specification="_Hx6mAMEhEeKkJbQgitQ3JQ">
              <language>Java</language>
              <body>		// Retrieves all feature values for the context object for the given feature,&#xD;
		// as well as all interaction point for these values&#xD;
		ValueList potentialLinkEnds = new ValueList() ;&#xD;
		FeatureValue featureValue = context.getFeatureValue(feature) ;&#xD;
		for (int i = 0 ; i &lt; featureValue.values.size() ; i++) {&#xD;
			Value v = featureValue.values.get(i) ;&#xD;
			potentialLinkEnds.add(v) ;&#xD;
			if (v instanceof CS_Reference) {&#xD;
				// add all interaction points associated with v&#xD;
				for (int j = 0 ; j &lt; ((CS_Reference)v).referent.featureValues.size() ; j++) {&#xD;
					if (((CS_Reference)v).referent.featureValues.get(j).feature instanceof Port) {&#xD;
						ValueList interactionPoints = (((CS_Reference)v).referent.featureValues.get(j)).values ;&#xD;
						for (int k = 0 ; k &lt; interactionPoints.size() ; k++) {&#xD;
							potentialLinkEnds.add(interactionPoints.get(k)) ;&#xD;
						}&#xD;
					}&#xD;
				}&#xD;
			}&#xD;
		}&#xD;
		return potentialLinkEnds ;</body>
            </ownedBehavior>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_2YtwcMEeEeKkJbQgitQ3JQ" name="doAction" visibility="public" method="_2YtwcsEeEeKkJbQgitQ3JQ" class="_qh0a8MEeEeKkJbQgitQ3JQ">
              <ownedComment xmi:type="uml:Comment" xmi:id="_2YtwccEeEeKkJbQgitQ3JQ">
                <body>&lt;&lt;TextualRepresentation>>public doAction () { &#xD;
	// If the feature is a port and the input value to be added is a Reference,&#xD;
	// Replaces this Reference by an InteractionPoint, and then behaves &#xD;
	// as usual.&#xD;
	// If the feature is not a port, behaves as usual&#xD;
&#xD;
	AddStructuralFeatureValueAction action = &#xD;
							(AddStructuralFeatureValueAction)(this.node);&#xD;
	StructuralFeature feature = action.structuralFeature;&#xD;
&#xD;
	if (! (feature instanceof Port)) {&#xD;
		// Behaves as usual&#xD;
		super.doAction() ;&#xD;
	}&#xD;
	else {&#xD;
		ValueList inputValues = this.takeTokens(action.value);&#xD;
		// NOTE: Multiplicity of the value input pin is required to be 1..1.&#xD;
		Value inputValue = inputValues.getValue(0);&#xD;
		if (inputValue instanceof Reference) {&#xD;
			// First constructs an InteractionPoint from the inputValue&#xD;
			Reference reference = (Reference)inputValue ;&#xD;
			InteractionPoint interactionPoint = new InteractionPoint() ;&#xD;
			interactionPoint.referent = reference.referent ;&#xD;
			interactionPoint.definingPort = (Port)feature ;&#xD;
			// The value on action.object is necessarily instanceof &#xD;
			// ReferenceToCompositeStructure (otherwise, the feature cannot &#xD;
			// be a port)&#xD;
			ReferenceToCompositeStructure owner = &#xD;
									(ReferenceToCompositeStructure)this&#xD;
													.takeTokens(action.object).getValue(0);&#xD;
			interactionPoint.owner = owner ;&#xD;
			// Then replaces the Reference by an InteractionPoint &#xD;
			// in the inputValues&#xD;
			inputValues.remove(0) ;&#xD;
			inputValues.addValue(0,interactionPoint) ;&#xD;
			// Finally concludes with usual fUML behavior of &#xD;
			// AddStructuralFeatureValueAction (i.e., the usual behavior when &#xD;
			// the value on action.object pin is a StructuredValue)&#xD;
			Integer insertAt = 0;&#xD;
			if (action.insertAt != null) {&#xD;
	    		insertAt = ((UnlimitedNaturalValue)this&#xD;
												.takeTokens(action.insertAt).getValue(0))&#xD;
												.value.naturalValue;&#xD;
			}&#xD;
			if (action.isReplaceAll) {&#xD;
	        	owner.setFeatureValue(feature, inputValues, 0);&#xD;
	    	} else {&#xD;
	        	FeatureValue featureValue = owner.getFeatureValue(feature);&#xD;
	&#xD;
		        if (featureValue.values.size() > 0 &amp; insertAt == 0 ) {&#xD;
		            // If there is no insertAt pin, then the structural feature must &#xD;
					// be unordered, and the insertion position is immaterial.&#xD;
	    	        insertAt = ((ChoiceStrategy)this.getExecutionLocus()&#xD;
												.factory.getStrategy(&quot;choice&quot;))&#xD;
												.choose(featureValue.values.size());&#xD;
	        	}&#xD;
	        	if (feature.multiplicityElement.'isUnique') {&#xD;
	            	// Remove any existing value that duplicates the input value&#xD;
		            Integer j = position(inputValue, featureValue.values, 1);&#xD;
		            if (j > 0) {&#xD;
	    	            featureValue.values.remove(j-1);&#xD;
	        	        if (insertAt > 0 &amp; j &lt; insertAt) {&#xD;
	            	        insertAt = insertAt - 1;&#xD;
	                	}&#xD;
		            }&#xD;
		        }&#xD;
	&#xD;
	    	    if (insertAt &lt;= 0) {  &#xD;
					// Note: insertAt = -1 indicates an unlimited value of &quot;*&quot;&#xD;
	        	    featureValue.values.addValue(inputValue);&#xD;
		        } else {&#xD;
		            featureValue.values.addValue(insertAt - 1, inputValue);&#xD;
	    	    }&#xD;
		    }&#xD;
		}&#xD;
		else {&#xD;
			// behaves as usual&#xD;
			super.doAction();&#xD;
		}&#xD;
	}	&#xD;
} </body>
              </ownedComment>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_Fc2MEMEhEeKkJbQgitQ3JQ" name="getLinksToDestroy" method="_v1biQMEhEeKkJbQgitQ3JQ" class="_qh0a8MEeEeKkJbQgitQ3JQ">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_SP_ucMEhEeKkJbQgitQ3JQ" name="value">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Classes-Kernel-StructuredValue"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_WIlwoMEhEeKkJbQgitQ3JQ" name="feature">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-StructuralFeature"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_ZdCj8MEhEeKkJbQgitQ3JQ" name="result" type="_wUyA5N2JEeGnO-TF_1T_iQ" direction="return">
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Fe92gMEiEeKkJbQgitQ3JQ"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_FfHngMEiEeKkJbQgitQ3JQ" value="*"/>
              </ownedParameter>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_Hx6mAMEhEeKkJbQgitQ3JQ" name="getPotentialLinkEnds" method="_7OazwMEhEeKkJbQgitQ3JQ" class="_qh0a8MEeEeKkJbQgitQ3JQ">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_geoXYMEhEeKkJbQgitQ3JQ" name="context" type="_wUwMMt2JEeGnO-TF_1T_iQ"/>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_j4cL0MEhEeKkJbQgitQ3JQ" name="feature">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-StructuralFeature"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_peiRoMEhEeKkJbQgitQ3JQ" name="result" direction="return">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Classes-Kernel-Value"/>
              </ownedParameter>
            </ownedOperation>
          </packagedElement>
        </packagedElement>
        <packagedElement xmi:type="uml:Package" xmi:id="_1cTYAOYTEeGYZqnbU6eCYw" name="CompleteActions">
          <packagedElement xmi:type="uml:Class" xmi:id="_B_0tgOYVEeGYZqnbU6eCYw" name="CS_ReadExtentActionActivation">
            <ownedComment xmi:type="uml:Comment" xmi:id="_1wMjYOYeEeGYZqnbU6eCYw">
              <body>// Imports&#xD;
import CompositeStructuresSyntaxAndSemantics.Semantics.CompositeStructures.StructuredClasses.CS_Object;&#xD;
import CompositeStructuresSyntaxAndSemantics.Semantics.CompositeStructures.StructuredClasses.CS_Reference;&#xD;
import fUML.Semantics.Actions.CompleteActions.ReadExtentActionActivation;&#xD;
import fUML.Semantics.Classes.Kernel.ExtensionalValueList;&#xD;
import fUML.Semantics.Classes.Kernel.Object_;&#xD;
import fUML.Semantics.Classes.Kernel.Reference;&#xD;
import fUML.Semantics.Classes.Kernel.Value;&#xD;
import fUML.Semantics.Classes.Kernel.ValueList;&#xD;
import fUML.Syntax.Actions.CompleteActions.ReadExtentAction;</body>
            </ownedComment>
            <ownedComment xmi:type="uml:Comment" xmi:id="_8j2M4OecEeGYZqnbU6eCYw">
              <body>Extends default fUML semantics in the sense that produced tokens contain CS_References instead of References, in the case where the object is a CS_Object. [Note: This extension can be avoided if fUML introduces a factory for Reference]</body>
            </ownedComment>
            <generalization xmi:type="uml:Generalization" xmi:id="_GfLNsOYVEeGYZqnbU6eCYw" specific="_B_0tgOYVEeGYZqnbU6eCYw">
              <general xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Actions-CompleteActions-ReadExtentActionActivation"/>
            </generalization>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_SKvc8OYVEeGYZqnbU6eCYw" name="doAction" specification="_KW8JcOYVEeGYZqnbU6eCYw">
              <language>Java</language>
              <body>		// Get the extent, at the current execution locus, of the classifier&#xD;
		// (which must be a class) identified in the action.&#xD;
		// Place references to the resulting set of objects on the result pin.&#xD;
		// Extends default fUML semantics in the sense that produced tokens contain&#xD;
		// CS_References instead of References, in the case where the object is a&#xD;
		// CS_Object&#xD;
&#xD;
		ReadExtentAction action = (ReadExtentAction) (this.node);&#xD;
		ExtensionalValueList objects = this.getExecutionLocus().getExtent(&#xD;
				action.classifier);&#xD;
&#xD;
		ValueList references = new ValueList();&#xD;
		for (int i = 0; i &lt; objects.size(); i++) {&#xD;
			Value object = objects.getValue(i);&#xD;
			Reference reference = null ;&#xD;
			if (object instanceof CS_Object) {&#xD;
				reference = new CS_Reference() ;&#xD;
				((CS_Reference)reference).compositeReferent = (CS_Object)object ;&#xD;
			}&#xD;
			else {&#xD;
				reference = new Reference() ;&#xD;
			}&#xD;
			reference.referent = (Object_) object;&#xD;
			references.addValue(reference);&#xD;
		}&#xD;
&#xD;
		this.putTokens(action.result, references);</body>
            </ownedBehavior>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_KW8JcOYVEeGYZqnbU6eCYw" name="doAction" method="_SKvc8OYVEeGYZqnbU6eCYw" class="_B_0tgOYVEeGYZqnbU6eCYw"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="_xomMgDKBEeOOxr3mXNMmgg" name="CS_ReadIsClassifiedObjectActionActivation">
            <generalization xmi:type="uml:Generalization" xmi:id="_YfUlgDKCEeOOxr3mXNMmgg" specific="_xomMgDKBEeOOxr3mXNMmgg">
              <general xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Actions-CompleteActions-ReadIsClassifiedObjectActionActivation"/>
            </generalization>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_cca3wDKDEeOOxr3mXNMmgg" name="checkAllParents" specification="_8ehNMDKBEeOOxr3mXNMmgg">
              <language>JAVA</language>
              <body>		// If the given classifier is not an Interface, behaves like in fUML.&#xD;
		// Otherwise, check if the given type (or one of its direct or indirect ancestors)&#xD;
		// has an InterfaceRealization relationships with the given classifier.&#xD;
		boolean matched = false ;&#xD;
		if (!(classifier instanceof Interface)) {&#xD;
			matched = super.checkAllParents(type, classifier);&#xD;
		}&#xD;
		else if (! (type instanceof Class_)){&#xD;
			matched = false ; &#xD;
		}&#xD;
		else if (this.realizesInterface((Class_)type, (Interface)classifier)) {&#xD;
			matched = true ;&#xD;
		}&#xD;
		else {&#xD;
			ClassifierList directParents = type.general;&#xD;
			int i = 1;&#xD;
			while(!matched &amp; i &lt;= directParents.size()) {&#xD;
				Classifier directParent = directParents.get(i - 1);&#xD;
				matched = this.checkAllParents(directParent, classifier);&#xD;
				i = i + 1;&#xD;
			}&#xD;
		}&#xD;
		return matched ;</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_kSbxwDKDEeOOxr3mXNMmgg" name="realizesInterface" specification="_BOhYgDKCEeOOxr3mXNMmgg">
              <language>JAVA</language>
              <body>		// Checks if the given type has an InterfaceRealization relationship&#xD;
		// with the given interface or a descendant of the interface.&#xD;
		InterfaceRealizationList realizations = type.interfaceRealization ;&#xD;
		boolean realized = false ;&#xD;
		int i = 1 ;&#xD;
		while (i &lt;= realizations.size() &amp;&amp; !realized) {&#xD;
			InterfaceRealization realization = realizations.get(i - 1) ;&#xD;
			Interface contract = realization.contract ;&#xD;
			if (contract == interface_) {&#xD;
				realized = true ;&#xD;
			}&#xD;
			else if (this.isDescendant(contract, interface_)) {&#xD;
				realized = true ;&#xD;
			}&#xD;
			i = i + 1 ;&#xD;
		}&#xD;
		return realized ;</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_veOUwDKDEeOOxr3mXNMmgg" name="isDescendant" specification="_NGQbgDKCEeOOxr3mXNMmgg">
              <language>JAVA</language>
              <body>		// Checks if the given contract is a descendant of the given interface_&#xD;
		boolean matched = false ;&#xD;
		ClassifierList descendants = contract.general ;&#xD;
		int i = 1 ;&#xD;
		while (i &lt;= descendants.size() &amp;&amp; ! matched) {&#xD;
			if (descendants.getValue(i-1) instanceof Interface) {&#xD;
				Interface descendant = (Interface)descendants.getValue(i-1) ;&#xD;
				if (descendant == interface_) {&#xD;
					matched = true ;&#xD;
				}&#xD;
				else {&#xD;
					matched = this.isDescendant(descendant, interface_) ;&#xD;
				}&#xD;
			}&#xD;
			i = i + 1 ;&#xD;
		}&#xD;
		return matched ;</body>
            </ownedBehavior>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_8ehNMDKBEeOOxr3mXNMmgg" name="checkAllParents" method="_cca3wDKDEeOOxr3mXNMmgg" class="_xomMgDKBEeOOxr3mXNMmgg">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_8ehNMjKBEeOOxr3mXNMmgg" name="type">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-Classifier"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_8ehNMzKBEeOOxr3mXNMmgg" name="classifier">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-Classifier"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_8ehNNDKBEeOOxr3mXNMmgg" name="ReturnResult" direction="return">
                <type xmi:type="uml:PrimitiveType" href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
              </ownedParameter>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_BOhYgDKCEeOOxr3mXNMmgg" name="realizesInterface" method="_kSbxwDKDEeOOxr3mXNMmgg" class="_xomMgDKBEeOOxr3mXNMmgg">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_GbYe8DKCEeOOxr3mXNMmgg" name="type" type="_LdpeR9zBEeGru4CffneBug"/>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_Io2cEDKCEeOOxr3mXNMmgg" name="interface_" type="_vBjwkNzDEeGru4CffneBug"/>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_LWMMEDKCEeOOxr3mXNMmgg" name="result" direction="return">
                <type xmi:type="uml:PrimitiveType" href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
              </ownedParameter>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_NGQbgDKCEeOOxr3mXNMmgg" name="isDescendant" method="_veOUwDKDEeOOxr3mXNMmgg" class="_xomMgDKBEeOOxr3mXNMmgg">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_QPv8ADKCEeOOxr3mXNMmgg" name="contact" type="_vBjwkNzDEeGru4CffneBug"/>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_SD-SsDKCEeOOxr3mXNMmgg" name="interface_" type="_vBjwkNzDEeGru4CffneBug"/>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_UASOYDKCEeOOxr3mXNMmgg" name="result" direction="return">
                <type xmi:type="uml:PrimitiveType" href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
              </ownedParameter>
            </ownedOperation>
          </packagedElement>
        </packagedElement>
      </packagedElement>
      <packagedElement xmi:type="uml:Package" xmi:id="_l2SVcN-9EeGnO-TF_1T_iQ" name="Loci">
        <packagedElement xmi:type="uml:Package" xmi:id="_3NM98N-9EeGnO-TF_1T_iQ" name="LociL3">
          <packagedElement xmi:type="uml:Class" xmi:id="_ScbvYN--EeGnO-TF_1T_iQ" name="CS_ExecutionFactory">
            <ownedComment xmi:type="uml:Comment" xmi:id="_IYqJsOH1EeG4NZyomhkW-A">
              <body>// Imports&#xD;
import CompositeStructuresSyntaxAndSemantics.Semantics.Actions.CompleteActions.CS_ReadExtentActionActivation;&#xD;
import CompositeStructuresSyntaxAndSemantics.Semantics.Actions.IntermediateActions.CS_AddStructuralFeatureValueActionActivation;&#xD;
import CompositeStructuresSyntaxAndSemantics.Semantics.Actions.IntermediateActions.CS_CreateLinkActionActivation;&#xD;
import CompositeStructuresSyntaxAndSemantics.Semantics.Actions.IntermediateActions.CS_CreateObjectActionActivation;&#xD;
import CompositeStructuresSyntaxAndSemantics.Semantics.Actions.IntermediateActions.CS_ReadSelfActionActivation;&#xD;
import CompositeStructuresSyntaxAndSemantics.Semantics.Classes.Kernel.CS_InstanceValueEvaluation;&#xD;
import CompositeStructuresSyntaxAndSemantics.Semantics.CompositeStructures.InvocationActions.CS_AcceptEventActionActivation;&#xD;
import CompositeStructuresSyntaxAndSemantics.Semantics.CompositeStructures.InvocationActions.CS_CallOperationActionActivation;&#xD;
import CompositeStructuresSyntaxAndSemantics.Semantics.CompositeStructures.InvocationActions.CS_SendSignalActionActivation;&#xD;
import fUML.Semantics.Loci.LociL1.SemanticVisitor;&#xD;
import fUML.Semantics.Loci.LociL3.ExecutionFactoryL3;&#xD;
import fUML.Syntax.Actions.BasicActions.CallOperationAction;&#xD;
import fUML.Syntax.Actions.BasicActions.SendSignalAction;&#xD;
import fUML.Syntax.Actions.CompleteActions.AcceptEventAction;&#xD;
import fUML.Syntax.Actions.CompleteActions.ReadExtentAction;&#xD;
import fUML.Syntax.Actions.IntermediateActions.AddStructuralFeatureValueAction;&#xD;
import fUML.Syntax.Actions.IntermediateActions.CreateLinkAction;&#xD;
import fUML.Syntax.Actions.IntermediateActions.CreateObjectAction;&#xD;
import fUML.Syntax.Actions.IntermediateActions.ReadSelfAction;&#xD;
import fUML.Syntax.Classes.Kernel.Element;&#xD;
import fUML.Syntax.Classes.Kernel.InstanceValue;&#xD;
</body>
            </ownedComment>
            <ownedComment xmi:type="uml:Comment" xmi:id="_IkWKUOedEeGYZqnbU6eCYw">
              <body>Extends fUML semantics in the sense that newly introduced semantic visitors are instantiated instead of fUML visitors.</body>
            </ownedComment>
            <generalization xmi:type="uml:Generalization" xmi:id="_vavRwN--EeGnO-TF_1T_iQ" specific="_ScbvYN--EeGnO-TF_1T_iQ">
              <general xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Loci-LociL3-ExecutionFactoryL3"/>
            </generalization>
            <ownedAttribute xmi:type="uml:Property" xmi:id="_9_4-kMFdEeKkJbQgitQ3JQ" name="appliedProfiles" association="_9_4-k8FdEeKkJbQgitQ3JQ">
              <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-Package"/>
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9_4-kcFdEeKkJbQgitQ3JQ"/>
              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_9_4-ksFdEeKkJbQgitQ3JQ" value="*"/>
            </ownedAttribute>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_7hxIEOH6EeGD-8FkSWTrOg" name="instantiateVisitor" specification="_WWIk0N--EeGnO-TF_1T_iQ">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_7h4c0OH6EeGD-8FkSWTrOg" name="element">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-Element"/>
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_7h65EOH6EeGD-8FkSWTrOg" value="1"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_7h8HMOH6EeGD-8FkSWTrOg" value="1"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_7iEqEOH6EeGD-8FkSWTrOg" name="result">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Loci-LociL1-SemanticVisitor"/>
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_7iHGUOH6EeGD-8FkSWTrOg" value="1"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_7iIUcOH6EeGD-8FkSWTrOg" value="1"/>
              </ownedParameter>
              <language>Java</language>
              <body>		// Extends fUML semantics in the sense that newly introduced &#xD;
		// semantic visitors are instantiated instead of fUML visitors&#xD;
&#xD;
		// Extends fUML semantics in the sense that newly introduced &#xD;
		// semantic visitors are instantiated instead of fUML visitors&#xD;
&#xD;
		SemanticVisitor visitor = null ;&#xD;
		if (element instanceof ReadExtentAction) {&#xD;
			visitor =new CS_ReadExtentActionActivation() ;&#xD;
		}&#xD;
		else if (element instanceof ReadIsClassifiedObjectAction) {&#xD;
			visitor = new CS_ReadIsClassifiedObjectActionActivation() ;&#xD;
		}&#xD;
		else if (element instanceof AddStructuralFeatureValueAction) {&#xD;
			visitor = new CS_AddStructuralFeatureValueActionActivation() ;&#xD;
		}&#xD;
		else if (element instanceof ClearStructuralFeatureAction) {&#xD;
			visitor = new CS_ClearStructuralFeatureValueActionActivation() ;&#xD;
		}&#xD;
		else if (element instanceof CreateLinkAction) {&#xD;
			visitor = new CS_CreateLinkActionActivation() ;&#xD;
		}&#xD;
		else if (element instanceof CreateObjectAction) {&#xD;
			visitor = new CS_CreateObjectActionActivation() ;&#xD;
		}&#xD;
		else if (element instanceof ReadSelfAction) {&#xD;
			visitor = new CS_ReadSelfActionActivation() ;&#xD;
		}&#xD;
		else if (element instanceof InstanceValue) {&#xD;
			visitor = new CS_InstanceValueEvaluation() ;&#xD;
		}&#xD;
		else if (element instanceof AcceptEventAction) {&#xD;
			visitor = new CS_AcceptEventActionActivation() ;&#xD;
		}&#xD;
		else if (element instanceof CallOperationAction) {&#xD;
			visitor = new CS_CallOperationActionActivation() ;&#xD;
		}&#xD;
		else if (element instanceof SendSignalAction) {&#xD;
			visitor = new CS_SendSignalActionActivation() ;&#xD;
		}&#xD;
		else if (element instanceof OpaqueExpression) {&#xD;
			visitor = new CS_OpaqueExpressionEvaluation() ;&#xD;
		}&#xD;
		else {&#xD;
			visitor = super.instantiateVisitor(element) ;&#xD;
		}&#xD;
		return visitor ;</body>
            </ownedBehavior>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_WWIk0N--EeGnO-TF_1T_iQ" name="instantiateVisitor" visibility="public" method="_7hxIEOH6EeGD-8FkSWTrOg" class="_ScbvYN--EeGnO-TF_1T_iQ">
              <ownedComment xmi:type="uml:Comment" xmi:id="_7iJikOH6EeGD-8FkSWTrOg">
                <body>&lt;&lt;TextualRepresentation>>public instantiateVisitor (in element : Element ) : SemanticVisitor {
	// TODO
	return super.instantiateVisitor(element) ;
}</body>
              </ownedComment>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_7hzkUOH6EeGD-8FkSWTrOg" name="element">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-Element"/>
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_7h1ZgOH6EeGD-8FkSWTrOg" value="1"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_7h2noOH6EeGD-8FkSWTrOg" value="1"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_7h9VUOH6EeGD-8FkSWTrOg" name="result" direction="return">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Loci-LociL1-SemanticVisitor"/>
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_7h-jcOH6EeGD-8FkSWTrOg" value="1"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_7iBmwOH6EeGD-8FkSWTrOg" value="1"/>
              </ownedParameter>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_D4tBgMFdEeKkJbQgitQ3JQ" name="getStereotypeClass" class="_ScbvYN--EeGnO-TF_1T_iQ">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_LBb-wMFdEeKkJbQgitQ3JQ" name="profileName">
                <type xmi:type="uml:PrimitiveType" href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#String"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_NaFRIMFdEeKkJbQgitQ3JQ" name="stereotypeName">
                <type xmi:type="uml:PrimitiveType" href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#String"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_RVzf0MFdEeKkJbQgitQ3JQ" name="result" direction="return">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-Class"/>
              </ownedParameter>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_EaLW4MFdEeKkJbQgitQ3JQ" name="getStereotypeApplication" class="_ScbvYN--EeGnO-TF_1T_iQ">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_Xvha8MFdEeKkJbQgitQ3JQ" name="stereotype">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-Class"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_afFYgMFdEeKkJbQgitQ3JQ" name="element">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-Element"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_deZpUMFdEeKkJbQgitQ3JQ" name="result" direction="return">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Classes-Kernel-Object"/>
              </ownedParameter>
            </ownedOperation>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="_XUMGMOYZEeGYZqnbU6eCYw" name="CS_Executor">
            <ownedComment xmi:type="uml:Comment" xmi:id="_e1ezwOYhEeGYZqnbU6eCYw">
              <body>// Imports&#xD;
import CompositeStructuresSyntaxAndSemantics.Semantics.CompositeStructures.StructuredClasses.CS_Object;&#xD;
import CompositeStructuresSyntaxAndSemantics.Semantics.CompositeStructures.StructuredClasses.CS_Reference;&#xD;
import CompositeStructuresSyntaxAndSemantics.Syntax.CompositeStructures.StructuredClasses.Class_;&#xD;
import fUML.Debug;&#xD;
import fUML.Semantics.Classes.Kernel.Object_;&#xD;
import fUML.Semantics.Classes.Kernel.Reference;&#xD;
import fUML.Semantics.CommonBehaviors.BasicBehaviors.ParameterValueList;&#xD;
import fUML.Semantics.Loci.LociL1.Executor;&#xD;
</body>
            </ownedComment>
            <ownedComment xmi:type="uml:Comment" xmi:id="_Tr3RUOedEeGYZqnbU6eCYw">
              <body>fUML semantics is extended in the sense that when the instantiated object is a CS_Object, a CS_Reference is returned (instead of a Reference). [Note: this can be avoided if fUML introduces a factory for Reference]</body>
            </ownedComment>
            <generalization xmi:type="uml:Generalization" xmi:id="_CntaoOYaEeGYZqnbU6eCYw" specific="_XUMGMOYZEeGYZqnbU6eCYw">
              <general xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Loci-LociL1-Executor"/>
            </generalization>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_IANJUOYaEeGYZqnbU6eCYw" name="start" specification="_f0MYYOYZEeGYZqnbU6eCYw">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_PNeoUOYaEeGYZqnbU6eCYw" name="type">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-Class"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_QpBZQOYaEeGYZqnbU6eCYw" name="inputs">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-CommonBehaviors-BasicBehaviors-ParameterValue"/>
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_YD-u8OYaEeGYZqnbU6eCYw"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_YEE1kOYaEeGYZqnbU6eCYw" value="*"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_Rz8UQOYaEeGYZqnbU6eCYw" name="result" direction="return">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Classes-Kernel-Reference"/>
              </ownedParameter>
              <language>Java</language>
              <body>		// Instantiate the given class and start any behavior of the resulting&#xD;
		// object.&#xD;
		// (The behavior of an object includes any classifier behaviors for an&#xD;
		// active object or the class of the object itself, if that is a&#xD;
		// behavior.)&#xD;
		// fUML semantics is extended in the sense that when the instantiated object&#xD;
		// is a CS_Object, a CS_Reference is returned (instead of a Reference)&#xD;
&#xD;
		Debug.println(&quot;[start] Starting &quot; + type.name + &quot;...&quot;);&#xD;
&#xD;
		Object_ object = this.locus.instantiate(type);&#xD;
&#xD;
		Debug.println(&quot;[start] Object = &quot; + object);&#xD;
		object.startBehavior(type, inputs);&#xD;
&#xD;
		Reference reference ;&#xD;
		if (object instanceof CS_Object) {&#xD;
			reference = new CS_Reference();&#xD;
			((CS_Reference)reference).compositeReferent = (CS_Object)object ;&#xD;
		}&#xD;
		else {&#xD;
			reference = new Reference() ;&#xD;
		}&#xD;
		reference.referent = object;&#xD;
&#xD;
		return reference;&#xD;
</body>
            </ownedBehavior>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_f0MYYOYZEeGYZqnbU6eCYw" name="start" method="_IANJUOYaEeGYZqnbU6eCYw" class="_XUMGMOYZEeGYZqnbU6eCYw">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_kEaQYOYZEeGYZqnbU6eCYw" name="type">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-Class"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_lLvE0OYZEeGYZqnbU6eCYw" name="inputs">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-CommonBehaviors-BasicBehaviors-ParameterValue"/>
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_1sSGAOYZEeGYZqnbU6eCYw"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1sZawOYZEeGYZqnbU6eCYw" value="*"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_mNRaUOYZEeGYZqnbU6eCYw" name="result" direction="return">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Classes-Kernel-Reference"/>
              </ownedParameter>
            </ownedOperation>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="_m8YmQOYdEeGYZqnbU6eCYw" name="CS_Locus">
            <ownedComment xmi:type="uml:Comment" xmi:id="_op7JUOYhEeGYZqnbU6eCYw">
              <body>// Imports&#xD;
import CompositeStructuresSyntaxAndSemantics.Semantics.CompositeStructures.StructuredClasses.CS_Object;&#xD;
import CompositeStructuresSyntaxAndSemantics.Syntax.CompositeStructures.StructuredClasses.Class_;&#xD;
import fUML.Semantics.Classes.Kernel.Object_;&#xD;
import fUML.Semantics.Loci.LociL1.Locus;&#xD;
import fUML.Syntax.CommonBehaviors.BasicBehaviors.Behavior;&#xD;
</body>
            </ownedComment>
            <ownedComment xmi:type="uml:Comment" xmi:id="_ex6_wOedEeGYZqnbU6eCYw">
              <body>Extends fUML semantics by instantiating a CS_Object in the case where type is not a Behavior. Otherwise behaves like in fUML.</body>
            </ownedComment>
            <generalization xmi:type="uml:Generalization" xmi:id="_sXs_cOYdEeGYZqnbU6eCYw" specific="_m8YmQOYdEeGYZqnbU6eCYw">
              <general xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Loci-LociL1-Locus"/>
            </generalization>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_I1dZgOYeEeGYZqnbU6eCYw" name="instantiate" specification="_v1ptAOYdEeGYZqnbU6eCYw">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_ME-pgOYeEeGYZqnbU6eCYw" name="type">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-Class"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_Nen9AOYeEeGYZqnbU6eCYw" name="result" direction="return">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Classes-Kernel-Object"/>
              </ownedParameter>
              <language>Java</language>
              <body>		// Extends fUML semantics by instantiating a CS_Object&#xD;
		// in the case where type is not a Behavior.&#xD;
		// Otherwise behaves like in fUML&#xD;
&#xD;
		Object_ object = null;&#xD;
&#xD;
		if (type instanceof Behavior) {&#xD;
			object = super.instantiate(type);&#xD;
		} else {&#xD;
			object = new CS_Object() ;&#xD;
			object.types.addValue(type);&#xD;
			object.createFeatureValues();&#xD;
			this.add(object);&#xD;
		}&#xD;
&#xD;
		return object;</body>
            </ownedBehavior>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_v1ptAOYdEeGYZqnbU6eCYw" name="instantiate" method="_I1dZgOYeEeGYZqnbU6eCYw" class="_m8YmQOYdEeGYZqnbU6eCYw">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_3gsGEOYdEeGYZqnbU6eCYw" name="type">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-Class"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_48xCgOYdEeGYZqnbU6eCYw" name="result" direction="return">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Classes-Kernel-Object"/>
              </ownedParameter>
            </ownedOperation>
          </packagedElement>
          <packagedElement xmi:type="uml:Association" xmi:id="_9_4-k8FdEeKkJbQgitQ3JQ" name="cS_ExecutionFactory_package_1" memberEnd="_9_4-lMFdEeKkJbQgitQ3JQ _9_4-kMFdEeKkJbQgitQ3JQ">
            <ownedEnd xmi:type="uml:Property" xmi:id="_9_4-lMFdEeKkJbQgitQ3JQ" name="cS_ExecutionFactory" type="_ScbvYN--EeGnO-TF_1T_iQ" owningAssociation="_9_4-k8FdEeKkJbQgitQ3JQ" association="_9_4-k8FdEeKkJbQgitQ3JQ">
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9_4-lcFdEeKkJbQgitQ3JQ" value="1"/>
              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_9_4-lsFdEeKkJbQgitQ3JQ" value="1"/>
            </ownedEnd>
          </packagedElement>
        </packagedElement>
      </packagedElement>
      <packagedElement xmi:type="uml:Package" xmi:id="_Kr7yEN-_EeGnO-TF_1T_iQ" name="L2">
        <packageMerge xmi:type="uml:PackageMerge" xmi:id="_JO1sgN_AEeGnO-TF_1T_iQ" mergedPackage="_YlZoMN2OEeGnO-TF_1T_iQ" receivingPackage="_Kr7yEN-_EeGnO-TF_1T_iQ"/>
        <packageMerge xmi:type="uml:PackageMerge" xmi:id="_KSfh4N_AEeGnO-TF_1T_iQ" mergedPackage="_d7j0kN2OEeGnO-TF_1T_iQ" receivingPackage="_Kr7yEN-_EeGnO-TF_1T_iQ"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Package" xmi:id="_wNwIkOC6EeGcc4S1CmuFHA" name="L3"/>
      <packagedElement xmi:type="uml:Package" xmi:id="_r1xDAOVMEeGVLZOJyKihvQ" name="CommonBehaviors">
        <packagedElement xmi:type="uml:Package" xmi:id="_wjjn0OVMEeGVLZOJyKihvQ" name="Communications">
          <packagedElement xmi:type="uml:Class" xmi:id="_wUwL2N2JEeGnO-TF_1T_iQ" name="CS_DispatchOperationOfInterfaceStrategy">
            <ownedComment xmi:type="uml:Comment" xmi:id="_wUwL2d2JEeGnO-TF_1T_iQ">
              <body>Extends fUML RedefinitionBasedDispatchStrategy to account for the fact that the invoked operation may belong to an interface, and not to one of the classifiers of the target object (NOTE: Not mandatory to have it defined as an extension of RedefinitionBasedDispatchStrategy. Could be defined as direct specialization of DispatchStrategy)</body>
            </ownedComment>
            <ownedComment xmi:type="uml:Comment" xmi:id="_WaH5UOH1EeG4NZyomhkW-A">
              <body>// Imports&#xD;
import CompositeStructuresSyntaxAndSemantics.Syntax.Classes.Interfaces.Operation;&#xD;
import CompositeStructuresSyntaxAndSemantics.Syntax.CommonBehaviors.Communications.Interface;&#xD;
import fUML.Semantics.Classes.Kernel.RedefinitionBasedDispatchStrategy;&#xD;
import fUML.Syntax.Classes.Kernel.Parameter;&#xD;
import fUML.Syntax.Classes.Kernel.ParameterList;&#xD;
</body>
            </ownedComment>
            <generalization xmi:type="uml:Generalization" xmi:id="_wUwL3d2JEeGnO-TF_1T_iQ" specific="_wUwL2N2JEeGnO-TF_1T_iQ">
              <general xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Classes-Kernel-RedefinitionBasedDispatchStrategy"/>
            </generalization>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_wUwL6N2JEeGnO-TF_1T_iQ" name="operationsMatch" specification="_wUwL_d2JEeGnO-TF_1T_iQ">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_wUwL6d2JEeGnO-TF_1T_iQ" name="ownedOperation">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-Operation"/>
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUwL6t2JEeGnO-TF_1T_iQ" value="1"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUwL692JEeGnO-TF_1T_iQ" value="1"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_wUwL7N2JEeGnO-TF_1T_iQ" name="baseOperation">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-Operation"/>
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUwL7d2JEeGnO-TF_1T_iQ" value="1"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUwL7t2JEeGnO-TF_1T_iQ" value="1"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_wUwL792JEeGnO-TF_1T_iQ" name="result">
                <type xmi:type="uml:PrimitiveType" href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUwL8N2JEeGnO-TF_1T_iQ" value="1"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUwL8d2JEeGnO-TF_1T_iQ" value="1"/>
              </ownedParameter>
              <language>Java</language>
              <body>		// Override operationsMatch, in the case where baseOperation belongs &#xD;
		// to an Interface.&#xD;
		// In this case, ownedOperation matches baseOperation if it has the same name and signature&#xD;
		// Otherwise, behaves like fUML RedefinitionBasedDispatchStrategy&#xD;
		boolean matches = true ;&#xD;
		if (baseOperation.namespace instanceof Interface) {&#xD;
			matches = (baseOperation.name == ownedOperation.name) ;&#xD;
			matches = matches &amp;&amp; (baseOperation.ownedParameter.size() == ownedOperation.ownedParameter.size()) ;&#xD;
			ParameterList ownedOperationParameters = ownedOperation.ownedParameter ;&#xD;
			ParameterList baseOperationParameters = baseOperation.ownedParameter ;&#xD;
			for (int i = 0 ; matches == true &amp;&amp; i &lt; ownedOperationParameters.size() ; i++) {&#xD;
				Parameter ownedParameter = ownedOperationParameters.getValue(i) ;&#xD;
				Parameter baseParameter = baseOperationParameters.getValue(i) ;&#xD;
				matches = (ownedParameter.type == baseParameter.type) ;&#xD;
				matches = matches &amp;&amp; (ownedParameter.multiplicityElement.lower == ownedParameter.multiplicityElement.lower) ;&#xD;
				matches = matches &amp;&amp; (ownedParameter.multiplicityElement.upper == ownedParameter.multiplicityElement.upper) ;&#xD;
				matches = matches &amp;&amp; (ownedParameter.direction == ownedParameter.direction) ;&#xD;
			}&#xD;
		}&#xD;
		else {&#xD;
			matches = super.operationsMatch(ownedOperation, baseOperation) ;&#xD;
		}&#xD;
&#xD;
		return matches ;</body>
            </ownedBehavior>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_wUwL_d2JEeGnO-TF_1T_iQ" name="operationsMatch" visibility="public" method="_wUwL6N2JEeGnO-TF_1T_iQ" class="_wUwL2N2JEeGnO-TF_1T_iQ">
              <ownedComment xmi:type="uml:Comment" xmi:id="_wUwL_t2JEeGnO-TF_1T_iQ">
                <body>&lt;&lt;TextualRepresentation>>public operationsMatch (in ownedOperation : Operation , &#xD;
											in baseOperation : Operation ) &#xD;
											: Boolean {&#xD;
	// Override operationsMatch, in the case where baseOperation belongs &#xD;
	// to an Interface&#xD;
	return false ;&#xD;
}</body>
              </ownedComment>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_wUwL_92JEeGnO-TF_1T_iQ" name="ownedOperation">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-Operation"/>
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUwMAN2JEeGnO-TF_1T_iQ" value="1"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUwMAd2JEeGnO-TF_1T_iQ" value="1"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_wUwMAt2JEeGnO-TF_1T_iQ" name="baseOperation">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-Operation"/>
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUwMA92JEeGnO-TF_1T_iQ" value="1"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUwMBN2JEeGnO-TF_1T_iQ" value="1"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_wUwMBd2JEeGnO-TF_1T_iQ" name="result" direction="return">
                <type xmi:type="uml:PrimitiveType" href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUwMBt2JEeGnO-TF_1T_iQ" value="1"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUwMB92JEeGnO-TF_1T_iQ" value="1"/>
              </ownedParameter>
            </ownedOperation>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="_HC0DIOVNEeGVLZOJyKihvQ" name="CS_StructuralFeatureOfInterfaceAccessStrategy" isAbstract="true">
            <ownedComment xmi:type="uml:Comment" xmi:id="_VWDtAOVSEeGVLZOJyKihvQ">
              <body>// Imports&#xD;
import CompositeStructuresSyntaxAndSemantics.Semantics.CompositeStructures.StructuredClasses.CS_Object;&#xD;
import fUML.Semantics.Classes.Kernel.FeatureValue;&#xD;
import fUML.Semantics.Classes.Kernel.ValueList;&#xD;
import fUML.Semantics.Loci.LociL1.SemanticStrategy;&#xD;
import fUML.Syntax.Classes.Kernel.StructuralFeature;</body>
            </ownedComment>
            <ownedComment xmi:type="uml:Comment" xmi:id="_fvGBYOeXEeGYZqnbU6eCYw">
              <body>This abstract strategy class enables to deal with realization of structural features by a behaviored classifier, in the case where these structural features belong to an interface realized by this classifier. Concrete realization of this abstract class shall specify behaviors for abstract operations read and write.</body>
            </ownedComment>
            <generalization xmi:type="uml:Generalization" xmi:id="_DFVrgOVOEeGVLZOJyKihvQ" specific="_HC0DIOVNEeGVLZOJyKihvQ">
              <general xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Loci-LociL1-SemanticStrategy"/>
            </generalization>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_V7pqMOVOEeGVLZOJyKihvQ" name="getName" specification="_du9q8OVNEeGVLZOJyKihvQ">
              <language>Java</language>
              <body>		// StructuralFeatureAccessStrategy are always named &quot;structuralFeature&quot;&#xD;
		return &quot;structuralFeature&quot;;</body>
            </ownedBehavior>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_du9q8OVNEeGVLZOJyKihvQ" name="getName" method="_V7pqMOVOEeGVLZOJyKihvQ" class="_HC0DIOVNEeGVLZOJyKihvQ">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_63F3sOVNEeGVLZOJyKihvQ" name="result" direction="return">
                <type xmi:type="uml:PrimitiveType" href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#String"/>
              </ownedParameter>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_e8Yq4OVOEeGVLZOJyKihvQ" name="read" isAbstract="true" class="_HC0DIOVNEeGVLZOJyKihvQ">
              <ownedComment xmi:type="uml:Comment" xmi:id="_5uKn8OeWEeGYZqnbU6eCYw">
                <body>// This abstract operation is intented to return the feature value for the given structural feature, &#xD;
// in the context of the given object, in the case where the feature belongs to an Interface</body>
              </ownedComment>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_l5XEEOVOEeGVLZOJyKihvQ" name="cs_Object" type="_wUwzPd2JEeGnO-TF_1T_iQ"/>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_u-DXsOVOEeGVLZOJyKihvQ" name="feature">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-StructuralFeature"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_0j60AOVOEeGVLZOJyKihvQ" name="result" direction="return">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Classes-Kernel-FeatureValue"/>
              </ownedParameter>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_r0tN4OVeEeGVLZOJyKihvQ" name="write" isAbstract="true" class="_HC0DIOVNEeGVLZOJyKihvQ">
              <ownedComment xmi:type="uml:Comment" xmi:id="_TASMcOeXEeGYZqnbU6eCYw">
                <body>// This abstract operation is intented to capture the way the given structural feature is set,&#xD;
// in the context of the given object, in the case where the feature belongs to an Interface</body>
              </ownedComment>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_z5-E0OVeEeGVLZOJyKihvQ" name="cs_Object" type="_wUwzPd2JEeGnO-TF_1T_iQ"/>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_5No94OVeEeGVLZOJyKihvQ" name="feature">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-StructuralFeature"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_-3-qgOVeEeGVLZOJyKihvQ" name="values">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Classes-Kernel-Value"/>
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SozwsOVfEeGVLZOJyKihvQ"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_So4CIOVfEeGVLZOJyKihvQ" value="*"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_CRxQ0OVfEeGVLZOJyKihvQ" name="position">
                <type xmi:type="uml:PrimitiveType" href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Integer"/>
              </ownedParameter>
            </ownedOperation>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="_-BGgIOVOEeGVLZOJyKihvQ" name="CS_NameBased_StructuralFeatureOfInterfaceAccessStrategy">
            <ownedComment xmi:type="uml:Comment" xmi:id="_O7JfEOVSEeGVLZOJyKihvQ">
              <body>// Imports&#xD;
import CompositeStructuresSyntaxAndSemantics.Semantics.CompositeStructures.StructuredClasses.CS_Object;&#xD;
import fUML.Semantics.Classes.Kernel.FeatureValue;&#xD;
import fUML.Semantics.Classes.Kernel.FeatureValueList;&#xD;
import fUML.Semantics.Classes.Kernel.ValueList;&#xD;
import fUML.Syntax.Classes.Kernel.StructuralFeature;</body>
            </ownedComment>
            <ownedComment xmi:type="uml:Comment" xmi:id="_70Mq4OeXEeGYZqnbU6eCYw">
              <body>This class provides a realization of semantic strategy CS_StructuralFeatureOfInterfaceAccessStrategy. This realization makes the hypothesis that, for a given behaviored classifier to actually realize an interface, it shall have structural features which exactly match structural features of the realized interface. Realizing features shall have same name, type and multiplicity as structural features of the interface.</body>
            </ownedComment>
            <generalization xmi:type="uml:Generalization" xmi:id="_PKNWIOVPEeGVLZOJyKihvQ" general="_HC0DIOVNEeGVLZOJyKihvQ" specific="_-BGgIOVOEeGVLZOJyKihvQ"/>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_oFfvAOVPEeGVLZOJyKihvQ" name="read" specification="_Qc5tEOVPEeGVLZOJyKihvQ">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_0KCe8OVPEeGVLZOJyKihvQ" name="cs_Object" type="_wUwzPd2JEeGnO-TF_1T_iQ"/>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_1XkpEOVPEeGVLZOJyKihvQ" name="feature">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-StructuralFeature"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_2vWUUOVPEeGVLZOJyKihvQ" name="result" direction="return">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Classes-Kernel-FeatureValue"/>
              </ownedParameter>
              <language>Java</language>
              <body>		// returns the a copy of the first feature value of cs_Object where the name of the corresponding feature&#xD;
		// matches the name of the feature given as a parameter&#xD;
		// Otherwise, returns an empty feature value&#xD;
		FeatureValueList featureValues = cs_Object.featureValues ;&#xD;
		FeatureValue matchingFeatureValue = null ;&#xD;
		for (int i = 0 ; i &lt; featureValues.size() &amp;&amp; matchingFeatureValue == null ; i++) {&#xD;
			FeatureValue featureValue = featureValues.getValue(i) ; &#xD;
			if (featureValue.feature.name.equals(feature.name)) {&#xD;
				matchingFeatureValue = featureValue ;&#xD;
			}&#xD;
		}&#xD;
		if (matchingFeatureValue != null) {&#xD;
			matchingFeatureValue = matchingFeatureValue.copy() ;&#xD;
			matchingFeatureValue.feature = feature ;&#xD;
		}&#xD;
		else {&#xD;
			matchingFeatureValue = new FeatureValue() ;&#xD;
			matchingFeatureValue.feature = feature ;&#xD;
			matchingFeatureValue.values = new ValueList() ;&#xD;
			matchingFeatureValue.position = 0 ;&#xD;
		}&#xD;
		&#xD;
		return matchingFeatureValue ;&#xD;
</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_nOZUoOVfEeGVLZOJyKihvQ" name="write" specification="_OssgcOVfEeGVLZOJyKihvQ">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_qgQG8OVfEeGVLZOJyKihvQ" name="cs_Object" type="_wUwzPd2JEeGnO-TF_1T_iQ"/>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_sCcScOVfEeGVLZOJyKihvQ" name="feature">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-StructuralFeature"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_tRccMOVfEeGVLZOJyKihvQ" name="values">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Classes-Kernel-Value"/>
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_8pJmAOVfEeGVLZOJyKihvQ"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_8pSv8OVfEeGVLZOJyKihvQ" value="*"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_vIYvsOVfEeGVLZOJyKihvQ" name="position">
                <type xmi:type="uml:PrimitiveType" href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Integer"/>
              </ownedParameter>
              <language>Java</language>
              <body>	// Retrieves the first feature value of cs_Object where the name of the corresponding feature&#xD;
	// matches the name of the feature given as a parameter&#xD;
	// Then updates the values for this feature value&#xD;
	FeatureValueList featureValues = cs_Object.featureValues ;&#xD;
	FeatureValue matchingFeatureValue = null ;&#xD;
	for (int i = 0 ; i &lt; featureValues.size() &amp;&amp; matchingFeatureValue == null ; i++) {&#xD;
		FeatureValue featureValue = featureValues.getValue(i) ; &#xD;
		if (featureValue.feature.name.equals(feature.name)) {&#xD;
			matchingFeatureValue = featureValue ;&#xD;
		}&#xD;
	}&#xD;
	if (matchingFeatureValue != null) {&#xD;
		cs_Object.setFeatureValue(matchingFeatureValue.feature, values, position) ;&#xD;
	}&#xD;
</body>
            </ownedBehavior>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_Qc5tEOVPEeGVLZOJyKihvQ" name="read" method="_oFfvAOVPEeGVLZOJyKihvQ" class="_-BGgIOVOEeGVLZOJyKihvQ">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_VDQ0MOVPEeGVLZOJyKihvQ" name="cs_Object" type="_wUwzPd2JEeGnO-TF_1T_iQ"/>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_Yhf1oOVPEeGVLZOJyKihvQ" name="feature">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-StructuralFeature"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_dC7ZcOVPEeGVLZOJyKihvQ" name="result" direction="return">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Classes-Kernel-FeatureValue"/>
              </ownedParameter>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_OssgcOVfEeGVLZOJyKihvQ" name="write" method="_nOZUoOVfEeGVLZOJyKihvQ" class="_-BGgIOVOEeGVLZOJyKihvQ">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_OssgceVfEeGVLZOJyKihvQ" name="cs_Object" type="_wUwzPd2JEeGnO-TF_1T_iQ"/>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_OssgcuVfEeGVLZOJyKihvQ" name="feature">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Syntax.xmi#Syntax-Classes-Kernel-StructuralFeature"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_Ossgc-VfEeGVLZOJyKihvQ" name="values">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Classes-Kernel-Value"/>
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_U82P4OVfEeGVLZOJyKihvQ"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_U856QOVfEeGVLZOJyKihvQ" value="*"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_OssgdOVfEeGVLZOJyKihvQ" name="position">
                <type xmi:type="uml:PrimitiveType" href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Integer"/>
              </ownedParameter>
            </ownedOperation>
          </packagedElement>
        </packagedElement>
      </packagedElement>
      <packagedElement xmi:type="uml:Package" xmi:id="_S9flAOYUEeGYZqnbU6eCYw" name="Classes">
        <packagedElement xmi:type="uml:Package" xmi:id="_ddeK4OYUEeGYZqnbU6eCYw" name="Kernel">
          <packagedElement xmi:type="uml:Class" xmi:id="_YflXwOYYEeGYZqnbU6eCYw" name="CS_InstanceValueEvaluation">
            <ownedComment xmi:type="uml:Comment" xmi:id="_FlTI8OYhEeGYZqnbU6eCYw">
              <body>// Imports&#xD;
import CompositeStructuresSyntaxAndSemantics.Semantics.CompositeStructures.StructuredClasses.CS_Object;&#xD;
import CompositeStructuresSyntaxAndSemantics.Semantics.CompositeStructures.StructuredClasses.CS_Reference;&#xD;
import CompositeStructuresSyntaxAndSemantics.Syntax.CompositeStructures.InternalStructures.Classifier;&#xD;
import CompositeStructuresSyntaxAndSemantics.Syntax.CompositeStructures.InternalStructures.ClassifierList;&#xD;
import CompositeStructuresSyntaxAndSemantics.Syntax.CompositeStructures.StructuredClasses.Class_;&#xD;
import fUML.Debug;&#xD;
import fUML.Semantics.Classes.Kernel.DataValue;&#xD;
import fUML.Semantics.Classes.Kernel.EnumerationValue;&#xD;
import fUML.Semantics.Classes.Kernel.InstanceValueEvaluation;&#xD;
import fUML.Semantics.Classes.Kernel.Object_;&#xD;
import fUML.Semantics.Classes.Kernel.Reference;&#xD;
import fUML.Semantics.Classes.Kernel.StructuredValue;&#xD;
import fUML.Semantics.Classes.Kernel.Value;&#xD;
import fUML.Semantics.Classes.Kernel.ValueList;&#xD;
import fUML.Syntax.Classes.Kernel.DataType;&#xD;
import fUML.Syntax.Classes.Kernel.Enumeration;&#xD;
import fUML.Syntax.Classes.Kernel.EnumerationLiteral;&#xD;
import fUML.Syntax.Classes.Kernel.InstanceSpecification;&#xD;
import fUML.Syntax.Classes.Kernel.InstanceValue;&#xD;
import fUML.Syntax.Classes.Kernel.Slot;&#xD;
import fUML.Syntax.Classes.Kernel.SlotList;&#xD;
import fUML.Syntax.Classes.Kernel.ValueSpecification;&#xD;
import fUML.Syntax.Classes.Kernel.ValueSpecificationList;&#xD;
import fUML.Syntax.CommonBehaviors.BasicBehaviors.Behavior;&#xD;
</body>
            </ownedComment>
            <ownedComment xmi:type="uml:Comment" xmi:id="_4of8MOedEeGYZqnbU6eCYw">
              <body>Extends fUML semantics in the sense that when the instance specification is for an object which is not typed by a Behavior, a CS_Reference (to a CS_Object) is produced instead of a Reference (to an Object)</body>
            </ownedComment>
            <generalization xmi:type="uml:Generalization" xmi:id="_lQfecOYYEeGYZqnbU6eCYw" specific="_YflXwOYYEeGYZqnbU6eCYw">
              <general xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Classes-Kernel-InstanceValueEvaluation"/>
            </generalization>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_n74GoOYYEeGYZqnbU6eCYw" name="evaluate" specification="_d-9xkOYYEeGYZqnbU6eCYw">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_93qu4OYgEeGYZqnbU6eCYw" name="result" direction="return">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Classes-Kernel-Value"/>
              </ownedParameter>
              <language>Java</language>
              <body>		// If the instance specification is for an enumeration, then return the&#xD;
		// identified enumeration literal.&#xD;
		// If the instance specification is for a data type (but not a primitive&#xD;
		// value or an enumeration), then create a data value of the given data&#xD;
		// type.&#xD;
		// If the instance specification is for an object, then create an object&#xD;
		// at the current locus with the specified types.&#xD;
		// Set each feature of the created value to the result of evaluating the&#xD;
		// value specifications for the specified slot for the feature.&#xD;
		// Extends fUML semantics in the sense that when the instance specification&#xD;
		// is for an object which is not typed by a Behaviore, A CS_Reference (to a &#xD;
		// CS_Object) is produced instead of a Reference (to an Object)&#xD;
&#xD;
		// Debug.println(&quot;[evaluate] InstanceValueEvaluation...&quot;);&#xD;
&#xD;
		InstanceSpecification instance = ((InstanceValue) this.specification).instance;&#xD;
		ClassifierList types = instance.classifier;&#xD;
		Classifier myType = types.getValue(0);&#xD;
&#xD;
		Debug.println(&quot;[evaluate] type = &quot; + myType.name);&#xD;
&#xD;
		Value value;&#xD;
		if (instance instanceof EnumerationLiteral) {&#xD;
			// Debug.println(&quot;[evaluate] Type is an enumeration.&quot;);&#xD;
			EnumerationValue enumerationValue = new EnumerationValue();&#xD;
			enumerationValue.type = (Enumeration) myType;&#xD;
			enumerationValue.literal = (EnumerationLiteral) instance;&#xD;
			value = enumerationValue;&#xD;
		} &#xD;
		else {&#xD;
			StructuredValue structuredValue = null;&#xD;
&#xD;
			if (myType instanceof DataType) {&#xD;
				// Debug.println(&quot;[evaluate] Type is a data type.&quot;);&#xD;
				DataValue dataValue = new DataValue();&#xD;
				dataValue.type = (DataType) myType;&#xD;
				structuredValue = dataValue;&#xD;
			} &#xD;
			else {&#xD;
				Object_ object = null;&#xD;
				if (myType instanceof Behavior) {&#xD;
					// Debug.println(&quot;[evaluate] Type is a behavior.&quot;);&#xD;
					object = this.locus.factory.createExecution(&#xD;
							(Behavior) myType, null);&#xD;
				} &#xD;
				else {&#xD;
					// Debug.println(&quot;[evaluate] Type is a class.&quot;);&#xD;
					object = new CS_Object();&#xD;
					for (int i = 0; i &lt; types.size(); i++) {&#xD;
						Classifier type = types.getValue(i);&#xD;
						object.types.addValue((Class_) type);&#xD;
					}&#xD;
				}&#xD;
&#xD;
				this.locus.add(object);&#xD;
&#xD;
				Reference reference ;&#xD;
				if (object instanceof CS_Object) {&#xD;
					reference = new CS_Reference();&#xD;
					((CS_Reference)reference).compositeReferent = (CS_Object)object ;&#xD;
				}&#xD;
				else {&#xD;
					reference = new Reference() ;&#xD;
				}&#xD;
				reference.referent = object;&#xD;
				structuredValue = reference;&#xD;
			}&#xD;
&#xD;
			structuredValue.createFeatureValues();&#xD;
&#xD;
			// Debug.println(&quot;[evaluate] &quot; + instance.slot.size() +&#xD;
			// &quot; slot(s).&quot;);&#xD;
&#xD;
			SlotList instanceSlots = instance.slot;&#xD;
			for (int i = 0; i &lt; instanceSlots.size(); i++) {&#xD;
				Slot slot = instanceSlots.getValue(i);&#xD;
				ValueList values = new ValueList();&#xD;
&#xD;
				// Debug.println(&quot;[evaluate] feature = &quot; +&#xD;
				// slot.definingFeature.name + &quot;, &quot; + slot.value.size() +&#xD;
				// &quot; value(s).&quot;);&#xD;
				ValueSpecificationList slotValues = slot.value;&#xD;
				for (int j = 0; j &lt; slotValues.size(); j++) {&#xD;
					ValueSpecification slotValue = slotValues.getValue(j);&#xD;
					// Debug.println(&quot;[evaluate] Value = &quot; +&#xD;
					// slotValue.getClass().getName());&#xD;
					values.addValue(this.locus.executor.evaluate(slotValue));&#xD;
				}&#xD;
				structuredValue.setFeatureValue(slot.definingFeature, values, 0);&#xD;
			}&#xD;
&#xD;
			value = structuredValue;&#xD;
		}&#xD;
&#xD;
		return value;</body>
            </ownedBehavior>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_d-9xkOYYEeGYZqnbU6eCYw" name="evaluate" method="_n74GoOYYEeGYZqnbU6eCYw" class="_YflXwOYYEeGYZqnbU6eCYw">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_7zDy0OYgEeGYZqnbU6eCYw" name="result" direction="return">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Classes-Kernel-Value"/>
              </ownedParameter>
            </ownedOperation>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="_90nNMMEREeKkJbQgitQ3JQ" name="CS_OpaqueExpressionEvaluation">
            <generalization xmi:type="uml:Generalization" xmi:id="_0JzX8MEVEeKkJbQgitQ3JQ" specific="_90nNMMEREeKkJbQgitQ3JQ">
              <general xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Classes-Kernel-Evaluation"/>
            </generalization>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_LiOzwsESEeKkJbQgitQ3JQ" name="evaluate" specification="_LiOzwMESEeKkJbQgitQ3JQ">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_LiOzw8ESEeKkJbQgitQ3JQ" name="result" direction="return">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Classes-Kernel-Value"/>
              </ownedParameter>
              <language>Java</language>
              <body>		// Execute the behavior associated with the context OpaqueExpression, if any.&#xD;
		// If multiple return values are computed, then return the first one.&#xD;
		// If no value are computed, return null&#xD;
		ValueList evaluation = this.executeExpressionBehavior() ;&#xD;
		if (evaluation.size() > 0) {&#xD;
			return evaluation.get(0) ;&#xD;
		}&#xD;
		else {&#xD;
			return null ;&#xD;
		}</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_9xH3gMEVEeKkJbQgitQ3JQ" name="executeExpressionBehavior" specification="_itG3kMEVEeKkJbQgitQ3JQ">
              <language>Java</language>
              <body>		// If a behavior is associated with the context OpaqueExpression,&#xD;
		// then execute this behavior, and return computed values.&#xD;
		// Otherwise, return an empty list of values.&#xD;
		ValueList evaluation = new ValueList() ;&#xD;
		OpaqueExpression expression = (OpaqueExpression)this.specification ;&#xD;
		Behavior behavior = expression.behavior ;&#xD;
		if (behavior != null) {&#xD;
			ParameterValueList inputs = new ParameterValueList() ;&#xD;
			ParameterValueList results = this.locus.executor.execute(behavior, null, inputs) ;&#xD;
			for (int i = 0 ; i &lt; results.size() ; i++) { // results.size should be 1&#xD;
				ParameterValue parameterValue = results.get(i) ;&#xD;
				ValueList values = parameterValue.values ;&#xD;
				for (int j = 0 ; j &lt; values.size() ; j++) {&#xD;
					evaluation.add(values.get(j)) ;&#xD;
				}&#xD;
			}&#xD;
		}&#xD;
		return evaluation ;</body>
            </ownedBehavior>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_LiOzwMESEeKkJbQgitQ3JQ" name="evaluate" method="_LiOzwsESEeKkJbQgitQ3JQ" class="_90nNMMEREeKkJbQgitQ3JQ">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_LiOzwcESEeKkJbQgitQ3JQ" name="result" direction="return">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Classes-Kernel-Value"/>
              </ownedParameter>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_itG3kMEVEeKkJbQgitQ3JQ" name="executeExpressionBehavior" method="_9xH3gMEVEeKkJbQgitQ3JQ" class="_90nNMMEREeKkJbQgitQ3JQ">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_oTWuYMEVEeKkJbQgitQ3JQ" name="result" direction="return">
                <type xmi:type="uml:Class" href="http://www.omg.org/spec/FUML/20121019/fUML_Semantics.xmi#Semantics-Classes-Kernel-Value"/>
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rcC9oMEVEeKkJbQgitQ3JQ"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rcMuoMEVEeKkJbQgitQ3JQ" value="*"/>
              </ownedParameter>
            </ownedOperation>
          </packagedElement>
        </packagedElement>
      </packagedElement>
    </packagedElement>
    <packagedElement xmi:type="uml:Package" xmi:id="_izKywOC6EeGcc4S1CmuFHA" name="Merged">
      <packageMerge xmi:type="uml:PackageMerge" xmi:id="_1s9jQOC6EeGcc4S1CmuFHA" mergedPackage="_tf4NEOC6EeGcc4S1CmuFHA" receivingPackage="_izKywOC6EeGcc4S1CmuFHA"/>
      <packageMerge xmi:type="uml:PackageMerge" xmi:id="_2K1LAOC6EeGcc4S1CmuFHA" mergedPackage="_wNwIkOC6EeGcc4S1CmuFHA" receivingPackage="_izKywOC6EeGcc4S1CmuFHA"/>
    </packagedElement>
  </uml:Model>
</xmi:XMI>
