Another test model

Change-Id: Ie9b3755cb7143eb6e5ac24f43a3e499b6f3b9361
Signed-off-by: Ernesto Posse <eposse@gmail.com>
diff --git a/models/tests/codepattern/structure/SymbolicReplication8/.project b/models/tests/codepattern/structure/SymbolicReplication8/.project
new file mode 100644
index 0000000..bf671a4
--- /dev/null
+++ b/models/tests/codepattern/structure/SymbolicReplication8/.project
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>SymbolicReplication8</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+	</buildSpec>
+	<natures>
+	</natures>
+</projectDescription>
diff --git a/models/tests/codepattern/structure/SymbolicReplication8/SymbolicReplication8.di b/models/tests/codepattern/structure/SymbolicReplication8/SymbolicReplication8.di
new file mode 100644
index 0000000..bf9abab
--- /dev/null
+++ b/models/tests/codepattern/structure/SymbolicReplication8/SymbolicReplication8.di
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"/>
diff --git a/models/tests/codepattern/structure/SymbolicReplication8/SymbolicReplication8.notation b/models/tests/codepattern/structure/SymbolicReplication8/SymbolicReplication8.notation
new file mode 100644
index 0000000..23eecd7
--- /dev/null
+++ b/models/tests/codepattern/structure/SymbolicReplication8/SymbolicReplication8.notation
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:configuration="http://www.eclipse.org/papyrus/infra/viewpoints/configuration" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:style="http://www.eclipse.org/papyrus/infra/viewpoints/policy/style" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML">
+  <notation:Diagram xmi:id="_IXuDQN6IEeaOPeOdlxy0RA" type="CompositeStructure" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_IYJhEN6IEeaOPeOdlxy0RA" type="Class_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_IYNygN6IEeaOPeOdlxy0RA" type="Class_NameLabel"/>
+      <children xmi:type="notation:DecorationNode" xmi:id="_IYNygd6IEeaOPeOdlxy0RA" type="Class_FloatingNameLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_IYNygt6IEeaOPeOdlxy0RA" y="5"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_IYOZkN6IEeaOPeOdlxy0RA" type="Class_StructureCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_IYOZkd6IEeaOPeOdlxy0RA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IYOZkt6IEeaOPeOdlxy0RA"/>
+      </children>
+      <element xmi:type="uml:Class" href="SymbolicReplication8.uml#_ITUEYN6IEeaOPeOdlxy0RA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IYJhEd6IEeaOPeOdlxy0RA" x="40" y="40" width="500" height="250"/>
+    </children>
+    <styles xmi:type="notation:StringValueStyle" xmi:id="_IXuqUN6IEeaOPeOdlxy0RA" name="diagram_compatibility_version" stringValue="1.2.0"/>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_IXuqUd6IEeaOPeOdlxy0RA"/>
+    <styles xmi:type="style:PapyrusViewStyle" xmi:id="_IXuqUt6IEeaOPeOdlxy0RA">
+      <owner xmi:type="uml:Class" href="SymbolicReplication8.uml#_ITUEYN6IEeaOPeOdlxy0RA"/>
+      <configuration xmi:type="configuration:PapyrusDiagram" href="platform:/plugin/org.eclipse.papyrusrt.umlrt.tooling.diagram.common/configuration/UMLRT.configuration#_Z79eQHcZEeSnWeKqQOfW2A"/>
+    </styles>
+    <element xmi:type="uml:Class" href="SymbolicReplication8.uml#_ITUEYN6IEeaOPeOdlxy0RA"/>
+  </notation:Diagram>
+  <notation:Diagram xmi:id="_4wOUgN6IEeaOPeOdlxy0RA" type="PapyrusUMLClassDiagram" name="ClassDiagram" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_6M2qkN6IEeaOPeOdlxy0RA" type="Class_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_6M68AN6IEeaOPeOdlxy0RA" type="Class_NameLabel"/>
+      <children xmi:type="notation:DecorationNode" xmi:id="_6M68Ad6IEeaOPeOdlxy0RA" type="Class_FloatingNameLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_6M68At6IEeaOPeOdlxy0RA" y="5"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_6M7jEN6IEeaOPeOdlxy0RA" type="Class_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_6M7jEd6IEeaOPeOdlxy0RA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_6M7jEt6IEeaOPeOdlxy0RA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_6M7jE96IEeaOPeOdlxy0RA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6M7jFN6IEeaOPeOdlxy0RA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_6M7jFd6IEeaOPeOdlxy0RA" type="Class_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_6M7jFt6IEeaOPeOdlxy0RA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_6M7jF96IEeaOPeOdlxy0RA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_6M7jGN6IEeaOPeOdlxy0RA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6M7jGd6IEeaOPeOdlxy0RA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_6M7jGt6IEeaOPeOdlxy0RA" type="Class_NestedClassifierCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_6M7jG96IEeaOPeOdlxy0RA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_6M7jHN6IEeaOPeOdlxy0RA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_6M7jHd6IEeaOPeOdlxy0RA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6M7jHt6IEeaOPeOdlxy0RA"/>
+      </children>
+      <element xmi:type="uml:Class" href="SymbolicReplication8.uml#_PW0jYN6IEeaOPeOdlxy0RA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6M2qkd6IEeaOPeOdlxy0RA" x="227" y="230"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_CsBPQN6JEeaOPeOdlxy0RA" type="Class_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_CsDrgN6JEeaOPeOdlxy0RA" type="Class_NameLabel"/>
+      <children xmi:type="notation:DecorationNode" xmi:id="_CsDrgd6JEeaOPeOdlxy0RA" type="Class_FloatingNameLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_CsDrgt6JEeaOPeOdlxy0RA" y="5"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_CsDrg96JEeaOPeOdlxy0RA" type="Class_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_CsDrhN6JEeaOPeOdlxy0RA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_CsDrhd6JEeaOPeOdlxy0RA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_CsDrht6JEeaOPeOdlxy0RA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CsDrh96JEeaOPeOdlxy0RA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_CsDriN6JEeaOPeOdlxy0RA" type="Class_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_CsDrid6JEeaOPeOdlxy0RA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_CsDrit6JEeaOPeOdlxy0RA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_CsDri96JEeaOPeOdlxy0RA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CsDrjN6JEeaOPeOdlxy0RA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_CsDrjd6JEeaOPeOdlxy0RA" type="Class_NestedClassifierCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_CsDrjt6JEeaOPeOdlxy0RA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_CsDrj96JEeaOPeOdlxy0RA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_CsDrkN6JEeaOPeOdlxy0RA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CsDrkd6JEeaOPeOdlxy0RA"/>
+      </children>
+      <element xmi:type="uml:Class" href="platform:/resource/SymbolicReplication6/SymbolicReplication6.uml#_N_p6AN21EeaVi7aNjIFecA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CsBPQd6JEeaOPeOdlxy0RA" x="600" y="238"/>
+    </children>
+    <styles xmi:type="notation:StringValueStyle" xmi:id="_4wOUgd6IEeaOPeOdlxy0RA" name="diagram_compatibility_version" stringValue="1.2.0"/>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_4wOUgt6IEeaOPeOdlxy0RA"/>
+    <styles xmi:type="style:PapyrusViewStyle" xmi:id="_4wOUg96IEeaOPeOdlxy0RA">
+      <owner xmi:type="uml:Package" href="SymbolicReplication8.uml#_LCN6oN6IEeaOPeOdlxy0RA"/>
+    </styles>
+    <element xmi:type="uml:Package" href="SymbolicReplication8.uml#_LCN6oN6IEeaOPeOdlxy0RA"/>
+    <edges xmi:type="notation:Connector" xmi:id="_E3clAN6JEeaOPeOdlxy0RA" type="Dependency_Edge" source="_6M2qkN6IEeaOPeOdlxy0RA" target="_CsBPQN6JEeaOPeOdlxy0RA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_E3dMEt6JEeaOPeOdlxy0RA" type="Dependency_NameLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_E3dME96JEeaOPeOdlxy0RA" y="40"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_E3dMFN6JEeaOPeOdlxy0RA" type="Dependency_StereotypeLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_E3dMFd6JEeaOPeOdlxy0RA" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_E3dMEN6JEeaOPeOdlxy0RA"/>
+      <element xmi:type="uml:Dependency" href="SymbolicReplication8.uml#_E3aIwN6JEeaOPeOdlxy0RA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_E3dMEd6JEeaOPeOdlxy0RA" points="[327, 263, -643984, -643984]$[600, 272, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_E4l0gN6JEeaOPeOdlxy0RA" id="(1.0,0.33)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_E4l0gd6JEeaOPeOdlxy0RA" id="(0.0,0.34)"/>
+    </edges>
+  </notation:Diagram>
+</xmi:XMI>
diff --git a/models/tests/codepattern/structure/SymbolicReplication8/SymbolicReplication8.uml b/models/tests/codepattern/structure/SymbolicReplication8/SymbolicReplication8.uml
new file mode 100644
index 0000000..f45a38c
--- /dev/null
+++ b/models/tests/codepattern/structure/SymbolicReplication8/SymbolicReplication8.uml
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:UMLRealTime="http://www.eclipse.org/papyrus/umlrt" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML">
+  <uml:Model xmi:id="_F9utEN6IEeaOPeOdlxy0RA" name="SymbolicReplication8">
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_HWRNUN6IEeaOPeOdlxy0RA" source="http://www.eclipse.org/papyrus-rt/language/1.0.0">
+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HWR0YN6IEeaOPeOdlxy0RA" key="language" value="umlrt-cpp"/>
+    </eAnnotations>
+    <packagedElement xmi:type="uml:Class" xmi:id="_ITUEYN6IEeaOPeOdlxy0RA" name="Top" isActive="true">
+      <ownedAttribute xmi:type="uml:Port" xmi:id="_ct8VgN6IEeaOPeOdlxy0RA" name="protocol1" visibility="public" type="_dPJlIN6IEeaOPeOdlxy0RA" isOrdered="true" aggregation="composite" isBehavior="true" isService="true">
+        <lowerValue xmi:type="uml:OpaqueExpression" xmi:id="_eanSsN6IEeaOPeOdlxy0RA">
+          <language>C++</language>
+          <body>SymbolicReplication8::Package1::Package2::Class1::Class1::Attribute3</body>
+        </lowerValue>
+        <upperValue xmi:type="uml:OpaqueExpression" xmi:id="_ebCJcN6IEeaOPeOdlxy0RA">
+          <language>C++</language>
+          <body>SymbolicReplication8::Package1::Package2::Class1::Class1::Attribute3</body>
+        </upperValue>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Package" xmi:id="_LCN6oN6IEeaOPeOdlxy0RA" name="Package1">
+      <packagedElement xmi:type="uml:Package" xmi:id="_NWlJ8N6IEeaOPeOdlxy0RA" name="Package2">
+        <packagedElement xmi:type="uml:Class" xmi:id="_PW0jYN6IEeaOPeOdlxy0RA" name="Class1">
+          <ownedAttribute xmi:type="uml:Property" xmi:id="_QJZP0N6IEeaOPeOdlxy0RA" name="Attribute1" visibility="public">
+            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+            <defaultValue xmi:type="uml:OpaqueExpression" xmi:id="_zdw8YN6IEeaOPeOdlxy0RA">
+              <language>C++</language>
+              <body>SymbolicReplication6::Package1::Class1::Attribute1 * 2</body>
+            </defaultValue>
+          </ownedAttribute>
+          <ownedAttribute xmi:type="uml:Property" xmi:id="_Q98SMN6IEeaOPeOdlxy0RA" name="Attribute2" visibility="public">
+            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+            <defaultValue xmi:type="uml:OpaqueExpression" xmi:id="_jfSGcN6IEeaOPeOdlxy0RA">
+              <language>C++</language>
+              <body>Attribute1 -3</body>
+            </defaultValue>
+          </ownedAttribute>
+          <nestedClassifier xmi:type="uml:Class" xmi:id="_RqvGwN6IEeaOPeOdlxy0RA" name="Class1">
+            <ownedAttribute xmi:type="uml:Property" xmi:id="_SiJ28N6IEeaOPeOdlxy0RA" name="Attribute1" visibility="public">
+              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+              <defaultValue xmi:type="uml:OpaqueExpression" xmi:id="_tiHdUN6IEeaOPeOdlxy0RA">
+                <language>C++</language>
+                <body>SymbolicReplication8::Package1::Package2::Class1::Attribute1 -4</body>
+              </defaultValue>
+            </ownedAttribute>
+            <ownedAttribute xmi:type="uml:Property" xmi:id="_TO_HwN6IEeaOPeOdlxy0RA" name="Attribute3" visibility="public">
+              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+              <defaultValue xmi:type="uml:OpaqueExpression" xmi:id="_olRI0N6IEeaOPeOdlxy0RA">
+                <language>C++</language>
+                <body>Attribute1 * Attribute2</body>
+              </defaultValue>
+            </ownedAttribute>
+          </nestedClassifier>
+        </packagedElement>
+        <packagedElement xmi:type="uml:Dependency" xmi:id="_E3aIwN6JEeaOPeOdlxy0RA" client="_PW0jYN6IEeaOPeOdlxy0RA">
+          <supplier xmi:type="uml:Class" href="../SymbolicReplication6/SymbolicReplication6.uml#_N_p6AN21EeaVi7aNjIFecA"/>
+        </packagedElement>
+      </packagedElement>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Package" xmi:id="_dPRg8N6IEeaOPeOdlxy0RA" name="Protocol1">
+      <packagedElement xmi:type="uml:Collaboration" xmi:id="_dPJlIN6IEeaOPeOdlxy0RA" name="Protocol1">
+        <interfaceRealization xmi:type="uml:InterfaceRealization" xmi:id="_dPdHIN6IEeaOPeOdlxy0RA" client="_dPJlIN6IEeaOPeOdlxy0RA" supplier="_dPYOoN6IEeaOPeOdlxy0RA" contract="_dPYOoN6IEeaOPeOdlxy0RA"/>
+        <interfaceRealization xmi:type="uml:InterfaceRealization" xmi:id="_dPotUN6IEeaOPeOdlxy0RA" client="_dPJlIN6IEeaOPeOdlxy0RA" supplier="_dPlC8N6IEeaOPeOdlxy0RA" contract="_dPlC8N6IEeaOPeOdlxy0RA"/>
+      </packagedElement>
+      <packagedElement xmi:type="uml:Interface" xmi:id="_dPYOoN6IEeaOPeOdlxy0RA" name="Protocol1"/>
+      <packagedElement xmi:type="uml:Interface" xmi:id="_dPe8UN6IEeaOPeOdlxy0RA" name="Protocol1~"/>
+      <packagedElement xmi:type="uml:Usage" xmi:id="_dPjNwN6IEeaOPeOdlxy0RA" client="_dPJlIN6IEeaOPeOdlxy0RA" supplier="_dPe8UN6IEeaOPeOdlxy0RA"/>
+      <packagedElement xmi:type="uml:AnyReceiveEvent" xmi:id="_dPkb4N6IEeaOPeOdlxy0RA" name="*"/>
+      <packagedElement xmi:type="uml:Interface" xmi:id="_dPlC8N6IEeaOPeOdlxy0RA" name="Protocol1IO"/>
+      <packagedElement xmi:type="uml:Usage" xmi:id="_dPp7cN6IEeaOPeOdlxy0RA" client="_dPJlIN6IEeaOPeOdlxy0RA" supplier="_dPlC8N6IEeaOPeOdlxy0RA"/>
+    </packagedElement>
+    <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_F-W_MN6IEeaOPeOdlxy0RA">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_F-ZbcN6IEeaOPeOdlxy0RA" source="http://www.eclipse.org/uml2/2.0.0/UML">
+        <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/umlrt#/"/>
+      </eAnnotations>
+      <appliedProfile xmi:type="uml:Profile" href="pathmap://UML_RT_PROFILE/uml-rt.profile.uml#_1h74oEeVEeO0lv5O1DTHOQ"/>
+    </profileApplication>
+    <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_HXzeYN6IEeaOPeOdlxy0RA">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_HXzeYd6IEeaOPeOdlxy0RA" source="http://www.eclipse.org/uml2/2.0.0/UML">
+        <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/umlrt/cppproperties#/"/>
+      </eAnnotations>
+      <appliedProfile xmi:type="uml:Profile" href="pathmap://UMLRT_CPP/RTCppProperties.profile.uml#_vl5LALs8EeSTjNEQkASznQ"/>
+    </profileApplication>
+  </uml:Model>
+  <UMLRealTime:Capsule xmi:id="_IYT5IN6IEeaOPeOdlxy0RA" base_Class="_ITUEYN6IEeaOPeOdlxy0RA"/>
+  <UMLRealTime:RTPort xmi:id="_cvOH4N6IEeaOPeOdlxy0RA" isPublish="false" isWired="true" base_Port="_ct8VgN6IEeaOPeOdlxy0RA"/>
+  <UMLRealTime:ProtocolContainer xmi:id="_dPUkQN6IEeaOPeOdlxy0RA" base_Package="_dPRg8N6IEeaOPeOdlxy0RA"/>
+  <UMLRealTime:RTMessageSet xmi:id="_dPbR8N6IEeaOPeOdlxy0RA" base_Interface="_dPYOoN6IEeaOPeOdlxy0RA"/>
+  <UMLRealTime:RTMessageSet xmi:id="_dPh_oN6IEeaOPeOdlxy0RA" base_Interface="_dPe8UN6IEeaOPeOdlxy0RA" rtMsgKind="out"/>
+  <UMLRealTime:RTMessageSet xmi:id="_dPnfMN6IEeaOPeOdlxy0RA" base_Interface="_dPlC8N6IEeaOPeOdlxy0RA" rtMsgKind="inOut"/>
+  <UMLRealTime:Protocol xmi:id="_dPqigN6IEeaOPeOdlxy0RA" base_Collaboration="_dPJlIN6IEeaOPeOdlxy0RA"/>
+</xmi:XMI>
diff --git a/models/tests/codepattern/structure/SymbolicReplication8/expected_src/CMakeLists.txt b/models/tests/codepattern/structure/SymbolicReplication8/expected_src/CMakeLists.txt
new file mode 100644
index 0000000..f233596
--- /dev/null
+++ b/models/tests/codepattern/structure/SymbolicReplication8/expected_src/CMakeLists.txt
@@ -0,0 +1,36 @@
+# Generated 2017-01-19 16:03:37
+
+cmake_minimum_required(VERSION 2.8.7)
+set(TARGET TopMain)
+project(${TARGET})
+
+# require location of supporting RTS
+if (NOT UMLRTS_ROOT)
+  if (DEFINED ENV{UMLRTS_ROOT})
+    set(UMLRTS_ROOT $ENV{UMLRTS_ROOT})
+  else ()
+    set(UMLRTS_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/umlrt.rts)
+  endif ()
+endif ()
+
+# setup primary envars - provides tooling config
+include(${UMLRTS_ROOT}/build/buildenv.cmake)
+
+# model sources
+set(SRCS TopMain.cc Protocol1.cc Top.cc TopControllers.cc Class1.cc Class1.cc )
+
+# specify target
+add_executable(${TARGET} ${SRCS})
+
+# setup lib dependency support after defining TARGET
+include(${UMLRTS_ROOT}/build/rtslib.cmake)
+
+# compiler parameters
+set_target_properties(${TARGET} PROPERTIES COMPILE_OPTIONS "${COPTS}")
+set_target_properties(${TARGET} PROPERTIES COMPILE_DEFINITIONS "${CDEFS}")
+include_directories(${INCS})
+
+# linker parameters
+set_target_properties(${TARGET} PROPERTIES CMAKE_EXE_LINKER_FLAGS "${LOPTS}")
+target_link_libraries(${TARGET} ${LIBS})
+
diff --git a/models/tests/codepattern/structure/SymbolicReplication8/expected_src/Class1.cc b/models/tests/codepattern/structure/SymbolicReplication8/expected_src/Class1.cc
new file mode 100644
index 0000000..848b284
--- /dev/null
+++ b/models/tests/codepattern/structure/SymbolicReplication8/expected_src/Class1.cc
@@ -0,0 +1,47 @@
+
+#include "Class1.hh"
+
+#include "umlrtobjectclass.hh"
+#include "umlrtobjectclassgeneric.hh"
+#include <cstddef>
+
+const UMLRTObject_field Class1::fields[] = 
+{
+    {
+        "Attribute1",
+        &UMLRTType_int,
+        offsetof( Class1, Attribute1 ),
+        1,
+        0
+    },
+    {
+        "Attribute2",
+        &UMLRTType_int,
+        offsetof( Class1, Attribute2 ),
+        1,
+        0
+    }
+};
+
+
+
+
+const UMLRTObject_class UMLRTType_Class1 = 
+{
+    UMLRTObjectInitialize<Class1>,
+    UMLRTObjectCopy<Class1>,
+    UMLRTObject_decode,
+    UMLRTObject_encode,
+    UMLRTObjectDestroy<Class1>,
+    UMLRTObject_fprintf,
+    "Class1",
+    NULL,
+    {
+        sizeof( Class1 ),
+        2,
+        Class1::fields
+    },
+    UMLRTOBJECTCLASS_DEFAULT_VERSION,
+    UMLRTOBJECTCLASS_DEFAULT_BACKWARDS
+};
+
diff --git a/models/tests/codepattern/structure/SymbolicReplication8/expected_src/Class1.hh b/models/tests/codepattern/structure/SymbolicReplication8/expected_src/Class1.hh
new file mode 100644
index 0000000..c09cf24
--- /dev/null
+++ b/models/tests/codepattern/structure/SymbolicReplication8/expected_src/Class1.hh
@@ -0,0 +1,19 @@
+
+#ifndef CLASS1_HH
+#define CLASS1_HH
+
+#include "umlrtobjectclass.hh"
+
+#include "Class1.hh"
+
+class Class1
+{
+public:
+    int Attribute1;
+    int Attribute2;
+    static const UMLRTObject_field fields[];
+};
+extern const UMLRTObject_class UMLRTType_Class1;
+
+#endif
+
diff --git a/models/tests/codepattern/structure/SymbolicReplication8/expected_src/Makefile b/models/tests/codepattern/structure/SymbolicReplication8/expected_src/Makefile
new file mode 100644
index 0000000..0bcbd22
--- /dev/null
+++ b/models/tests/codepattern/structure/SymbolicReplication8/expected_src/Makefile
@@ -0,0 +1,11 @@
+##################################################
+# Default makefile
+# Redirect make to target makefile
+##################################################
+
+all:
+	make -f MakefileTop.mk all
+clean:
+	make -f MakefileTop.mk clean
+.PHONY: 
+	make -f MakefileTop.mk all clean
diff --git a/models/tests/codepattern/structure/SymbolicReplication8/expected_src/MakefileTop.mk b/models/tests/codepattern/structure/SymbolicReplication8/expected_src/MakefileTop.mk
new file mode 100644
index 0000000..111c0af
--- /dev/null
+++ b/models/tests/codepattern/structure/SymbolicReplication8/expected_src/MakefileTop.mk
@@ -0,0 +1,49 @@
+# set default value for TARGETOS if is it not defined
+ifeq ($(TARGETOS), )
+$(warning warning: TARGETOS not defined. Choosing linux)
+TARGETOS=linux
+endif
+
+# set default value for BUILDTOOLS if is it not defined
+ifeq ($(BUILDTOOLS), )
+$(warning warning: BUILDTOOLS not defined. Choosing x86-gcc-4.6.3)
+BUILDTOOLS=x86-gcc-4.6.3
+endif
+
+# Location of RTS root.
+UMLRTS_ROOT ?= ./umlrt.rts
+
+CONFIG=$(TARGETOS).$(BUILDTOOLS)
+
+# Destination directory for the RTS services library.
+LIBDEST=$(UMLRTS_ROOT)/lib/$(CONFIG)
+
+include $(UMLRTS_ROOT)/build/host/host.mk
+include $(UMLRTS_ROOT)/build/buildtools/$(BUILDTOOLS)/buildtools.mk
+
+LD_PATHS=$(LIBDEST)
+CC_INCLUDES+=$(UMLRTS_ROOT)/include
+
+CC_DEFINES:=$(foreach d, $(CC_DEFINES), $(CC_DEF)$d)
+CC_INCLUDES:=$(foreach i, $(CC_INCLUDES), $(CC_INC)$i)
+LD_LIBS:=$(foreach i, $(LD_LIBS), $(LD_LIB)$i)
+LD_PATHS:=$(foreach i, $(LD_PATHS), $(LD_LIBPATH)$i)
+
+SRCS = TopMain.cc Protocol1.cc Top.cc TopControllers.cc Class1.cc Class1.cc 
+OBJS = $(subst $(CC_EXT),$(OBJ_EXT),$(SRCS))
+
+MAIN = TopMain$(EXE_EXT)
+
+all: $(MAIN)
+
+$(MAIN): $(OBJS) $(UMLRTS_ROOT)/lib/$(CONFIG)/$(LIB_PRFX)rts$(LIB_EXT)
+	$(LD) $(LD_FLAGS) $(OBJS) $(LD_PATHS) $(LD_LIBS) $(LD_OUT)$@
+
+%$(OBJ_EXT) : %$(CC_EXT)
+	$(CC) $< $(CC_FLAGS) $(CC_DEFINES) $(CC_INCLUDES) $(CC_OUT)$@
+
+clean :
+	@echo $(RM) main$(EXE_EXT) *$(OBJ_EXT) *$(DEP_EXT) $(DBG_FILES)
+	@$(RM) main$(EXE_EXT) *$(OBJ_EXT) *$(DEP_EXT) $(DBG_FILES)
+
+.PHONY: all clean
diff --git a/models/tests/codepattern/structure/SymbolicReplication8/expected_src/Protocol1.cc b/models/tests/codepattern/structure/SymbolicReplication8/expected_src/Protocol1.cc
new file mode 100644
index 0000000..08595db
--- /dev/null
+++ b/models/tests/codepattern/structure/SymbolicReplication8/expected_src/Protocol1.cc
@@ -0,0 +1,16 @@
+
+#include "Protocol1.hh"
+
+struct UMLRTCommsPort;
+
+Protocol1::Base::Base( const UMLRTCommsPort * & srcPort )
+: UMLRTProtocol( srcPort )
+{
+}
+
+Protocol1::Conj::Conj( const UMLRTCommsPort * & srcPort )
+: UMLRTProtocol( srcPort )
+{
+}
+
+
diff --git a/models/tests/codepattern/structure/SymbolicReplication8/expected_src/Protocol1.hh b/models/tests/codepattern/structure/SymbolicReplication8/expected_src/Protocol1.hh
new file mode 100644
index 0000000..f917c8f
--- /dev/null
+++ b/models/tests/codepattern/structure/SymbolicReplication8/expected_src/Protocol1.hh
@@ -0,0 +1,23 @@
+
+#ifndef PROTOCOL1_HH
+#define PROTOCOL1_HH
+
+#include "umlrtprotocol.hh"
+struct UMLRTCommsPort;
+
+namespace Protocol1
+{
+    class Base : public UMLRTProtocol
+    {
+    public:
+        Base( const UMLRTCommsPort * & srcPort );
+    };
+    class Conj : public UMLRTProtocol
+    {
+    public:
+        Conj( const UMLRTCommsPort * & srcPort );
+    };
+};
+
+#endif
+
diff --git a/models/tests/codepattern/structure/SymbolicReplication8/expected_src/Top-connections.log b/models/tests/codepattern/structure/SymbolicReplication8/expected_src/Top-connections.log
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/models/tests/codepattern/structure/SymbolicReplication8/expected_src/Top-connections.log
diff --git a/models/tests/codepattern/structure/SymbolicReplication8/expected_src/Top.cc b/models/tests/codepattern/structure/SymbolicReplication8/expected_src/Top.cc
new file mode 100644
index 0000000..3708b3d
--- /dev/null
+++ b/models/tests/codepattern/structure/SymbolicReplication8/expected_src/Top.cc
@@ -0,0 +1,89 @@
+
+#include "Top.hh"
+
+#include <cstddef>
+#include "umlrtcapsuleclass.hh"
+#include "umlrtcommsportrole.hh"
+#include "umlrtframeservice.hh"
+#include "umlrtslot.hh"
+class UMLRTRtsInterface;
+struct UMLRTCommsPort;
+
+Capsule_Top::Capsule_Top( const UMLRTCapsuleClass * cd, UMLRTSlot * st, const UMLRTCommsPort * * border, const UMLRTCommsPort * * internal, bool isStat )
+: UMLRTCapsule( NULL, cd, st, border, internal, isStat )
+, protocol1( borderPorts[borderport_protocol1] )
+{
+}
+
+
+
+
+
+void Capsule_Top::bindPort( bool isBorder, int portId, int index )
+{
+    if( isBorder )
+        switch( portId )
+        {
+        case borderport_protocol1:
+            UMLRTFrameService::sendBoundUnbound( borderPorts, borderport_protocol1, index, true );
+            break;
+        }
+}
+
+void Capsule_Top::unbindPort( bool isBorder, int portId, int index )
+{
+    if( isBorder )
+        switch( portId )
+        {
+        case borderport_protocol1:
+            UMLRTFrameService::sendBoundUnbound( borderPorts, borderport_protocol1, index, false );
+            UMLRTFrameService::disconnectPort( borderPorts[borderport_protocol1], index );
+            break;
+        }
+}
+
+void Capsule_Top::initialize( const UMLRTMessage & msg )
+{
+}
+
+void Capsule_Top::inject( const UMLRTMessage & msg )
+{
+}
+
+
+static const UMLRTCommsPortRole portroles_border[] = 
+{
+    {
+        Capsule_Top::port_protocol1,
+        "Protocol1",
+        "protocol1",
+        "",
+        6,
+        true,
+        false,
+        false,
+        false,
+        false,
+        false,
+        true
+    }
+};
+
+static void instantiate_Top( const UMLRTRtsInterface * rts, UMLRTSlot * slot, const UMLRTCommsPort * * borderPorts )
+{
+    slot->capsule = new Capsule_Top( &Top, slot, borderPorts, NULL, false );
+}
+
+const UMLRTCapsuleClass Top = 
+{
+    "Top",
+    NULL,
+    instantiate_Top,
+    0,
+    NULL,
+    1,
+    portroles_border,
+    0,
+    NULL
+};
+
diff --git a/models/tests/codepattern/structure/SymbolicReplication8/expected_src/Top.hh b/models/tests/codepattern/structure/SymbolicReplication8/expected_src/Top.hh
new file mode 100644
index 0000000..b55e84b
--- /dev/null
+++ b/models/tests/codepattern/structure/SymbolicReplication8/expected_src/Top.hh
@@ -0,0 +1,38 @@
+
+#ifndef TOP_HH
+#define TOP_HH
+
+#include "Protocol1.hh"
+#include "umlrtcapsule.hh"
+#include "umlrtcapsuleclass.hh"
+#include "umlrtmessage.hh"
+struct UMLRTCommsPort;
+struct UMLRTSlot;
+
+class Capsule_Top : public UMLRTCapsule
+{
+public:
+    Capsule_Top( const UMLRTCapsuleClass * cd, UMLRTSlot * st, const UMLRTCommsPort * * border, const UMLRTCommsPort * * internal, bool isStat );
+protected:
+    Protocol1::Base protocol1;
+public:
+    enum BorderPortId
+    {
+        borderport_protocol1
+    };
+    enum PartId
+    {
+    };
+    enum PortId
+    {
+        port_protocol1
+    };
+    virtual void bindPort( bool isBorder, int portId, int index );
+    virtual void unbindPort( bool isBorder, int portId, int index );
+    virtual void initialize( const UMLRTMessage & msg );
+    virtual void inject( const UMLRTMessage & msg );
+};
+extern const UMLRTCapsuleClass Top;
+
+#endif
+
diff --git a/models/tests/codepattern/structure/SymbolicReplication8/expected_src/TopControllers.cc b/models/tests/codepattern/structure/SymbolicReplication8/expected_src/TopControllers.cc
new file mode 100644
index 0000000..4c7e957
--- /dev/null
+++ b/models/tests/codepattern/structure/SymbolicReplication8/expected_src/TopControllers.cc
@@ -0,0 +1,96 @@
+
+#include "TopControllers.hh"
+
+#include "Top.hh"
+#include "umlrtcapsuleclass.hh"
+#include "umlrtcommsport.hh"
+#include "umlrtcommsportfarend.hh"
+#include "umlrtcontroller.hh"
+#include "umlrtslot.hh"
+#include <cstddef>
+
+
+static UMLRTController DefaultController_( "DefaultController" );
+
+UMLRTController * DefaultController = &DefaultController_;
+
+static UMLRTCommsPortFarEnd borderfarEndList_Top[] = 
+{
+    {
+        0,
+        NULL
+    },
+    {
+        0,
+        NULL
+    },
+    {
+        0,
+        NULL
+    },
+    {
+        0,
+        NULL
+    },
+    {
+        0,
+        NULL
+    },
+    {
+        0,
+        NULL
+    }
+};
+
+UMLRTCommsPort borderports_Top[] = 
+{
+    {
+        &Top,
+        Capsule_Top::borderport_protocol1,
+        &Top_slots[InstId_Top],
+        6,
+        borderfarEndList_Top,
+        NULL,
+        NULL,
+        "",
+        true,
+        true,
+        true,
+        false,
+        false,
+        false,
+        false,
+        false,
+        false,
+        false,
+        true
+    }
+};
+
+static const UMLRTCommsPort * borderports_Top_ptrs[] = 
+{
+    &borderports_Top[0]
+};
+
+static Capsule_Top top( &Top, &Top_slots[InstId_Top], borderports_Top_ptrs, NULL, true );
+
+UMLRTSlot Top_slots[] = 
+{
+    {
+        "Top",
+        0,
+        &Top,
+        NULL,
+        0,
+        &top,
+        &DefaultController_,
+        0,
+        NULL,
+        1,
+        borderports_Top,
+        NULL,
+        true,
+        false
+    }
+};
+
diff --git a/models/tests/codepattern/structure/SymbolicReplication8/expected_src/TopControllers.hh b/models/tests/codepattern/structure/SymbolicReplication8/expected_src/TopControllers.hh
new file mode 100644
index 0000000..0d5aac6
--- /dev/null
+++ b/models/tests/codepattern/structure/SymbolicReplication8/expected_src/TopControllers.hh
@@ -0,0 +1,18 @@
+
+#ifndef TOPCONTROLLERS_HH
+#define TOPCONTROLLERS_HH
+
+class UMLRTController;
+struct UMLRTCommsPort;
+struct UMLRTSlot;
+
+enum CapsuleInstanceId
+{
+    InstId_Top
+};
+extern UMLRTController * DefaultController;
+extern UMLRTCommsPort borderports_Top[];
+extern UMLRTSlot Top_slots[];
+
+#endif
+
diff --git a/models/tests/codepattern/structure/SymbolicReplication8/expected_src/TopMain.cc b/models/tests/codepattern/structure/SymbolicReplication8/expected_src/TopMain.cc
new file mode 100644
index 0000000..bf88ec4
--- /dev/null
+++ b/models/tests/codepattern/structure/SymbolicReplication8/expected_src/TopMain.cc
@@ -0,0 +1,38 @@
+#include "umlrtmain.hh"
+
+#include "umlrtcontroller.hh"
+#include "TopControllers.hh"
+#include "umlrtcapsuletocontrollermap.hh"
+#include "umlrtmessagepool.hh"
+#include "umlrtsignalelementpool.hh"
+#include "umlrttimerpool.hh"
+#include "umlrtuserconfig.hh"
+#include <stdio.h>
+
+static UMLRTSignalElement signalElementBuffer[USER_CONFIG_SIGNAL_ELEMENT_POOL_SIZE];
+static UMLRTSignalElementPool signalElementPool( signalElementBuffer, USER_CONFIG_SIGNAL_ELEMENT_POOL_SIZE );
+
+static UMLRTMessage messageBuffer[USER_CONFIG_MESSAGE_POOL_SIZE];
+static UMLRTMessagePool messagePool( messageBuffer, USER_CONFIG_MESSAGE_POOL_SIZE );
+
+static UMLRTTimer timers[USER_CONFIG_TIMER_POOL_SIZE];
+static UMLRTTimerPool timerPool( timers, USER_CONFIG_TIMER_POOL_SIZE );
+
+int main( int argc, char * argv[] )
+{
+    UMLRTController::initializePools( &signalElementPool, &messagePool, &timerPool );
+    UMLRTMain::setArgs( argc, argv );
+    UMLRTCapsuleToControllerMap::setDefaultSlotList( Top_slots, 1 );
+
+    if( ! UMLRTMain::targetStartup() )
+        return EXIT_FAILURE;
+
+    DefaultController->spawn();
+
+    if( ! UMLRTMain::mainLoop() )
+        return UMLRTMain::targetShutdown( false );
+
+    DefaultController->join();
+
+    return UMLRTMain::targetShutdown( true );
+}