diff --git a/projectMDE/.settings/org.eclipse.ltk.core.refactoring.prefs b/projectMDE/.settings/org.eclipse.ltk.core.refactoring.prefs
new file mode 100644
index 0000000000000000000000000000000000000000..cfcd1d3c22f7ad061b0ffb72377bff737ba31120
--- /dev/null
+++ b/projectMDE/.settings/org.eclipse.ltk.core.refactoring.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false
diff --git a/projectMDE/.settings/org.eclipse.m2m.qvt.oml.mmodel.urimap b/projectMDE/.settings/org.eclipse.m2m.qvt.oml.mmodel.urimap
index 865f17df44cf9992a279225aa33e63b16c61c87b..a24930320f9886af85cc1a4ff632331646f163e2 100644
--- a/projectMDE/.settings/org.eclipse.m2m.qvt.oml.mmodel.urimap
+++ b/projectMDE/.settings/org.eclipse.m2m.qvt.oml.mmodel.urimap
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="ASCII"?>
 <uriMap:MappingContainer xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:uriMap="http:///www.eclipse.org/m2m/qvt/oml/MModelUriMap/1.0.0">
   <mapping sourceURI="http://www.example.org/examples/example.ecore" targetURI="platform:/resource/projectMDE/metamodel/csProgram/CsProgram.ecore"/>
-  <mapping sourceURI="http://www.example.org/unityGameDSL" targetURI="platform:/resource/projectMDE/metamodel/gameDSL/unityGameDSL.ecore"/>
   <mapping sourceURI="http://www.example.org/unityGameDSL_modded" targetURI="platform:/resource/projectMDE/metamodel/gameDSL/unityGameDSL2_modded.ecore"/>
 </uriMap:MappingContainer>
diff --git a/projectMDE/metamodel/csProgram/csScript.aird b/projectMDE/metamodel/csProgram/csScript.aird
index 293a762ee8b097303dd9206c8686c05fd9c27415..f500d04971c5c887ac8da9b60cea1a84cf62ef23 100644
--- a/projectMDE/metamodel/csProgram/csScript.aird
+++ b/projectMDE/metamodel/csProgram/csScript.aird
@@ -4,7 +4,7 @@
     <semanticResources>CsProgram.ecore</semanticResources>
     <ownedViews xmi:type="viewpoint:DView" uid="_-0_rYCBkEeyvj73D1m_E8w">
       <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']"/>
-      <ownedRepresentationDescriptors xmi:type="viewpoint:DRepresentationDescriptor" uid="_AEPswCBlEeyvj73D1m_E8w" name="cs script" repPath="#_AD4gYCBlEeyvj73D1m_E8w" changeId="6341e2d9-0e52-4797-95d7-587babab7864">
+      <ownedRepresentationDescriptors xmi:type="viewpoint:DRepresentationDescriptor" uid="_AEPswCBlEeyvj73D1m_E8w" name="cs script" repPath="#_AD4gYCBlEeyvj73D1m_E8w" changeId="fc10db14-12cc-442a-ac41-487c5208c8a2">
         <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
         <target xmi:type="ecore:EPackage" href="CsProgram.ecore#/"/>
       </ownedRepresentationDescriptors>
@@ -1010,17 +1010,17 @@
         </edges>
         <edges xmi:type="notation:Edge" xmi:id="_rJ24cDTnEeylAPbaPfEHbw" type="4001" element="_rJx__zTnEeylAPbaPfEHbw" source="_PCxOACqLEey2QKvLsdbhPw" target="_BMkrgCqREey2QKvLsdbhPw">
           <children xmi:type="notation:Node" xmi:id="_rJ24dDTnEeylAPbaPfEHbw" type="6001">
-            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rJ24dTTnEeylAPbaPfEHbw" x="-336" y="14"/>
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rJ24dTTnEeylAPbaPfEHbw" x="-289" y="14"/>
           </children>
           <children xmi:type="notation:Node" xmi:id="_rJ24djTnEeylAPbaPfEHbw" type="6002">
-            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rJ24dzTnEeylAPbaPfEHbw" x="79" y="10"/>
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rJ24dzTnEeylAPbaPfEHbw" x="174" y="10"/>
           </children>
           <children xmi:type="notation:Node" xmi:id="_rJ24eDTnEeylAPbaPfEHbw" type="6003">
             <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rJ24eTTnEeylAPbaPfEHbw" x="-10"/>
           </children>
           <styles xmi:type="notation:ConnectorStyle" xmi:id="_rJ24cTTnEeylAPbaPfEHbw" routing="Rectilinear"/>
           <styles xmi:type="notation:FontStyle" xmi:id="_rJ24cjTnEeylAPbaPfEHbw" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
-          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_rJ24czTnEeylAPbaPfEHbw" points="[25, -49, -496, 571]$[25, -79, -496, 541]$[475, -79, -46, 541]$[475, -536, -46, 84]"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_rJ24czTnEeylAPbaPfEHbw" points="[25, -49, -496, 571]$[25, -174, -496, 446]$[475, -174, -46, 446]$[475, -536, -46, 84]"/>
           <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_rJ3fgDTnEeylAPbaPfEHbw" id="(0.5,0.5)"/>
           <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_rJ3fgTTnEeylAPbaPfEHbw" id="(0.5,0.5)"/>
         </edges>
diff --git a/projectMDE/metamodel/diagrams/CsProgram.jpg b/projectMDE/metamodel/diagrams/CsProgram.jpg
index 2028df94c763d958afff5793d74b11cda95610e9..8c03a6aea299340faab1707828da1c137e8be588 100644
Binary files a/projectMDE/metamodel/diagrams/CsProgram.jpg and b/projectMDE/metamodel/diagrams/CsProgram.jpg differ
diff --git a/projectMDE/model/ExtendedProgram.xmi b/projectMDE/model/ExtendedProgram.xmi
new file mode 100644
index 0000000000000000000000000000000000000000..4d591c8d49fdf5b14668ec98cdc7f8c2c5e43806
--- /dev/null
+++ b/projectMDE/model/ExtendedProgram.xmi
@@ -0,0 +1,195 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<cs:Program
+    xmi:version="2.0"
+    xmlns:xmi="http://www.omg.org/XMI"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:cs="http://www.example.org/cs.ecore"
+    xsi:schemaLocation="http://www.example.org/cs.ecore ../metamodel/csProgram/CsProgram.ecore">
+  <files filename="ExtendedTypes">
+    <namespaces
+        namespace="Extended">
+      <typedefs
+          xsi:type="cs:Delegate"
+          identifier="Formatter">
+        <parameters
+            identifier="log">
+          <type
+              xsi:type="cs:PrimitiveType"
+              type="string"/>
+        </parameters>
+        <returnType
+            xsi:type="cs:PrimitiveType"/>
+      </typedefs>
+      <typedefs
+          xsi:type="cs:Interface"
+          identifier="ISerializable">
+        <methods
+            identifier="Serialize">
+          <returnType
+              xsi:type="cs:CompoundType"
+              referencedType="//@externalTypes.1"/>
+        </methods>
+        <methods
+            identifier="Deserialize">
+          <parameters
+              identifier="bytes">
+            <type
+                xsi:type="cs:CompoundType"
+                referencedType="//@externalTypes.1"/>
+          </parameters>
+          <returnType
+              xsi:type="cs:PrimitiveType"/>
+        </methods>
+      </typedefs>
+      <typedefs
+          xsi:type="cs:Struct"
+          identifier="MyReadonlyStruct"
+          specifier="readonly">
+        <members
+            identifier="value"
+            specifier="readonly">
+          <type
+              xsi:type="cs:PrimitiveType"
+              type="string"/>
+        </members>
+      </typedefs>
+      <typedefs
+          xsi:type="cs:Class"
+          identifier="Base">
+        <typedefs
+            xsi:type="cs:Struct"
+            identifier="Data"
+            implements="//@files.0/@namespaces.0/@typedefs.1">
+          <members
+              identifier="value">
+            <type
+                xsi:type="cs:PrimitiveType"
+                type="float"/>
+          </members>
+          <constructors>
+            <body>this.value = value;</body>
+            <parameters
+                identifier="value">
+              <type
+                  xsi:type="cs:PrimitiveType"
+                  type="float"/>
+            </parameters>
+          </constructors>
+          <methods
+              identifier="Serialize">
+            <body>return System.BitConverter.GetBytes(value);</body>
+            <returnType
+                xsi:type="cs:CompoundType"
+                referencedType="//@externalTypes.1"/>
+          </methods>
+          <methods
+              identifier="Deserialize">
+            <parameters
+                identifier="bytes">
+              <type
+                  xsi:type="cs:CompoundType"
+                  referencedType="//@externalTypes.1"/>
+            </parameters>
+            <body>value = System.BitConverter.ToSingle(bytes, 0);</body>
+            <returnType
+                xsi:type="cs:PrimitiveType"/>
+          </methods>
+        </typedefs>
+        <members
+            identifier="data">
+          <type
+              xsi:type="cs:CompoundType"
+              referencedType="//@files.0/@namespaces.0/@typedefs.3/@typedefs.0"/>
+        </members>
+      </typedefs>
+      <typedefs
+          xsi:type="cs:Class"
+          identifier="Derived"
+          implements="//@files.0/@namespaces.0/@typedefs.1"
+          baseType="//@files.0/@namespaces.0/@typedefs.3">
+        <constructors>
+          <body>data = new Data(0.5f);</body>
+        </constructors>
+        <methods
+            identifier="Serialize">
+          <body>return data.Serialize();</body>
+          <returnType
+              xsi:type="cs:CompoundType"
+              referencedType="//@externalTypes.1"/>
+        </methods>
+        <methods
+            identifier="Deserialize">
+          <parameters
+              identifier="bytes">
+            <type
+                xsi:type="cs:CompoundType"
+                referencedType="//@externalTypes.1"/>
+          </parameters>
+          <body>data.Deserialize(bytes);</body>
+          <returnType
+              xsi:type="cs:PrimitiveType"/>
+        </methods>
+      </typedefs>
+    </namespaces>
+  </files>
+  <files filename="ExtendedEnum">
+    <namespaces
+        namespace="Extended">
+      <typedefs
+          xsi:type="cs:Enum"
+          identifier="MyEnum">
+        <literals
+            identifier="ONE"
+            value="1"/>
+        <literals
+            identifier="TWO"/>
+        <literals
+            identifier="THREE"/>
+        <literals
+            identifier="FOUR"/>
+        <literals
+            identifier="FIVE"/>
+        <literals
+            identifier="EIGHT"
+            value="8"/>
+        <literals
+            identifier="NINE"/>
+      </typedefs>
+      <typedefs
+          xsi:type="cs:Enum"
+          identifier="ByteFlags"
+          base="byte">
+        <literals
+            identifier="F1"
+            value="1"/>
+        <literals
+            identifier="F2"
+            value="1 &lt;&lt; 1"/>
+        <literals
+            identifier="F3"
+            value="1 &lt;&lt; 2"/>
+        <literals
+            identifier="F4"
+            value="1 &lt;&lt; 3"/>
+        <literals
+            identifier="F5"
+            value="1 &lt;&lt; 4"/>
+        <literals
+            identifier="F6"
+            value="1 &lt;&lt; 5"/>
+        <literals
+            identifier="F7"
+            value="1 &lt;&lt; 6"/>
+        <literals
+            identifier="F8"
+            value="1 &lt;&lt; 7"/>
+      </typedefs>
+    </namespaces>
+  </files>
+  <externalTypes
+      identifier="Vector3"
+      importedFrom="UnityEngine"/>
+  <externalTypes
+      identifier="Byte[]"
+      importedFrom="System"/>
+</cs:Program>
diff --git a/projectMDE/transforms/UGameTransform_modded.qvto b/projectMDE/transforms/UGameTransform_modded.qvto
index d003310f8ed8d51975da9de379d40f951f85abf8..081157b754519e60ea3d897b32cf598698e817be 100644
--- a/projectMDE/transforms/UGameTransform_modded.qvto
+++ b/projectMDE/transforms/UGameTransform_modded.qvto
@@ -257,8 +257,8 @@ mapping Unity::GameObject::GameObj2Class() : Prog::Class {
 		updateMethod.body += action.Action2Body(createCounter);
 	};
 	-- KeyPress
-	self.interaction->forEach(keypress | keypress.oclIsTypeOf(Unity::Trigger)){
-		keypress.oclAsType(Unity::Actionkey)->SetActionKeyBody(updateMethod, createCounter);
+	self.interaction->forEach(keypress){
+		keypress->SetActionKeyBody(updateMethod, createCounter);
 	};
 }
 
diff --git a/projectMDE_acceleo/bin/extended/ExtendedEnum.cs b/projectMDE_acceleo/bin/extended/ExtendedEnum.cs
new file mode 100644
index 0000000000000000000000000000000000000000..3c18cb3afb6cb38f60b6def2cc30f07e3e49b09d
--- /dev/null
+++ b/projectMDE_acceleo/bin/extended/ExtendedEnum.cs
@@ -0,0 +1,10 @@
+namespace Extended {
+	// Type definitions
+	public enum MyEnum {
+		ONE = 1, TWO, THREE, FOUR, FIVE, EIGHT = 8, NINE
+	}
+
+	public enum ByteFlags : byte {
+		F1 = 1, F2 = 1 << 1, F3 = 1 << 2, F4 = 1 << 3, F5 = 1 << 4, F6 = 1 << 5, F7 = 1 << 6, F8 = 1 << 7
+	}
+} 
diff --git a/projectMDE_acceleo/bin/extended/ExtendedTypes.cs b/projectMDE_acceleo/bin/extended/ExtendedTypes.cs
new file mode 100644
index 0000000000000000000000000000000000000000..dfd2d0e68bd84cc7dafedc2dc0f4a199b0c1bd54
--- /dev/null
+++ b/projectMDE_acceleo/bin/extended/ExtendedTypes.cs
@@ -0,0 +1,64 @@
+namespace Extended {
+	// Type definitions
+	public delegate void Formatter(string log);
+
+	public interface ISerializable {
+		// interface methods
+		System.Byte[] Serialize();
+		void Deserialize(System.Byte[] bytes);
+	}
+
+	public readonly struct MyReadonlyStruct {
+	
+		// members
+		public readonly string value;
+	
+	}
+
+	public class Base {
+	
+		// members
+		public Extended.Base.Data data;
+	
+		// inner types
+		public struct Data : Extended.ISerializable {
+		
+			// members
+			public float value;
+		
+			// constructors
+			public  Data(float value) {
+				this.value = value;
+			}
+		
+			// methods
+			public System.Byte[] Serialize() {
+				return System.BitConverter.GetBytes(value);
+			}
+		
+			public void Deserialize(System.Byte[] bytes) {
+				value = System.BitConverter.ToSingle(bytes, 0);
+			}
+		
+		}
+	
+	}
+
+	public class Derived : Extended.Base, Extended.ISerializable {
+	
+		// constructors
+		public  Derived() {
+			data = new Data(0.5f);
+		}
+	
+		// methods
+		public System.Byte[] Serialize() {
+			return data.Serialize();
+		}
+	
+		public void Deserialize(System.Byte[] bytes) {
+			data.Deserialize(bytes);
+		}
+	
+	}
+} 
diff --git a/projectMDE_acceleo/bin/projectMDE_acceleo/main/generate.emtl b/projectMDE_acceleo/bin/projectMDE_acceleo/main/generate.emtl
index 163a3d10315e19a04bce6786c1b4a37cdcff105a..7c0bbd0764537caf03a3abba93f0b70e848039ff 100644
--- a/projectMDE_acceleo/bin/projectMDE_acceleo/main/generate.emtl
+++ b/projectMDE_acceleo/bin/projectMDE_acceleo/main/generate.emtl
@@ -170,7 +170,7 @@
         <argument xsi:type="ocl.ecore:VariableExp" name="struct" referredVariable="/0/generateInternalType.1/struct">
           <eType xsi:type="ecore:EClass" href="http://www.example.org/cs.ecore#//Struct"/>
         </argument>
-        <argument xsi:type="ocl.ecore:PropertyCallExp" eType="/3/OrderedSet(Interface)">
+        <argument xsi:type="ocl.ecore:PropertyCallExp" eType="/3/OrderedSet(TypeDef)">
           <source xsi:type="ocl.ecore:VariableExp" name="struct" referredVariable="/0/generateInternalType.1/struct">
             <eType xsi:type="ecore:EClass" href="http://www.example.org/cs.ecore#//Struct"/>
           </source>
@@ -206,7 +206,7 @@
             </source>
             <referredOperation xsi:type="ecore:EOperation" href="http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/Set(T)_Class/asOrderedSet"/>
           </source>
-          <argument xsi:type="ocl.ecore:PropertyCallExp" eType="/3/OrderedSet(Interface)">
+          <argument xsi:type="ocl.ecore:PropertyCallExp" eType="/3/OrderedSet(TypeDef)">
             <source xsi:type="ocl.ecore:VariableExp" name="class" referredVariable="/0/generateInternalType.2/class">
               <eType xsi:type="ecore:EClass" href="http://www.example.org/cs.ecore#//Class"/>
             </source>
@@ -434,7 +434,7 @@
       </parameter>
     </ownedModuleElement>
     <ownedModuleElement xsi:type="mtl:Template" name="generateInternalType" visibility="Public">
-      <body xsi:type="mtl:TemplateInvocation" definition="/0/generateTypeDef">
+      <body xsi:type="mtl:TemplateInvocation" definition="/0/access">
         <eType xsi:type="ocl.ecore:PrimitiveType" href="http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String"/>
         <argument xsi:type="ocl.ecore:PropertyCallExp">
           <eType xsi:type="ecore:EEnum" href="http://www.example.org/cs.ecore#//AccessModifier"/>
@@ -443,6 +443,9 @@
           </source>
           <referredProperty xsi:type="ecore:EAttribute" href="http://www.example.org/cs.ecore#//InternalType/accessability"/>
         </argument>
+      </body>
+      <body xsi:type="mtl:TemplateInvocation" definition="/0/spec">
+        <eType xsi:type="ocl.ecore:PrimitiveType" href="http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String"/>
         <argument xsi:type="ocl.ecore:PropertyCallExp">
           <eType xsi:type="ecore:EEnum" href="http://www.example.org/cs.ecore#//Specifier"/>
           <source xsi:type="ocl.ecore:VariableExp" name="delegate" referredVariable="/0/generateInternalType.5/delegate">
@@ -450,21 +453,36 @@
           </source>
           <referredProperty xsi:type="ecore:EAttribute" href="http://www.example.org/cs.ecore#//TypeDef/specifier"/>
         </argument>
-        <argument xsi:type="ocl.ecore:OperationCallExp">
+      </body>
+      <body xsi:type="ocl.ecore:OperationCallExp" referredOperation="/1/oclstdlib_OclAny_Class/toString">
+        <eType xsi:type="ocl.ecore:PrimitiveType" href="http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String"/>
+        <source xsi:type="ocl.ecore:OperationCallExp">
           <eType xsi:type="ecore:EEnum" href="http://www.example.org/cs.ecore#//EType"/>
           <source xsi:type="ocl.ecore:VariableExp" name="delegate" referredVariable="/0/generateInternalType.5/delegate">
             <eType xsi:type="ecore:EClass" href="http://www.example.org/cs.ecore#//Delegate"/>
           </source>
           <referredOperation xsi:type="ecore:EOperation" href="http://www.example.org/cs.ecore#//TypeDef/getType"/>
-        </argument>
-        <argument xsi:type="ocl.ecore:PropertyCallExp">
-          <eType xsi:type="ocl.ecore:PrimitiveType" href="http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String"/>
+        </source>
+      </body>
+      <body xsi:type="ocl.ecore:StringLiteralExp" stringSymbol=" "/>
+      <body xsi:type="ocl.ecore:OperationCallExp">
+        <eType xsi:type="ocl.ecore:PrimitiveType" href="http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String"/>
+        <source xsi:type="ocl.ecore:PropertyCallExp">
+          <eType xsi:type="ecore:EClass" href="http://www.example.org/cs.ecore#//Type"/>
           <source xsi:type="ocl.ecore:VariableExp" name="delegate" referredVariable="/0/generateInternalType.5/delegate">
             <eType xsi:type="ecore:EClass" href="http://www.example.org/cs.ecore#//Delegate"/>
           </source>
-          <referredProperty xsi:type="ecore:EAttribute" href="http://www.example.org/cs.ecore#//TypeDef/identifier"/>
-        </argument>
-        <argument xsi:type="ocl.ecore:CollectionLiteralExp" eType="/3/OrderedSet(OclVoid)" kind="OrderedSet"/>
+          <referredProperty xsi:type="ecore:EReference" href="http://www.example.org/cs.ecore#//Delegate/returnType"/>
+        </source>
+        <referredOperation xsi:type="ecore:EOperation" href="http://www.example.org/cs.ecore#//Type/getQualifiedName"/>
+      </body>
+      <body xsi:type="ocl.ecore:StringLiteralExp" stringSymbol=" "/>
+      <body xsi:type="ocl.ecore:PropertyCallExp">
+        <eType xsi:type="ocl.ecore:PrimitiveType" href="http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String"/>
+        <source xsi:type="ocl.ecore:VariableExp" name="delegate" referredVariable="/0/generateInternalType.5/delegate">
+          <eType xsi:type="ecore:EClass" href="http://www.example.org/cs.ecore#//Delegate"/>
+        </source>
+        <referredProperty xsi:type="ecore:EAttribute" href="http://www.example.org/cs.ecore#//TypeDef/identifier"/>
       </body>
       <body xsi:type="ocl.ecore:StringLiteralExp" stringSymbol="("/>
       <body xsi:type="mtl:TemplateInvocation" definition="/0/generateParams">
@@ -752,7 +770,7 @@
           </source>
           <referredProperty xsi:type="ecore:EReference" href="http://www.example.org/cs.ecore#//ConstructorDef/parameters"/>
         </argument>
-        <argument xsi:type="ocl.ecore:PropertyCallExp" eType="/3/OrderedSet(String)">
+        <argument xsi:type="ocl.ecore:PropertyCallExp" eType="/3/Sequence(String)">
           <source xsi:type="ocl.ecore:VariableExp" name="constructor" referredVariable="/0/generateConstructor/constructor">
             <eType xsi:type="ecore:EClass" href="http://www.example.org/cs.ecore#//ConstructorDef"/>
           </source>
@@ -804,7 +822,7 @@
           </source>
           <referredProperty xsi:type="ecore:EReference" href="http://www.example.org/cs.ecore#//MethodDef/parameters"/>
         </argument>
-        <argument xsi:type="ocl.ecore:PropertyCallExp" eType="/3/OrderedSet(String)">
+        <argument xsi:type="ocl.ecore:PropertyCallExp" eType="/3/Sequence(String)">
           <source xsi:type="ocl.ecore:VariableExp" name="method" referredVariable="/0/generateMethod/method">
             <eType xsi:type="ecore:EClass" href="http://www.example.org/cs.ecore#//MethodDef"/>
           </source>
@@ -850,7 +868,7 @@
         <loopVariable name="stat">
           <eType xsi:type="ocl.ecore:PrimitiveType" href="http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String"/>
         </loopVariable>
-        <iterSet xsi:type="ocl.ecore:VariableExp" name="_body" eType="/3/OrderedSet(String)" referredVariable="/0/generateFunction/_body"/>
+        <iterSet xsi:type="ocl.ecore:VariableExp" name="_body" eType="/3/Sequence(String)" referredVariable="/0/generateFunction/_body"/>
       </body>
       <body xsi:type="ocl.ecore:StringLiteralExp" stringSymbol="}"/>
       <parameter name="access">
@@ -866,7 +884,7 @@
         <eType xsi:type="ocl.ecore:PrimitiveType" href="http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String"/>
       </parameter>
       <parameter name="params" eType="/3/OrderedSet(Parameter)"/>
-      <parameter name="_body" eType="/3/OrderedSet(String)"/>
+      <parameter name="_body" eType="/3/Sequence(String)"/>
     </ownedModuleElement>
     <ownedModuleElement xsi:type="mtl:Template" name="generateParams" visibility="Public">
       <body xsi:type="mtl:ForBlock">
@@ -1223,7 +1241,7 @@
           <eType xsi:type="ocl.ecore:PrimitiveType" href="http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String"/>
         </eParameters>
         <eParameters name="params" eType="/3/OrderedSet(Parameter)"/>
-        <eParameters name="_body" eType="/3/OrderedSet(String)"/>
+        <eParameters name="_body" eType="/3/Sequence(String)"/>
       </eOperations>
       <eOperations name="generateParams">
         <eAnnotations source="http://www.eclipse.org/ocl/1.1.0/OCL">
@@ -1389,7 +1407,7 @@
     <eClassifiers xsi:type="ocl.ecore:OrderedSetType" name="OrderedSet(Parameter)" instanceClassName="java.util.LinkedHashSet">
       <elementType xsi:type="ecore:EClass" href="http://www.example.org/cs.ecore#//Parameter"/>
     </eClassifiers>
-    <eClassifiers xsi:type="ocl.ecore:OrderedSetType" name="OrderedSet(String)" instanceClassName="java.util.LinkedHashSet">
+    <eClassifiers xsi:type="ocl.ecore:SequenceType" name="Sequence(String)" instanceClassName="java.util.List">
       <elementType xsi:type="ocl.ecore:PrimitiveType" href="http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String"/>
     </eClassifiers>
     <eClassifiers xsi:type="ocl.ecore:OrderedSetType" name="OrderedSet(File)" instanceClassName="java.util.LinkedHashSet">
@@ -1398,12 +1416,12 @@
     <eClassifiers xsi:type="ocl.ecore:OrderedSetType" name="OrderedSet(Namespace)" instanceClassName="java.util.LinkedHashSet">
       <elementType xsi:type="ecore:EClass" href="http://www.example.org/cs.ecore#//Namespace"/>
     </eClassifiers>
+    <eClassifiers xsi:type="ocl.ecore:OrderedSetType" name="OrderedSet(String)" instanceClassName="java.util.LinkedHashSet">
+      <elementType xsi:type="ocl.ecore:PrimitiveType" href="http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String"/>
+    </eClassifiers>
     <eClassifiers xsi:type="ocl.ecore:OrderedSetType" name="OrderedSet(InternalType)" instanceClassName="java.util.LinkedHashSet">
       <elementType xsi:type="ecore:EClass" href="http://www.example.org/cs.ecore#//InternalType"/>
     </eClassifiers>
-    <eClassifiers xsi:type="ocl.ecore:OrderedSetType" name="OrderedSet(Interface)" instanceClassName="java.util.LinkedHashSet">
-      <elementType xsi:type="ecore:EClass" href="http://www.example.org/cs.ecore#//Interface"/>
-    </eClassifiers>
     <eClassifiers xsi:type="ocl.ecore:SetType" name="Set(TypeDef)" instanceClassName="java.util.Set">
       <elementType xsi:type="ecore:EClass" href="http://www.example.org/cs.ecore#//TypeDef"/>
     </eClassifiers>
@@ -1750,6 +1768,18 @@
   <ocl.ecore:Variable name="self">
     <eType xsi:type="ecore:EClass" href="http://www.example.org/cs.ecore#//Delegate"/>
   </ocl.ecore:Variable>
+  <ocl.ecore:Variable name="self">
+    <eType xsi:type="ecore:EClass" href="http://www.example.org/cs.ecore#//Delegate"/>
+  </ocl.ecore:Variable>
+  <ocl.ecore:Variable name="self">
+    <eType xsi:type="ecore:EClass" href="http://www.example.org/cs.ecore#//Delegate"/>
+  </ocl.ecore:Variable>
+  <ocl.ecore:Variable name="self">
+    <eType xsi:type="ecore:EClass" href="http://www.example.org/cs.ecore#//Delegate"/>
+  </ocl.ecore:Variable>
+  <ocl.ecore:Variable name="self">
+    <eType xsi:type="ecore:EClass" href="http://www.example.org/cs.ecore#//Delegate"/>
+  </ocl.ecore:Variable>
   <ocl.ecore:Variable name="self">
     <eType xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2002/Ecore#//EObject"/>
   </ocl.ecore:Variable>
@@ -2843,1052 +2873,1082 @@
     </eAnnotations>
     <eAnnotations source="positions.163" references="/0/generateInternalType.5">
       <details key="start" value="2374"/>
-      <details key="end" value="2604"/>
+      <details key="end" value="2644"/>
       <details key="line" value="72"/>
     </eAnnotations>
     <eAnnotations source="positions.164" references="/0/generateInternalType.5/%">
       <details key="start" value="2435"/>
-      <details key="end" value="2549"/>
+      <details key="end" value="2465"/>
       <details key="line" value="0"/>
     </eAnnotations>
     <eAnnotations source="positions.165" references="/0/generateInternalType.5/%/%">
-      <details key="start" value="2451"/>
-      <details key="end" value="2473"/>
+      <details key="start" value="2442"/>
+      <details key="end" value="2464"/>
       <details key="line" value="0"/>
     </eAnnotations>
     <eAnnotations source="positions.166" references="/0/generateInternalType.5/%/%/delegate">
-      <details key="start" value="2451"/>
-      <details key="end" value="2459"/>
+      <details key="start" value="2442"/>
+      <details key="end" value="2450"/>
+      <details key="line" value="0"/>
+    </eAnnotations>
+    <eAnnotations source="positions.167" references="/0/generateInternalType.5/%.1">
+      <details key="start" value="2468"/>
+      <details key="end" value="2492"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.167" references="/0/generateInternalType.5/%/%.1">
-      <details key="start" value="2475"/>
-      <details key="end" value="2493"/>
+    <eAnnotations source="positions.168" references="/0/generateInternalType.5/%.1/%">
+      <details key="start" value="2473"/>
+      <details key="end" value="2491"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.168" references="/0/generateInternalType.5/%/%.1/delegate">
-      <details key="start" value="2475"/>
-      <details key="end" value="2483"/>
+    <eAnnotations source="positions.169" references="/0/generateInternalType.5/%.1/%/delegate">
+      <details key="start" value="2473"/>
+      <details key="end" value="2481"/>
+      <details key="line" value="0"/>
+    </eAnnotations>
+    <eAnnotations source="positions.170" references="/0/generateInternalType.5/%.2">
+      <details key="start" value="2495"/>
+      <details key="end" value="2524"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.169" references="/0/generateInternalType.5/%/%.2">
+    <eAnnotations source="positions.171" references="/0/generateInternalType.5/%.2/%">
       <details key="start" value="2495"/>
       <details key="end" value="2513"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.170" references="/0/generateInternalType.5/%/%.2/delegate">
+    <eAnnotations source="positions.172" references="/0/generateInternalType.5/%.2/%/delegate">
       <details key="start" value="2495"/>
       <details key="end" value="2503"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.171" references="/0/generateInternalType.5/%/%.3">
-      <details key="start" value="2515"/>
-      <details key="end" value="2534"/>
+    <eAnnotations source="positions.173" references="/0/generateInternalType.5/%.3">
+      <details key="start" value="2526"/>
+      <details key="end" value="2527"/>
+      <details key="line" value="73"/>
+    </eAnnotations>
+    <eAnnotations source="positions.174" references="/0/generateInternalType.5/%.4">
+      <details key="start" value="2528"/>
+      <details key="end" value="2566"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.172" references="/0/generateInternalType.5/%/%.3/delegate">
-      <details key="start" value="2515"/>
-      <details key="end" value="2523"/>
+    <eAnnotations source="positions.175" references="/0/generateInternalType.5/%.4/%">
+      <details key="start" value="2528"/>
+      <details key="end" value="2547"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.173" references="/0/generateInternalType.5/%/%.4">
-      <details key="start" value="2536"/>
-      <details key="end" value="2548"/>
+    <eAnnotations source="positions.176" references="/0/generateInternalType.5/%.4/%/delegate">
+      <details key="start" value="2528"/>
+      <details key="end" value="2536"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.174" references="/0/generateInternalType.5/%.1">
-      <details key="start" value="2551"/>
-      <details key="end" value="2552"/>
+    <eAnnotations source="positions.177" references="/0/generateInternalType.5/%.5">
+      <details key="start" value="2568"/>
+      <details key="end" value="2569"/>
       <details key="line" value="73"/>
     </eAnnotations>
-    <eAnnotations source="positions.175" references="/0/generateInternalType.5/%.2">
-      <details key="start" value="2553"/>
-      <details key="end" value="2588"/>
+    <eAnnotations source="positions.178" references="/0/generateInternalType.5/%.6">
+      <details key="start" value="2570"/>
+      <details key="end" value="2589"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.176" references="/0/generateInternalType.5/%.2/%">
-      <details key="start" value="2568"/>
-      <details key="end" value="2587"/>
+    <eAnnotations source="positions.179" references="/0/generateInternalType.5/%.6/delegate">
+      <details key="start" value="2570"/>
+      <details key="end" value="2578"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.177" references="/0/generateInternalType.5/%.2/%/delegate">
-      <details key="start" value="2568"/>
-      <details key="end" value="2576"/>
+    <eAnnotations source="positions.180" references="/0/generateInternalType.5/%.7">
+      <details key="start" value="2591"/>
+      <details key="end" value="2592"/>
+      <details key="line" value="73"/>
+    </eAnnotations>
+    <eAnnotations source="positions.181" references="/0/generateInternalType.5/%.8">
+      <details key="start" value="2593"/>
+      <details key="end" value="2628"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.178" references="/0/generateInternalType.5/%.3">
-      <details key="start" value="2590"/>
-      <details key="end" value="2592"/>
+    <eAnnotations source="positions.182" references="/0/generateInternalType.5/%.8/%">
+      <details key="start" value="2608"/>
+      <details key="end" value="2627"/>
+      <details key="line" value="0"/>
+    </eAnnotations>
+    <eAnnotations source="positions.183" references="/0/generateInternalType.5/%.8/%/delegate">
+      <details key="start" value="2608"/>
+      <details key="end" value="2616"/>
+      <details key="line" value="0"/>
+    </eAnnotations>
+    <eAnnotations source="positions.184" references="/0/generateInternalType.5/%.9">
+      <details key="start" value="2630"/>
+      <details key="end" value="2632"/>
       <details key="line" value="73"/>
     </eAnnotations>
-    <eAnnotations source="positions.179" references="/0/generateInternalType.5/delegate">
+    <eAnnotations source="positions.185" references="/0/generateInternalType.5/delegate">
       <details key="start" value="2412"/>
       <details key="end" value="2431"/>
       <details key="line" value="72"/>
     </eAnnotations>
-    <eAnnotations source="positions.180" references="/0/generateInternalType.6">
-      <details key="start" value="2606"/>
-      <details key="end" value="3022"/>
+    <eAnnotations source="positions.186" references="/0/generateInternalType.6">
+      <details key="start" value="2646"/>
+      <details key="end" value="3062"/>
       <details key="line" value="76"/>
     </eAnnotations>
-    <eAnnotations source="positions.181" references="/0/generateInternalType.6/%">
-      <details key="start" value="2659"/>
-      <details key="end" value="2757"/>
+    <eAnnotations source="positions.187" references="/0/generateInternalType.6/%">
+      <details key="start" value="2699"/>
+      <details key="end" value="2797"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.182" references="/0/generateInternalType.6/%/%">
-      <details key="start" value="2675"/>
-      <details key="end" value="2693"/>
+    <eAnnotations source="positions.188" references="/0/generateInternalType.6/%/%">
+      <details key="start" value="2715"/>
+      <details key="end" value="2733"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.183" references="/0/generateInternalType.6/%/%/enum">
-      <details key="start" value="2675"/>
-      <details key="end" value="2679"/>
+    <eAnnotations source="positions.189" references="/0/generateInternalType.6/%/%/enum">
+      <details key="start" value="2715"/>
+      <details key="end" value="2719"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.184" references="/0/generateInternalType.6/%/%.1">
-      <details key="start" value="2695"/>
-      <details key="end" value="2709"/>
+    <eAnnotations source="positions.190" references="/0/generateInternalType.6/%/%.1">
+      <details key="start" value="2735"/>
+      <details key="end" value="2749"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.185" references="/0/generateInternalType.6/%/%.1/enum">
-      <details key="start" value="2695"/>
-      <details key="end" value="2699"/>
+    <eAnnotations source="positions.191" references="/0/generateInternalType.6/%/%.1/enum">
+      <details key="start" value="2735"/>
+      <details key="end" value="2739"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.186" references="/0/generateInternalType.6/%/%.2">
-      <details key="start" value="2711"/>
-      <details key="end" value="2725"/>
+    <eAnnotations source="positions.192" references="/0/generateInternalType.6/%/%.2">
+      <details key="start" value="2751"/>
+      <details key="end" value="2765"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.187" references="/0/generateInternalType.6/%/%.2/enum">
-      <details key="start" value="2711"/>
-      <details key="end" value="2715"/>
+    <eAnnotations source="positions.193" references="/0/generateInternalType.6/%/%.2/enum">
+      <details key="start" value="2751"/>
+      <details key="end" value="2755"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.188" references="/0/generateInternalType.6/%/%.3">
-      <details key="start" value="2727"/>
-      <details key="end" value="2742"/>
+    <eAnnotations source="positions.194" references="/0/generateInternalType.6/%/%.3">
+      <details key="start" value="2767"/>
+      <details key="end" value="2782"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.189" references="/0/generateInternalType.6/%/%.3/enum">
-      <details key="start" value="2727"/>
-      <details key="end" value="2731"/>
+    <eAnnotations source="positions.195" references="/0/generateInternalType.6/%/%.3/enum">
+      <details key="start" value="2767"/>
+      <details key="end" value="2771"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.190" references="/0/generateInternalType.6/%/%.4">
-      <details key="start" value="2744"/>
-      <details key="end" value="2756"/>
+    <eAnnotations source="positions.196" references="/0/generateInternalType.6/%/%.4">
+      <details key="start" value="2784"/>
+      <details key="end" value="2796"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.191" references="/0/generateInternalType.6/%.1">
-      <details key="start" value="2759"/>
-      <details key="end" value="2827"/>
+    <eAnnotations source="positions.197" references="/0/generateInternalType.6/%.1">
+      <details key="start" value="2799"/>
+      <details key="end" value="2867"/>
       <details key="line" value="77"/>
     </eAnnotations>
-    <eAnnotations source="positions.192" references="/0/generateInternalType.6/%.1/%">
-      <details key="start" value="2796"/>
-      <details key="end" value="2799"/>
+    <eAnnotations source="positions.198" references="/0/generateInternalType.6/%.1/%">
+      <details key="start" value="2836"/>
+      <details key="end" value="2839"/>
       <details key="line" value="77"/>
     </eAnnotations>
-    <eAnnotations source="positions.193" references="/0/generateInternalType.6/%.1/%.1">
-      <details key="start" value="2800"/>
-      <details key="end" value="2820"/>
+    <eAnnotations source="positions.199" references="/0/generateInternalType.6/%.1/%.1">
+      <details key="start" value="2840"/>
+      <details key="end" value="2860"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.194" references="/0/generateInternalType.6/%.1/%.1/%">
-      <details key="start" value="2800"/>
-      <details key="end" value="2809"/>
+    <eAnnotations source="positions.200" references="/0/generateInternalType.6/%.1/%.1/%">
+      <details key="start" value="2840"/>
+      <details key="end" value="2849"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.195" references="/0/generateInternalType.6/%.1/%.1/%/enum">
-      <details key="start" value="2800"/>
-      <details key="end" value="2804"/>
+    <eAnnotations source="positions.201" references="/0/generateInternalType.6/%.1/%.1/%/enum">
+      <details key="start" value="2840"/>
+      <details key="end" value="2844"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.196" references="/0/generateInternalType.6/%.1/%.2">
-      <details key="start" value="2763"/>
-      <details key="end" value="2795"/>
+    <eAnnotations source="positions.202" references="/0/generateInternalType.6/%.1/%.2">
+      <details key="start" value="2803"/>
+      <details key="end" value="2835"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.197" references="/0/generateInternalType.6/%.1/%.2/%">
-      <details key="start" value="2763"/>
-      <details key="end" value="2772"/>
+    <eAnnotations source="positions.203" references="/0/generateInternalType.6/%.1/%.2/%">
+      <details key="start" value="2803"/>
+      <details key="end" value="2812"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.198" references="/0/generateInternalType.6/%.1/%.2/%/enum">
-      <details key="start" value="2763"/>
-      <details key="end" value="2767"/>
+    <eAnnotations source="positions.204" references="/0/generateInternalType.6/%.1/%.2/%/enum">
+      <details key="start" value="2803"/>
+      <details key="end" value="2807"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.199" references="/0/generateInternalType.6/%.1/%.2/%.1">
-      <details key="start" value="2776"/>
-      <details key="end" value="2795"/>
+    <eAnnotations source="positions.205" references="/0/generateInternalType.6/%.1/%.2/%.1">
+      <details key="start" value="2816"/>
+      <details key="end" value="2835"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.200" references="/0/generateInternalType.6/%.2">
-      <details key="start" value="2827"/>
-      <details key="end" value="2831"/>
+    <eAnnotations source="positions.206" references="/0/generateInternalType.6/%.2">
+      <details key="start" value="2867"/>
+      <details key="end" value="2871"/>
       <details key="line" value="77"/>
     </eAnnotations>
-    <eAnnotations source="positions.201" references="/0/generateInternalType.6/%.3">
-      <details key="start" value="2831"/>
-      <details key="end" value="3007"/>
+    <eAnnotations source="positions.207" references="/0/generateInternalType.6/%.3">
+      <details key="start" value="2871"/>
+      <details key="end" value="3047"/>
       <details key="line" value="78"/>
     </eAnnotations>
-    <eAnnotations source="positions.202" references="/0/generateInternalType.6/%.3/%">
-      <details key="start" value="2888"/>
-      <details key="end" value="2906"/>
+    <eAnnotations source="positions.208" references="/0/generateInternalType.6/%.3/%">
+      <details key="start" value="2928"/>
+      <details key="end" value="2946"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.203" references="/0/generateInternalType.6/%.3/%/literal">
-      <details key="start" value="2888"/>
-      <details key="end" value="2895"/>
+    <eAnnotations source="positions.209" references="/0/generateInternalType.6/%.3/%/literal">
+      <details key="start" value="2928"/>
+      <details key="end" value="2935"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.204" references="/0/generateInternalType.6/%.3/%.1">
-      <details key="start" value="2908"/>
-      <details key="end" value="3001"/>
+    <eAnnotations source="positions.210" references="/0/generateInternalType.6/%.3/%.1">
+      <details key="start" value="2948"/>
+      <details key="end" value="3041"/>
       <details key="line" value="78"/>
     </eAnnotations>
-    <eAnnotations source="positions.205" references="/0/generateInternalType.6/%.3/%.1/%">
-      <details key="start" value="2912"/>
-      <details key="end" value="2970"/>
+    <eAnnotations source="positions.211" references="/0/generateInternalType.6/%.3/%.1/%">
+      <details key="start" value="2952"/>
+      <details key="end" value="3010"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.206" references="/0/generateInternalType.6/%.3/%.1/%/%">
-      <details key="start" value="2912"/>
-      <details key="end" value="2942"/>
+    <eAnnotations source="positions.212" references="/0/generateInternalType.6/%.3/%.1/%/%">
+      <details key="start" value="2952"/>
+      <details key="end" value="2982"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.207" references="/0/generateInternalType.6/%.3/%.1/%/%/%">
-      <details key="start" value="2912"/>
-      <details key="end" value="2925"/>
+    <eAnnotations source="positions.213" references="/0/generateInternalType.6/%.3/%.1/%/%/%">
+      <details key="start" value="2952"/>
+      <details key="end" value="2965"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.208" references="/0/generateInternalType.6/%.3/%.1/%/%/%/literal">
-      <details key="start" value="2912"/>
-      <details key="end" value="2919"/>
+    <eAnnotations source="positions.214" references="/0/generateInternalType.6/%.3/%.1/%/%/%/literal">
+      <details key="start" value="2952"/>
+      <details key="end" value="2959"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.209" references="/0/generateInternalType.6/%.3/%.1/%/%.1">
-      <details key="start" value="2946"/>
-      <details key="end" value="2970"/>
+    <eAnnotations source="positions.215" references="/0/generateInternalType.6/%.3/%.1/%/%.1">
+      <details key="start" value="2986"/>
+      <details key="end" value="3010"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.210" references="/0/generateInternalType.6/%.3/%.1/%/%.1/%">
-      <details key="start" value="2946"/>
-      <details key="end" value="2966"/>
+    <eAnnotations source="positions.216" references="/0/generateInternalType.6/%.3/%.1/%/%.1/%">
+      <details key="start" value="2986"/>
+      <details key="end" value="3006"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.211" references="/0/generateInternalType.6/%.3/%.1/%/%.1/%/%">
-      <details key="start" value="2946"/>
-      <details key="end" value="2959"/>
+    <eAnnotations source="positions.217" references="/0/generateInternalType.6/%.3/%.1/%/%.1/%/%">
+      <details key="start" value="2986"/>
+      <details key="end" value="2999"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.212" references="/0/generateInternalType.6/%.3/%.1/%/%.1/%/%/literal">
-      <details key="start" value="2946"/>
-      <details key="end" value="2953"/>
+    <eAnnotations source="positions.218" references="/0/generateInternalType.6/%.3/%.1/%/%.1/%/%/literal">
+      <details key="start" value="2986"/>
+      <details key="end" value="2993"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.213" references="/0/generateInternalType.6/%.3/%.1/%/%.1/%.1">
-      <details key="start" value="2969"/>
-      <details key="end" value="2970"/>
+    <eAnnotations source="positions.219" references="/0/generateInternalType.6/%.3/%.1/%/%.1/%.1">
+      <details key="start" value="3009"/>
+      <details key="end" value="3010"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.214" references="/0/generateInternalType.6/%.3/%.1/%.1">
-      <details key="start" value="2971"/>
-      <details key="end" value="2996"/>
+    <eAnnotations source="positions.220" references="/0/generateInternalType.6/%.3/%.1/%.1">
+      <details key="start" value="3011"/>
+      <details key="end" value="3036"/>
       <details key="line" value="78"/>
     </eAnnotations>
-    <eAnnotations source="positions.215" references="/0/generateInternalType.6/%.3/%.1/%.1/%">
-      <details key="start" value="2977"/>
-      <details key="end" value="2980"/>
+    <eAnnotations source="positions.221" references="/0/generateInternalType.6/%.3/%.1/%.1/%">
+      <details key="start" value="3017"/>
+      <details key="end" value="3020"/>
       <details key="line" value="78"/>
     </eAnnotations>
-    <eAnnotations source="positions.216" references="/0/generateInternalType.6/%.3/%.1/%.1/%.1">
-      <details key="start" value="2981"/>
-      <details key="end" value="2994"/>
+    <eAnnotations source="positions.222" references="/0/generateInternalType.6/%.3/%.1/%.1/%.1">
+      <details key="start" value="3021"/>
+      <details key="end" value="3034"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.217" references="/0/generateInternalType.6/%.3/%.1/%.1/%.1/literal">
-      <details key="start" value="2981"/>
-      <details key="end" value="2988"/>
+    <eAnnotations source="positions.223" references="/0/generateInternalType.6/%.3/%.1/%.1/%.1/literal">
+      <details key="start" value="3021"/>
+      <details key="end" value="3028"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.218" references="/0/generateInternalType.6/%.3/literal">
-      <details key="start" value="2837"/>
-      <details key="end" value="2853"/>
+    <eAnnotations source="positions.224" references="/0/generateInternalType.6/%.3/literal">
+      <details key="start" value="2877"/>
+      <details key="end" value="2893"/>
       <details key="line" value="78"/>
     </eAnnotations>
-    <eAnnotations source="positions.219" references="/0/generateInternalType.6/%.3/%.2">
-      <details key="start" value="2856"/>
-      <details key="end" value="2869"/>
+    <eAnnotations source="positions.225" references="/0/generateInternalType.6/%.3/%.2">
+      <details key="start" value="2896"/>
+      <details key="end" value="2909"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.220" references="/0/generateInternalType.6/%.3/%.2/enum">
-      <details key="start" value="2856"/>
-      <details key="end" value="2860"/>
+    <eAnnotations source="positions.226" references="/0/generateInternalType.6/%.3/%.2/enum">
+      <details key="start" value="2896"/>
+      <details key="end" value="2900"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.221" references="/0/generateInternalType.6/%.3/%.3">
-      <details key="start" value="2881"/>
-      <details key="end" value="2885"/>
+    <eAnnotations source="positions.227" references="/0/generateInternalType.6/%.3/%.3">
+      <details key="start" value="2921"/>
+      <details key="end" value="2925"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.222" references="/0/generateInternalType.6/%.4">
-      <details key="start" value="3008"/>
-      <details key="end" value="3010"/>
+    <eAnnotations source="positions.228" references="/0/generateInternalType.6/%.4">
+      <details key="start" value="3048"/>
+      <details key="end" value="3050"/>
       <details key="line" value="79"/>
     </eAnnotations>
-    <eAnnotations source="positions.223" references="/0/generateInternalType.6/enum">
-      <details key="start" value="2644"/>
-      <details key="end" value="2655"/>
+    <eAnnotations source="positions.229" references="/0/generateInternalType.6/enum">
+      <details key="start" value="2684"/>
+      <details key="end" value="2695"/>
       <details key="line" value="76"/>
     </eAnnotations>
-    <eAnnotations source="positions.224" references="/0/generateTypeDef">
-      <details key="start" value="3024"/>
-      <details key="end" value="3333"/>
+    <eAnnotations source="positions.230" references="/0/generateTypeDef">
+      <details key="start" value="3064"/>
+      <details key="end" value="3373"/>
       <details key="line" value="83"/>
     </eAnnotations>
-    <eAnnotations source="positions.225" references="/0/generateTypeDef/%">
-      <details key="start" value="3159"/>
-      <details key="end" value="3173"/>
+    <eAnnotations source="positions.231" references="/0/generateTypeDef/%">
+      <details key="start" value="3199"/>
+      <details key="end" value="3213"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.226" references="/0/generateTypeDef/%/access">
-      <details key="start" value="3166"/>
-      <details key="end" value="3172"/>
+    <eAnnotations source="positions.232" references="/0/generateTypeDef/%/access">
+      <details key="start" value="3206"/>
+      <details key="end" value="3212"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.227" references="/0/generateTypeDef/%.1">
-      <details key="start" value="3176"/>
-      <details key="end" value="3186"/>
+    <eAnnotations source="positions.233" references="/0/generateTypeDef/%.1">
+      <details key="start" value="3216"/>
+      <details key="end" value="3226"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.228" references="/0/generateTypeDef/%.1/spec">
-      <details key="start" value="3181"/>
-      <details key="end" value="3185"/>
+    <eAnnotations source="positions.234" references="/0/generateTypeDef/%.1/spec">
+      <details key="start" value="3221"/>
+      <details key="end" value="3225"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.229" references="/0/generateTypeDef/%.2">
-      <details key="start" value="3189"/>
-      <details key="end" value="3204"/>
+    <eAnnotations source="positions.235" references="/0/generateTypeDef/%.2">
+      <details key="start" value="3229"/>
+      <details key="end" value="3244"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.230" references="/0/generateTypeDef/%.2/type">
-      <details key="start" value="3189"/>
-      <details key="end" value="3193"/>
+    <eAnnotations source="positions.236" references="/0/generateTypeDef/%.2/type">
+      <details key="start" value="3229"/>
+      <details key="end" value="3233"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.231" references="/0/generateTypeDef/%.3">
-      <details key="start" value="3206"/>
-      <details key="end" value="3207"/>
+    <eAnnotations source="positions.237" references="/0/generateTypeDef/%.3">
+      <details key="start" value="3246"/>
+      <details key="end" value="3247"/>
       <details key="line" value="84"/>
     </eAnnotations>
-    <eAnnotations source="positions.232" references="/0/generateTypeDef/id">
-      <details key="start" value="3208"/>
-      <details key="end" value="3210"/>
+    <eAnnotations source="positions.238" references="/0/generateTypeDef/id">
+      <details key="start" value="3248"/>
+      <details key="end" value="3250"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.233" references="/0/generateTypeDef/%.4">
-      <details key="start" value="3212"/>
-      <details key="end" value="3321"/>
+    <eAnnotations source="positions.239" references="/0/generateTypeDef/%.4">
+      <details key="start" value="3252"/>
+      <details key="end" value="3361"/>
       <details key="line" value="84"/>
     </eAnnotations>
-    <eAnnotations source="positions.234" references="/0/generateTypeDef/%.4/%">
-      <details key="start" value="3284"/>
-      <details key="end" value="3313"/>
+    <eAnnotations source="positions.240" references="/0/generateTypeDef/%.4/%">
+      <details key="start" value="3324"/>
+      <details key="end" value="3353"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.235" references="/0/generateTypeDef/%.4/%/derivation">
-      <details key="start" value="3284"/>
-      <details key="end" value="3294"/>
+    <eAnnotations source="positions.241" references="/0/generateTypeDef/%.4/%/derivation">
+      <details key="start" value="3324"/>
+      <details key="end" value="3334"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.236" references="/0/generateTypeDef/%.4/derivation">
-      <details key="start" value="3218"/>
-      <details key="end" value="3237"/>
+    <eAnnotations source="positions.242" references="/0/generateTypeDef/%.4/derivation">
+      <details key="start" value="3258"/>
+      <details key="end" value="3277"/>
       <details key="line" value="84"/>
     </eAnnotations>
-    <eAnnotations source="positions.237" references="/0/generateTypeDef/%.4/derivations">
-      <details key="start" value="3240"/>
-      <details key="end" value="3251"/>
+    <eAnnotations source="positions.243" references="/0/generateTypeDef/%.4/derivations">
+      <details key="start" value="3280"/>
+      <details key="end" value="3291"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.238" references="/0/generateTypeDef/%.4/%.1">
-      <details key="start" value="3260"/>
-      <details key="end" value="3265"/>
+    <eAnnotations source="positions.244" references="/0/generateTypeDef/%.4/%.1">
+      <details key="start" value="3300"/>
+      <details key="end" value="3305"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.239" references="/0/generateTypeDef/%.4/%.2">
-      <details key="start" value="3277"/>
-      <details key="end" value="3281"/>
+    <eAnnotations source="positions.245" references="/0/generateTypeDef/%.4/%.2">
+      <details key="start" value="3317"/>
+      <details key="end" value="3321"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.240" references="/0/generateTypeDef/access">
-      <details key="start" value="3057"/>
-      <details key="end" value="3079"/>
+    <eAnnotations source="positions.246" references="/0/generateTypeDef/access">
+      <details key="start" value="3097"/>
+      <details key="end" value="3119"/>
       <details key="line" value="83"/>
     </eAnnotations>
-    <eAnnotations source="positions.241" references="/0/generateTypeDef/spec">
-      <details key="start" value="3081"/>
-      <details key="end" value="3096"/>
+    <eAnnotations source="positions.247" references="/0/generateTypeDef/spec">
+      <details key="start" value="3121"/>
+      <details key="end" value="3136"/>
       <details key="line" value="83"/>
     </eAnnotations>
-    <eAnnotations source="positions.242" references="/0/generateTypeDef/type">
-      <details key="start" value="3098"/>
-      <details key="end" value="3109"/>
+    <eAnnotations source="positions.248" references="/0/generateTypeDef/type">
+      <details key="start" value="3138"/>
+      <details key="end" value="3149"/>
       <details key="line" value="83"/>
     </eAnnotations>
-    <eAnnotations source="positions.243" references="/0/generateTypeDef/id.1">
-      <details key="start" value="3111"/>
-      <details key="end" value="3121"/>
+    <eAnnotations source="positions.249" references="/0/generateTypeDef/id.1">
+      <details key="start" value="3151"/>
+      <details key="end" value="3161"/>
       <details key="line" value="83"/>
     </eAnnotations>
-    <eAnnotations source="positions.244" references="/0/generateTypeDef/derivations">
-      <details key="start" value="3123"/>
-      <details key="end" value="3155"/>
+    <eAnnotations source="positions.250" references="/0/generateTypeDef/derivations">
+      <details key="start" value="3163"/>
+      <details key="end" value="3195"/>
       <details key="line" value="83"/>
     </eAnnotations>
-    <eAnnotations source="positions.245" references="/0/generateMember">
-      <details key="start" value="3335"/>
-      <details key="end" value="3510"/>
+    <eAnnotations source="positions.251" references="/0/generateMember">
+      <details key="start" value="3375"/>
+      <details key="end" value="3550"/>
       <details key="line" value="87"/>
     </eAnnotations>
-    <eAnnotations source="positions.246" references="/0/generateMember/%">
-      <details key="start" value="3388"/>
-      <details key="end" value="3416"/>
+    <eAnnotations source="positions.252" references="/0/generateMember/%">
+      <details key="start" value="3428"/>
+      <details key="end" value="3456"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.247" references="/0/generateMember/%/%">
-      <details key="start" value="3395"/>
-      <details key="end" value="3415"/>
+    <eAnnotations source="positions.253" references="/0/generateMember/%/%">
+      <details key="start" value="3435"/>
+      <details key="end" value="3455"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.248" references="/0/generateMember/%/%/member">
-      <details key="start" value="3395"/>
-      <details key="end" value="3401"/>
+    <eAnnotations source="positions.254" references="/0/generateMember/%/%/member">
+      <details key="start" value="3435"/>
+      <details key="end" value="3441"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.249" references="/0/generateMember/%.1">
-      <details key="start" value="3419"/>
-      <details key="end" value="3441"/>
+    <eAnnotations source="positions.255" references="/0/generateMember/%.1">
+      <details key="start" value="3459"/>
+      <details key="end" value="3481"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.250" references="/0/generateMember/%.1/%">
-      <details key="start" value="3424"/>
-      <details key="end" value="3440"/>
+    <eAnnotations source="positions.256" references="/0/generateMember/%.1/%">
+      <details key="start" value="3464"/>
+      <details key="end" value="3480"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.251" references="/0/generateMember/%.1/%/member">
-      <details key="start" value="3424"/>
-      <details key="end" value="3430"/>
+    <eAnnotations source="positions.257" references="/0/generateMember/%.1/%/member">
+      <details key="start" value="3464"/>
+      <details key="end" value="3470"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.252" references="/0/generateMember/%.2">
-      <details key="start" value="3444"/>
-      <details key="end" value="3474"/>
+    <eAnnotations source="positions.258" references="/0/generateMember/%.2">
+      <details key="start" value="3484"/>
+      <details key="end" value="3514"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.253" references="/0/generateMember/%.2/%">
-      <details key="start" value="3444"/>
-      <details key="end" value="3455"/>
+    <eAnnotations source="positions.259" references="/0/generateMember/%.2/%">
+      <details key="start" value="3484"/>
+      <details key="end" value="3495"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.254" references="/0/generateMember/%.2/%/member">
-      <details key="start" value="3444"/>
-      <details key="end" value="3450"/>
+    <eAnnotations source="positions.260" references="/0/generateMember/%.2/%/member">
+      <details key="start" value="3484"/>
+      <details key="end" value="3490"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.255" references="/0/generateMember/%.3">
-      <details key="start" value="3476"/>
-      <details key="end" value="3477"/>
+    <eAnnotations source="positions.261" references="/0/generateMember/%.3">
+      <details key="start" value="3516"/>
+      <details key="end" value="3517"/>
       <details key="line" value="88"/>
     </eAnnotations>
-    <eAnnotations source="positions.256" references="/0/generateMember/%.4">
-      <details key="start" value="3478"/>
-      <details key="end" value="3495"/>
+    <eAnnotations source="positions.262" references="/0/generateMember/%.4">
+      <details key="start" value="3518"/>
+      <details key="end" value="3535"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.257" references="/0/generateMember/%.4/member">
-      <details key="start" value="3478"/>
-      <details key="end" value="3484"/>
+    <eAnnotations source="positions.263" references="/0/generateMember/%.4/member">
+      <details key="start" value="3518"/>
+      <details key="end" value="3524"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.258" references="/0/generateMember/%.5">
-      <details key="start" value="3497"/>
-      <details key="end" value="3498"/>
+    <eAnnotations source="positions.264" references="/0/generateMember/%.5">
+      <details key="start" value="3537"/>
+      <details key="end" value="3538"/>
       <details key="line" value="88"/>
     </eAnnotations>
-    <eAnnotations source="positions.259" references="/0/generateMember/member">
-      <details key="start" value="3367"/>
-      <details key="end" value="3384"/>
+    <eAnnotations source="positions.265" references="/0/generateMember/member">
+      <details key="start" value="3407"/>
+      <details key="end" value="3424"/>
       <details key="line" value="87"/>
     </eAnnotations>
-    <eAnnotations source="positions.260" references="/0/generateConstructor">
-      <details key="start" value="3512"/>
-      <details key="end" value="3737"/>
+    <eAnnotations source="positions.266" references="/0/generateConstructor">
+      <details key="start" value="3552"/>
+      <details key="end" value="3777"/>
       <details key="line" value="91"/>
     </eAnnotations>
-    <eAnnotations source="positions.261" references="/0/generateConstructor/%">
-      <details key="start" value="3580"/>
-      <details key="end" value="3723"/>
+    <eAnnotations source="positions.267" references="/0/generateConstructor/%">
+      <details key="start" value="3620"/>
+      <details key="end" value="3763"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.262" references="/0/generateConstructor/%/%">
-      <details key="start" value="3597"/>
-      <details key="end" value="3622"/>
+    <eAnnotations source="positions.268" references="/0/generateConstructor/%/%">
+      <details key="start" value="3637"/>
+      <details key="end" value="3662"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.263" references="/0/generateConstructor/%/%/constructor">
-      <details key="start" value="3597"/>
-      <details key="end" value="3608"/>
+    <eAnnotations source="positions.269" references="/0/generateConstructor/%/%/constructor">
+      <details key="start" value="3637"/>
+      <details key="end" value="3648"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.264" references="/0/generateConstructor/%/%.1">
-      <details key="start" value="3624"/>
-      <details key="end" value="3645"/>
+    <eAnnotations source="positions.270" references="/0/generateConstructor/%/%.1">
+      <details key="start" value="3664"/>
+      <details key="end" value="3685"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.265" references="/0/generateConstructor/%/%.1/constructor">
-      <details key="start" value="3624"/>
-      <details key="end" value="3635"/>
+    <eAnnotations source="positions.271" references="/0/generateConstructor/%/%.1/constructor">
+      <details key="start" value="3664"/>
+      <details key="end" value="3675"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.266" references="/0/generateConstructor/%/%.2">
-      <details key="start" value="3647"/>
-      <details key="end" value="3649"/>
+    <eAnnotations source="positions.272" references="/0/generateConstructor/%/%.2">
+      <details key="start" value="3687"/>
+      <details key="end" value="3689"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.267" references="/0/generateConstructor/%/%.3">
-      <details key="start" value="3651"/>
-      <details key="end" value="3679"/>
+    <eAnnotations source="positions.273" references="/0/generateConstructor/%/%.3">
+      <details key="start" value="3691"/>
+      <details key="end" value="3719"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.268" references="/0/generateConstructor/%/%.3/%">
-      <details key="start" value="3651"/>
-      <details key="end" value="3668"/>
+    <eAnnotations source="positions.274" references="/0/generateConstructor/%/%.3/%">
+      <details key="start" value="3691"/>
+      <details key="end" value="3708"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.269" references="/0/generateConstructor/%/%.3/%/constructor">
-      <details key="start" value="3651"/>
-      <details key="end" value="3662"/>
+    <eAnnotations source="positions.275" references="/0/generateConstructor/%/%.3/%/constructor">
+      <details key="start" value="3691"/>
+      <details key="end" value="3702"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.270" references="/0/generateConstructor/%/%.4">
-      <details key="start" value="3681"/>
-      <details key="end" value="3703"/>
+    <eAnnotations source="positions.276" references="/0/generateConstructor/%/%.4">
+      <details key="start" value="3721"/>
+      <details key="end" value="3743"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.271" references="/0/generateConstructor/%/%.4/constructor">
-      <details key="start" value="3681"/>
-      <details key="end" value="3692"/>
+    <eAnnotations source="positions.277" references="/0/generateConstructor/%/%.4/constructor">
+      <details key="start" value="3721"/>
+      <details key="end" value="3732"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.272" references="/0/generateConstructor/%/%.5">
-      <details key="start" value="3705"/>
-      <details key="end" value="3722"/>
+    <eAnnotations source="positions.278" references="/0/generateConstructor/%/%.5">
+      <details key="start" value="3745"/>
+      <details key="end" value="3762"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.273" references="/0/generateConstructor/%/%.5/constructor">
-      <details key="start" value="3705"/>
-      <details key="end" value="3716"/>
+    <eAnnotations source="positions.279" references="/0/generateConstructor/%/%.5/constructor">
+      <details key="start" value="3745"/>
+      <details key="end" value="3756"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.274" references="/0/generateConstructor/constructor">
-      <details key="start" value="3549"/>
-      <details key="end" value="3576"/>
+    <eAnnotations source="positions.280" references="/0/generateConstructor/constructor">
+      <details key="start" value="3589"/>
+      <details key="end" value="3616"/>
       <details key="line" value="91"/>
     </eAnnotations>
-    <eAnnotations source="positions.275" references="/0/generateMethod">
-      <details key="start" value="3739"/>
-      <details key="end" value="3952"/>
+    <eAnnotations source="positions.281" references="/0/generateMethod">
+      <details key="start" value="3779"/>
+      <details key="end" value="3992"/>
       <details key="line" value="95"/>
     </eAnnotations>
-    <eAnnotations source="positions.276" references="/0/generateMethod/%">
-      <details key="start" value="3792"/>
-      <details key="end" value="3938"/>
+    <eAnnotations source="positions.282" references="/0/generateMethod/%">
+      <details key="start" value="3832"/>
+      <details key="end" value="3978"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.277" references="/0/generateMethod/%/%">
-      <details key="start" value="3809"/>
-      <details key="end" value="3829"/>
+    <eAnnotations source="positions.283" references="/0/generateMethod/%/%">
+      <details key="start" value="3849"/>
+      <details key="end" value="3869"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.278" references="/0/generateMethod/%/%/method">
-      <details key="start" value="3809"/>
-      <details key="end" value="3815"/>
+    <eAnnotations source="positions.284" references="/0/generateMethod/%/%/method">
+      <details key="start" value="3849"/>
+      <details key="end" value="3855"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.279" references="/0/generateMethod/%/%.1">
-      <details key="start" value="3831"/>
-      <details key="end" value="3847"/>
+    <eAnnotations source="positions.285" references="/0/generateMethod/%/%.1">
+      <details key="start" value="3871"/>
+      <details key="end" value="3887"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.280" references="/0/generateMethod/%/%.1/method">
-      <details key="start" value="3831"/>
-      <details key="end" value="3837"/>
+    <eAnnotations source="positions.286" references="/0/generateMethod/%/%.1/method">
+      <details key="start" value="3871"/>
+      <details key="end" value="3877"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.281" references="/0/generateMethod/%/%.2">
-      <details key="start" value="3849"/>
-      <details key="end" value="3885"/>
+    <eAnnotations source="positions.287" references="/0/generateMethod/%/%.2">
+      <details key="start" value="3889"/>
+      <details key="end" value="3925"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.282" references="/0/generateMethod/%/%.2/%">
-      <details key="start" value="3849"/>
-      <details key="end" value="3866"/>
+    <eAnnotations source="positions.288" references="/0/generateMethod/%/%.2/%">
+      <details key="start" value="3889"/>
+      <details key="end" value="3906"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.283" references="/0/generateMethod/%/%.2/%/method">
-      <details key="start" value="3849"/>
-      <details key="end" value="3855"/>
+    <eAnnotations source="positions.289" references="/0/generateMethod/%/%.2/%/method">
+      <details key="start" value="3889"/>
+      <details key="end" value="3895"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.284" references="/0/generateMethod/%/%.3">
-      <details key="start" value="3887"/>
-      <details key="end" value="3904"/>
+    <eAnnotations source="positions.290" references="/0/generateMethod/%/%.3">
+      <details key="start" value="3927"/>
+      <details key="end" value="3944"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.285" references="/0/generateMethod/%/%.3/method">
-      <details key="start" value="3887"/>
-      <details key="end" value="3893"/>
+    <eAnnotations source="positions.291" references="/0/generateMethod/%/%.3/method">
+      <details key="start" value="3927"/>
+      <details key="end" value="3933"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.286" references="/0/generateMethod/%/%.4">
-      <details key="start" value="3906"/>
-      <details key="end" value="3923"/>
+    <eAnnotations source="positions.292" references="/0/generateMethod/%/%.4">
+      <details key="start" value="3946"/>
+      <details key="end" value="3963"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.287" references="/0/generateMethod/%/%.4/method">
-      <details key="start" value="3906"/>
-      <details key="end" value="3912"/>
+    <eAnnotations source="positions.293" references="/0/generateMethod/%/%.4/method">
+      <details key="start" value="3946"/>
+      <details key="end" value="3952"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.288" references="/0/generateMethod/%/%.5">
-      <details key="start" value="3925"/>
-      <details key="end" value="3937"/>
+    <eAnnotations source="positions.294" references="/0/generateMethod/%/%.5">
+      <details key="start" value="3965"/>
+      <details key="end" value="3977"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.289" references="/0/generateMethod/%/%.5/method">
-      <details key="start" value="3925"/>
-      <details key="end" value="3931"/>
+    <eAnnotations source="positions.295" references="/0/generateMethod/%/%.5/method">
+      <details key="start" value="3965"/>
+      <details key="end" value="3971"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.290" references="/0/generateMethod/method">
-      <details key="start" value="3771"/>
-      <details key="end" value="3788"/>
+    <eAnnotations source="positions.296" references="/0/generateMethod/method">
+      <details key="start" value="3811"/>
+      <details key="end" value="3828"/>
       <details key="line" value="95"/>
     </eAnnotations>
-    <eAnnotations source="positions.291" references="/0/generateFunction">
-      <details key="start" value="3954"/>
-      <details key="end" value="4276"/>
+    <eAnnotations source="positions.297" references="/0/generateFunction">
+      <details key="start" value="3994"/>
+      <details key="end" value="4314"/>
       <details key="line" value="99"/>
     </eAnnotations>
-    <eAnnotations source="positions.292" references="/0/generateFunction/%">
-      <details key="start" value="4129"/>
-      <details key="end" value="4143"/>
+    <eAnnotations source="positions.298" references="/0/generateFunction/%">
+      <details key="start" value="4167"/>
+      <details key="end" value="4181"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.293" references="/0/generateFunction/%/access">
-      <details key="start" value="4136"/>
-      <details key="end" value="4142"/>
+    <eAnnotations source="positions.299" references="/0/generateFunction/%/access">
+      <details key="start" value="4174"/>
+      <details key="end" value="4180"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.294" references="/0/generateFunction/%.1">
-      <details key="start" value="4146"/>
-      <details key="end" value="4156"/>
+    <eAnnotations source="positions.300" references="/0/generateFunction/%.1">
+      <details key="start" value="4184"/>
+      <details key="end" value="4194"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.295" references="/0/generateFunction/%.1/spec">
-      <details key="start" value="4151"/>
-      <details key="end" value="4155"/>
+    <eAnnotations source="positions.301" references="/0/generateFunction/%.1/spec">
+      <details key="start" value="4189"/>
+      <details key="end" value="4193"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.296" references="/0/generateFunction/returnType">
-      <details key="start" value="4159"/>
-      <details key="end" value="4169"/>
+    <eAnnotations source="positions.302" references="/0/generateFunction/returnType">
+      <details key="start" value="4197"/>
+      <details key="end" value="4207"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.297" references="/0/generateFunction/%.2">
-      <details key="start" value="4171"/>
-      <details key="end" value="4172"/>
+    <eAnnotations source="positions.303" references="/0/generateFunction/%.2">
+      <details key="start" value="4209"/>
+      <details key="end" value="4210"/>
       <details key="line" value="100"/>
     </eAnnotations>
-    <eAnnotations source="positions.298" references="/0/generateFunction/identifier">
-      <details key="start" value="4173"/>
-      <details key="end" value="4183"/>
+    <eAnnotations source="positions.304" references="/0/generateFunction/identifier">
+      <details key="start" value="4211"/>
+      <details key="end" value="4221"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.299" references="/0/generateFunction/%.3">
-      <details key="start" value="4185"/>
-      <details key="end" value="4186"/>
+    <eAnnotations source="positions.305" references="/0/generateFunction/%.3">
+      <details key="start" value="4223"/>
+      <details key="end" value="4224"/>
       <details key="line" value="100"/>
     </eAnnotations>
-    <eAnnotations source="positions.300" references="/0/generateFunction/%.4">
-      <details key="start" value="4187"/>
-      <details key="end" value="4209"/>
+    <eAnnotations source="positions.306" references="/0/generateFunction/%.4">
+      <details key="start" value="4225"/>
+      <details key="end" value="4247"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.301" references="/0/generateFunction/%.4/params">
-      <details key="start" value="4202"/>
-      <details key="end" value="4208"/>
+    <eAnnotations source="positions.307" references="/0/generateFunction/%.4/params">
+      <details key="start" value="4240"/>
+      <details key="end" value="4246"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.302" references="/0/generateFunction/%.5">
-      <details key="start" value="4211"/>
-      <details key="end" value="4215"/>
+    <eAnnotations source="positions.308" references="/0/generateFunction/%.5">
+      <details key="start" value="4249"/>
+      <details key="end" value="4253"/>
       <details key="line" value="100"/>
     </eAnnotations>
-    <eAnnotations source="positions.303" references="/0/generateFunction/%.6">
-      <details key="start" value="4216"/>
-      <details key="end" value="4262"/>
+    <eAnnotations source="positions.309" references="/0/generateFunction/%.6">
+      <details key="start" value="4254"/>
+      <details key="end" value="4300"/>
       <details key="line" value="101"/>
     </eAnnotations>
-    <eAnnotations source="positions.304" references="/0/generateFunction/%.6/%">
-      <details key="start" value="4246"/>
-      <details key="end" value="4247"/>
+    <eAnnotations source="positions.310" references="/0/generateFunction/%.6/%">
+      <details key="start" value="4284"/>
+      <details key="end" value="4285"/>
       <details key="line" value="102"/>
     </eAnnotations>
-    <eAnnotations source="positions.305" references="/0/generateFunction/%.6/stat">
-      <details key="start" value="4248"/>
-      <details key="end" value="4252"/>
+    <eAnnotations source="positions.311" references="/0/generateFunction/%.6/stat">
+      <details key="start" value="4286"/>
+      <details key="end" value="4290"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.306" references="/0/generateFunction/%.6/%.1">
-      <details key="start" value="4254"/>
-      <details key="end" value="4255"/>
+    <eAnnotations source="positions.312" references="/0/generateFunction/%.6/%.1">
+      <details key="start" value="4292"/>
+      <details key="end" value="4293"/>
       <details key="line" value="103"/>
     </eAnnotations>
-    <eAnnotations source="positions.307" references="/0/generateFunction/%.6/stat.1">
-      <details key="start" value="4222"/>
-      <details key="end" value="4235"/>
+    <eAnnotations source="positions.313" references="/0/generateFunction/%.6/stat.1">
+      <details key="start" value="4260"/>
+      <details key="end" value="4273"/>
       <details key="line" value="101"/>
     </eAnnotations>
-    <eAnnotations source="positions.308" references="/0/generateFunction/%.6/_body">
-      <details key="start" value="4238"/>
-      <details key="end" value="4243"/>
+    <eAnnotations source="positions.314" references="/0/generateFunction/%.6/_body">
+      <details key="start" value="4276"/>
+      <details key="end" value="4281"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.309" references="/0/generateFunction/%.7">
-      <details key="start" value="4263"/>
-      <details key="end" value="4264"/>
+    <eAnnotations source="positions.315" references="/0/generateFunction/%.7">
+      <details key="start" value="4301"/>
+      <details key="end" value="4302"/>
       <details key="line" value="104"/>
     </eAnnotations>
-    <eAnnotations source="positions.310" references="/0/generateFunction/access">
-      <details key="start" value="3988"/>
-      <details key="end" value="4010"/>
+    <eAnnotations source="positions.316" references="/0/generateFunction/access">
+      <details key="start" value="4028"/>
+      <details key="end" value="4050"/>
       <details key="line" value="99"/>
     </eAnnotations>
-    <eAnnotations source="positions.311" references="/0/generateFunction/spec">
-      <details key="start" value="4012"/>
-      <details key="end" value="4027"/>
+    <eAnnotations source="positions.317" references="/0/generateFunction/spec">
+      <details key="start" value="4052"/>
+      <details key="end" value="4067"/>
       <details key="line" value="99"/>
     </eAnnotations>
-    <eAnnotations source="positions.312" references="/0/generateFunction/returnType.1">
-      <details key="start" value="4029"/>
-      <details key="end" value="4047"/>
+    <eAnnotations source="positions.318" references="/0/generateFunction/returnType.1">
+      <details key="start" value="4069"/>
+      <details key="end" value="4087"/>
       <details key="line" value="99"/>
     </eAnnotations>
-    <eAnnotations source="positions.313" references="/0/generateFunction/identifier.1">
-      <details key="start" value="4049"/>
-      <details key="end" value="4067"/>
+    <eAnnotations source="positions.319" references="/0/generateFunction/identifier.1">
+      <details key="start" value="4089"/>
+      <details key="end" value="4107"/>
       <details key="line" value="99"/>
     </eAnnotations>
-    <eAnnotations source="positions.314" references="/0/generateFunction/params">
-      <details key="start" value="4069"/>
-      <details key="end" value="4098"/>
+    <eAnnotations source="positions.320" references="/0/generateFunction/params">
+      <details key="start" value="4109"/>
+      <details key="end" value="4138"/>
       <details key="line" value="99"/>
     </eAnnotations>
-    <eAnnotations source="positions.315" references="/0/generateFunction/_body">
-      <details key="start" value="4100"/>
-      <details key="end" value="4125"/>
+    <eAnnotations source="positions.321" references="/0/generateFunction/_body">
+      <details key="start" value="4140"/>
+      <details key="end" value="4163"/>
       <details key="line" value="99"/>
     </eAnnotations>
-    <eAnnotations source="positions.316" references="/0/generateParams">
-      <details key="start" value="4278"/>
-      <details key="end" value="4488"/>
+    <eAnnotations source="positions.322" references="/0/generateParams">
+      <details key="start" value="4316"/>
+      <details key="end" value="4526"/>
       <details key="line" value="107"/>
     </eAnnotations>
-    <eAnnotations source="positions.317" references="/0/generateParams/%">
-      <details key="start" value="4342"/>
-      <details key="end" value="4476"/>
+    <eAnnotations source="positions.323" references="/0/generateParams/%">
+      <details key="start" value="4380"/>
+      <details key="end" value="4514"/>
       <details key="line" value="108"/>
     </eAnnotations>
-    <eAnnotations source="positions.318" references="/0/generateParams/%/%">
-      <details key="start" value="4392"/>
-      <details key="end" value="4416"/>
+    <eAnnotations source="positions.324" references="/0/generateParams/%/%">
+      <details key="start" value="4430"/>
+      <details key="end" value="4454"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.319" references="/0/generateParams/%/%/%">
-      <details key="start" value="4400"/>
-      <details key="end" value="4415"/>
+    <eAnnotations source="positions.325" references="/0/generateParams/%/%/%">
+      <details key="start" value="4438"/>
+      <details key="end" value="4453"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.320" references="/0/generateParams/%/%/%/param">
-      <details key="start" value="4400"/>
-      <details key="end" value="4405"/>
+    <eAnnotations source="positions.326" references="/0/generateParams/%/%/%/param">
+      <details key="start" value="4438"/>
+      <details key="end" value="4443"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.321" references="/0/generateParams/%/%.1">
-      <details key="start" value="4419"/>
-      <details key="end" value="4448"/>
+    <eAnnotations source="positions.327" references="/0/generateParams/%/%.1">
+      <details key="start" value="4457"/>
+      <details key="end" value="4486"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.322" references="/0/generateParams/%/%.1/%">
-      <details key="start" value="4419"/>
-      <details key="end" value="4429"/>
+    <eAnnotations source="positions.328" references="/0/generateParams/%/%.1/%">
+      <details key="start" value="4457"/>
+      <details key="end" value="4467"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.323" references="/0/generateParams/%/%.1/%/param">
-      <details key="start" value="4419"/>
-      <details key="end" value="4424"/>
+    <eAnnotations source="positions.329" references="/0/generateParams/%/%.1/%/param">
+      <details key="start" value="4457"/>
+      <details key="end" value="4462"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.324" references="/0/generateParams/%/%.2">
-      <details key="start" value="4450"/>
-      <details key="end" value="4451"/>
+    <eAnnotations source="positions.330" references="/0/generateParams/%/%.2">
+      <details key="start" value="4488"/>
+      <details key="end" value="4489"/>
       <details key="line" value="108"/>
     </eAnnotations>
-    <eAnnotations source="positions.325" references="/0/generateParams/%/%.3">
-      <details key="start" value="4452"/>
-      <details key="end" value="4468"/>
+    <eAnnotations source="positions.331" references="/0/generateParams/%/%.3">
+      <details key="start" value="4490"/>
+      <details key="end" value="4506"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.326" references="/0/generateParams/%/%.3/param">
-      <details key="start" value="4452"/>
-      <details key="end" value="4457"/>
+    <eAnnotations source="positions.332" references="/0/generateParams/%/%.3/param">
+      <details key="start" value="4490"/>
+      <details key="end" value="4495"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.327" references="/0/generateParams/%/param">
-      <details key="start" value="4348"/>
-      <details key="end" value="4364"/>
+    <eAnnotations source="positions.333" references="/0/generateParams/%/param">
+      <details key="start" value="4386"/>
+      <details key="end" value="4402"/>
       <details key="line" value="108"/>
     </eAnnotations>
-    <eAnnotations source="positions.328" references="/0/generateParams/%/params">
-      <details key="start" value="4367"/>
-      <details key="end" value="4373"/>
+    <eAnnotations source="positions.334" references="/0/generateParams/%/params">
+      <details key="start" value="4405"/>
+      <details key="end" value="4411"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.329" references="/0/generateParams/%/%.4">
-      <details key="start" value="4385"/>
-      <details key="end" value="4389"/>
+    <eAnnotations source="positions.335" references="/0/generateParams/%/%.4">
+      <details key="start" value="4423"/>
+      <details key="end" value="4427"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.330" references="/0/generateParams/params">
-      <details key="start" value="4310"/>
-      <details key="end" value="4339"/>
+    <eAnnotations source="positions.336" references="/0/generateParams/params">
+      <details key="start" value="4348"/>
+      <details key="end" value="4377"/>
       <details key="line" value="107"/>
     </eAnnotations>
-    <eAnnotations source="positions.331" references="/0/spec">
-      <details key="start" value="4490"/>
-      <details key="end" value="4614"/>
+    <eAnnotations source="positions.337" references="/0/spec">
+      <details key="start" value="4528"/>
+      <details key="end" value="4652"/>
       <details key="line" value="111"/>
     </eAnnotations>
-    <eAnnotations source="positions.332" references="/0/spec/%">
-      <details key="start" value="4535"/>
-      <details key="end" value="4602"/>
+    <eAnnotations source="positions.338" references="/0/spec/%">
+      <details key="start" value="4573"/>
+      <details key="end" value="4640"/>
       <details key="line" value="112"/>
     </eAnnotations>
-    <eAnnotations source="positions.333" references="/0/spec/%/%">
-      <details key="start" value="4539"/>
-      <details key="end" value="4566"/>
+    <eAnnotations source="positions.339" references="/0/spec/%/%">
+      <details key="start" value="4577"/>
+      <details key="end" value="4604"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.334" references="/0/spec/%/%/specifier">
-      <details key="start" value="4539"/>
-      <details key="end" value="4548"/>
+    <eAnnotations source="positions.340" references="/0/spec/%/%/specifier">
+      <details key="start" value="4577"/>
+      <details key="end" value="4586"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.335" references="/0/spec/%/%/%">
-      <details key="start" value="4551"/>
-      <details key="end" value="4566"/>
+    <eAnnotations source="positions.341" references="/0/spec/%/%/%">
+      <details key="start" value="4589"/>
+      <details key="end" value="4604"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.336" references="/0/spec/%/%.1">
-      <details key="start" value="4567"/>
-      <details key="end" value="4597"/>
+    <eAnnotations source="positions.342" references="/0/spec/%/%.1">
+      <details key="start" value="4605"/>
+      <details key="end" value="4635"/>
       <details key="line" value="112"/>
     </eAnnotations>
-    <eAnnotations source="positions.337" references="/0/spec/%/%.1/%">
-      <details key="start" value="4574"/>
-      <details key="end" value="4594"/>
+    <eAnnotations source="positions.343" references="/0/spec/%/%.1/%">
+      <details key="start" value="4612"/>
+      <details key="end" value="4632"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.338" references="/0/spec/%/%.1/%/specifier">
-      <details key="start" value="4574"/>
-      <details key="end" value="4583"/>
+    <eAnnotations source="positions.344" references="/0/spec/%/%.1/%/specifier">
+      <details key="start" value="4612"/>
+      <details key="end" value="4621"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.339" references="/0/spec/%/%.1/%.1">
-      <details key="start" value="4596"/>
-      <details key="end" value="4597"/>
+    <eAnnotations source="positions.345" references="/0/spec/%/%.1/%.1">
+      <details key="start" value="4634"/>
+      <details key="end" value="4635"/>
       <details key="line" value="112"/>
     </eAnnotations>
-    <eAnnotations source="positions.340" references="/0/spec/specifier">
-      <details key="start" value="4512"/>
-      <details key="end" value="4532"/>
+    <eAnnotations source="positions.346" references="/0/spec/specifier">
+      <details key="start" value="4550"/>
+      <details key="end" value="4570"/>
       <details key="line" value="111"/>
     </eAnnotations>
-    <eAnnotations source="positions.341" references="/0/varSpec">
-      <details key="start" value="4616"/>
-      <details key="end" value="4749"/>
+    <eAnnotations source="positions.347" references="/0/varSpec">
+      <details key="start" value="4654"/>
+      <details key="end" value="4787"/>
       <details key="line" value="115"/>
     </eAnnotations>
-    <eAnnotations source="positions.342" references="/0/varSpec/%">
-      <details key="start" value="4667"/>
-      <details key="end" value="4737"/>
+    <eAnnotations source="positions.348" references="/0/varSpec/%">
+      <details key="start" value="4705"/>
+      <details key="end" value="4775"/>
       <details key="line" value="116"/>
     </eAnnotations>
-    <eAnnotations source="positions.343" references="/0/varSpec/%/%">
-      <details key="start" value="4671"/>
-      <details key="end" value="4701"/>
+    <eAnnotations source="positions.349" references="/0/varSpec/%/%">
+      <details key="start" value="4709"/>
+      <details key="end" value="4739"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.344" references="/0/varSpec/%/%/specifier">
-      <details key="start" value="4671"/>
-      <details key="end" value="4680"/>
+    <eAnnotations source="positions.350" references="/0/varSpec/%/%/specifier">
+      <details key="start" value="4709"/>
+      <details key="end" value="4718"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.345" references="/0/varSpec/%/%/%">
-      <details key="start" value="4683"/>
-      <details key="end" value="4701"/>
+    <eAnnotations source="positions.351" references="/0/varSpec/%/%/%">
+      <details key="start" value="4721"/>
+      <details key="end" value="4739"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.346" references="/0/varSpec/%/%.1">
-      <details key="start" value="4702"/>
-      <details key="end" value="4732"/>
+    <eAnnotations source="positions.352" references="/0/varSpec/%/%.1">
+      <details key="start" value="4740"/>
+      <details key="end" value="4770"/>
       <details key="line" value="116"/>
     </eAnnotations>
-    <eAnnotations source="positions.347" references="/0/varSpec/%/%.1/%">
-      <details key="start" value="4709"/>
-      <details key="end" value="4729"/>
+    <eAnnotations source="positions.353" references="/0/varSpec/%/%.1/%">
+      <details key="start" value="4747"/>
+      <details key="end" value="4767"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.348" references="/0/varSpec/%/%.1/%/specifier">
-      <details key="start" value="4709"/>
-      <details key="end" value="4718"/>
+    <eAnnotations source="positions.354" references="/0/varSpec/%/%.1/%/specifier">
+      <details key="start" value="4747"/>
+      <details key="end" value="4756"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.349" references="/0/varSpec/%/%.1/%.1">
-      <details key="start" value="4731"/>
-      <details key="end" value="4732"/>
+    <eAnnotations source="positions.355" references="/0/varSpec/%/%.1/%.1">
+      <details key="start" value="4769"/>
+      <details key="end" value="4770"/>
       <details key="line" value="116"/>
     </eAnnotations>
-    <eAnnotations source="positions.350" references="/0/varSpec/specifier">
-      <details key="start" value="4641"/>
-      <details key="end" value="4664"/>
+    <eAnnotations source="positions.356" references="/0/varSpec/specifier">
+      <details key="start" value="4679"/>
+      <details key="end" value="4702"/>
       <details key="line" value="115"/>
     </eAnnotations>
-    <eAnnotations source="positions.351" references="/0/access">
-      <details key="start" value="4751"/>
-      <details key="end" value="5067"/>
+    <eAnnotations source="positions.357" references="/0/access">
+      <details key="start" value="4789"/>
+      <details key="end" value="5105"/>
       <details key="line" value="119"/>
     </eAnnotations>
-    <eAnnotations source="positions.352" references="/0/access/%">
-      <details key="start" value="4807"/>
-      <details key="end" value="5055"/>
+    <eAnnotations source="positions.358" references="/0/access/%">
+      <details key="start" value="4845"/>
+      <details key="end" value="5093"/>
       <details key="line" value="120"/>
     </eAnnotations>
-    <eAnnotations source="positions.353" references="/0/access/%/%">
-      <details key="start" value="4811"/>
-      <details key="end" value="4847"/>
+    <eAnnotations source="positions.359" references="/0/access/%/%">
+      <details key="start" value="4849"/>
+      <details key="end" value="4885"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.354" references="/0/access/%/%/accessability">
-      <details key="start" value="4811"/>
-      <details key="end" value="4824"/>
+    <eAnnotations source="positions.360" references="/0/access/%/%/accessability">
+      <details key="start" value="4849"/>
+      <details key="end" value="4862"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.355" references="/0/access/%/%/%">
-      <details key="start" value="4827"/>
-      <details key="end" value="4847"/>
+    <eAnnotations source="positions.361" references="/0/access/%/%/%">
+      <details key="start" value="4865"/>
+      <details key="end" value="4885"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.356" references="/0/access/%/%.1">
-      <details key="start" value="4848"/>
-      <details key="end" value="5050"/>
+    <eAnnotations source="positions.362" references="/0/access/%/%.1">
+      <details key="start" value="4886"/>
+      <details key="end" value="5088"/>
       <details key="line" value="120"/>
     </eAnnotations>
-    <eAnnotations source="positions.357" references="/0/access/%/%.1/%">
-      <details key="start" value="4854"/>
-      <details key="end" value="5050"/>
+    <eAnnotations source="positions.363" references="/0/access/%/%.1/%">
+      <details key="start" value="4892"/>
+      <details key="end" value="5088"/>
       <details key="line" value="120"/>
     </eAnnotations>
-    <eAnnotations source="positions.358" references="/0/access/%/%.1/%/%">
-      <details key="start" value="4908"/>
-      <details key="end" value="4926"/>
+    <eAnnotations source="positions.364" references="/0/access/%/%.1/%/%">
+      <details key="start" value="4946"/>
+      <details key="end" value="4964"/>
       <details key="line" value="120"/>
     </eAnnotations>
-    <eAnnotations source="positions.359" references="/0/access/%/%.1/%/%.1">
-      <details key="start" value="4858"/>
-      <details key="end" value="4907"/>
+    <eAnnotations source="positions.365" references="/0/access/%/%.1/%/%.1">
+      <details key="start" value="4896"/>
+      <details key="end" value="4945"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.360" references="/0/access/%/%.1/%/%.1/accessability">
-      <details key="start" value="4858"/>
-      <details key="end" value="4871"/>
+    <eAnnotations source="positions.366" references="/0/access/%/%.1/%/%.1/accessability">
+      <details key="start" value="4896"/>
+      <details key="end" value="4909"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.361" references="/0/access/%/%.1/%/%.1/%">
-      <details key="start" value="4874"/>
-      <details key="end" value="4907"/>
+    <eAnnotations source="positions.367" references="/0/access/%/%.1/%/%.1/%">
+      <details key="start" value="4912"/>
+      <details key="end" value="4945"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.362" references="/0/access/%/%.1/%/%.2">
-      <details key="start" value="4926"/>
-      <details key="end" value="5045"/>
+    <eAnnotations source="positions.368" references="/0/access/%/%.1/%/%.2">
+      <details key="start" value="4964"/>
+      <details key="end" value="5083"/>
       <details key="line" value="120"/>
     </eAnnotations>
-    <eAnnotations source="positions.363" references="/0/access/%/%.1/%/%.2/%">
-      <details key="start" value="4932"/>
-      <details key="end" value="5045"/>
+    <eAnnotations source="positions.369" references="/0/access/%/%.1/%/%.2/%">
+      <details key="start" value="4970"/>
+      <details key="end" value="5083"/>
       <details key="line" value="120"/>
     </eAnnotations>
-    <eAnnotations source="positions.364" references="/0/access/%/%.1/%/%.2/%/%">
-      <details key="start" value="4987"/>
-      <details key="end" value="5006"/>
+    <eAnnotations source="positions.370" references="/0/access/%/%.1/%/%.2/%/%">
+      <details key="start" value="5025"/>
+      <details key="end" value="5044"/>
       <details key="line" value="120"/>
     </eAnnotations>
-    <eAnnotations source="positions.365" references="/0/access/%/%.1/%/%.2/%/%.1">
-      <details key="start" value="4936"/>
-      <details key="end" value="4986"/>
+    <eAnnotations source="positions.371" references="/0/access/%/%.1/%/%.2/%/%.1">
+      <details key="start" value="4974"/>
+      <details key="end" value="5024"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.366" references="/0/access/%/%.1/%/%.2/%/%.1/accessability">
-      <details key="start" value="4936"/>
-      <details key="end" value="4949"/>
+    <eAnnotations source="positions.372" references="/0/access/%/%.1/%/%.2/%/%.1/accessability">
+      <details key="start" value="4974"/>
+      <details key="end" value="4987"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.367" references="/0/access/%/%.1/%/%.2/%/%.1/%">
-      <details key="start" value="4952"/>
-      <details key="end" value="4986"/>
+    <eAnnotations source="positions.373" references="/0/access/%/%.1/%/%.2/%/%.1/%">
+      <details key="start" value="4990"/>
+      <details key="end" value="5024"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.368" references="/0/access/%/%.1/%/%.2/%/%.2">
-      <details key="start" value="5006"/>
-      <details key="end" value="5040"/>
+    <eAnnotations source="positions.374" references="/0/access/%/%.1/%/%.2/%/%.2">
+      <details key="start" value="5044"/>
+      <details key="end" value="5078"/>
       <details key="line" value="120"/>
     </eAnnotations>
-    <eAnnotations source="positions.369" references="/0/access/%/%.1/%/%.2/%/%.2/%">
-      <details key="start" value="5013"/>
-      <details key="end" value="5037"/>
+    <eAnnotations source="positions.375" references="/0/access/%/%.1/%/%.2/%/%.2/%">
+      <details key="start" value="5051"/>
+      <details key="end" value="5075"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.370" references="/0/access/%/%.1/%/%.2/%/%.2/%/accessability">
-      <details key="start" value="5013"/>
-      <details key="end" value="5026"/>
+    <eAnnotations source="positions.376" references="/0/access/%/%.1/%/%.2/%/%.2/%/accessability">
+      <details key="start" value="5051"/>
+      <details key="end" value="5064"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.371" references="/0/access/%/%.1/%/%.2/%/%.2/%.1">
-      <details key="start" value="5039"/>
-      <details key="end" value="5040"/>
+    <eAnnotations source="positions.377" references="/0/access/%/%.1/%/%.2/%/%.2/%.1">
+      <details key="start" value="5077"/>
+      <details key="end" value="5078"/>
       <details key="line" value="120"/>
     </eAnnotations>
-    <eAnnotations source="positions.372" references="/0/access/accessability">
-      <details key="start" value="4775"/>
-      <details key="end" value="4804"/>
+    <eAnnotations source="positions.378" references="/0/access/accessability">
+      <details key="start" value="4813"/>
+      <details key="end" value="4842"/>
       <details key="line" value="119"/>
     </eAnnotations>
   </ecore:EAnnotation>
diff --git a/projectMDE_acceleo/bin/projectMDE_acceleo/main/generate.mtl b/projectMDE_acceleo/bin/projectMDE_acceleo/main/generate.mtl
index 805ddd69993e419b8fdfb18d8f1a43a1ed366ebb..76f70d1775600779a6af2fe26f9c75a4aa2e6d62 100644
--- a/projectMDE_acceleo/bin/projectMDE_acceleo/main/generate.mtl
+++ b/projectMDE_acceleo/bin/projectMDE_acceleo/main/generate.mtl
@@ -70,7 +70,7 @@ namespace [ns.namespace/] {
 [/template]
 
 [template public generateInternalType(delegate : Delegate)]
-[generateTypeDef(delegate.accessability, delegate.specifier, delegate.getType(), delegate.identifier, OrderedSet{})/]([generateParams(delegate.parameters)/]);
+[access(delegate.accessability)/][spec(delegate.specifier)/][delegate.getType().toString()/] [delegate.returnType.getQualifiedName()/] [delegate.identifier/]([generateParams(delegate.parameters)/]);
 [/template]
 
 [template public generateInternalType(enum : Enum)]
@@ -96,7 +96,7 @@ namespace [ns.namespace/] {
 [generateFunction(method.accessability, method.specifier, method.returnType.getQualifiedName(), method.identifier, method.parameters, method._body)/]
 [/template]
 
-[template public generateFunction(access: AccessModifier, spec: Specifier, returnType: String, identifier: String, params: OrderedSet(Parameter), _body: OrderedSet(String))]
+[template public generateFunction(access: AccessModifier, spec: Specifier, returnType: String, identifier: String, params: OrderedSet(Parameter), _body: Sequence(String))]
 [access(access)/][spec(spec)/][returnType/] [identifier/]([generateParams(params)/]) {
 	[for (stat : String | _body)]
 	[stat/]
diff --git a/projectMDE_acceleo/src-gen/extended/ExtendedEnum.cs b/projectMDE_acceleo/src-gen/extended/ExtendedEnum.cs
new file mode 100644
index 0000000000000000000000000000000000000000..3c18cb3afb6cb38f60b6def2cc30f07e3e49b09d
--- /dev/null
+++ b/projectMDE_acceleo/src-gen/extended/ExtendedEnum.cs
@@ -0,0 +1,10 @@
+namespace Extended {
+	// Type definitions
+	public enum MyEnum {
+		ONE = 1, TWO, THREE, FOUR, FIVE, EIGHT = 8, NINE
+	}
+
+	public enum ByteFlags : byte {
+		F1 = 1, F2 = 1 << 1, F3 = 1 << 2, F4 = 1 << 3, F5 = 1 << 4, F6 = 1 << 5, F7 = 1 << 6, F8 = 1 << 7
+	}
+} 
diff --git a/projectMDE_acceleo/src-gen/extended/ExtendedTypes.cs b/projectMDE_acceleo/src-gen/extended/ExtendedTypes.cs
new file mode 100644
index 0000000000000000000000000000000000000000..dfd2d0e68bd84cc7dafedc2dc0f4a199b0c1bd54
--- /dev/null
+++ b/projectMDE_acceleo/src-gen/extended/ExtendedTypes.cs
@@ -0,0 +1,64 @@
+namespace Extended {
+	// Type definitions
+	public delegate void Formatter(string log);
+
+	public interface ISerializable {
+		// interface methods
+		System.Byte[] Serialize();
+		void Deserialize(System.Byte[] bytes);
+	}
+
+	public readonly struct MyReadonlyStruct {
+	
+		// members
+		public readonly string value;
+	
+	}
+
+	public class Base {
+	
+		// members
+		public Extended.Base.Data data;
+	
+		// inner types
+		public struct Data : Extended.ISerializable {
+		
+			// members
+			public float value;
+		
+			// constructors
+			public  Data(float value) {
+				this.value = value;
+			}
+		
+			// methods
+			public System.Byte[] Serialize() {
+				return System.BitConverter.GetBytes(value);
+			}
+		
+			public void Deserialize(System.Byte[] bytes) {
+				value = System.BitConverter.ToSingle(bytes, 0);
+			}
+		
+		}
+	
+	}
+
+	public class Derived : Extended.Base, Extended.ISerializable {
+	
+		// constructors
+		public  Derived() {
+			data = new Data(0.5f);
+		}
+	
+		// methods
+		public System.Byte[] Serialize() {
+			return data.Serialize();
+		}
+	
+		public void Deserialize(System.Byte[] bytes) {
+			data.Deserialize(bytes);
+		}
+	
+	}
+} 
diff --git a/projectMDE_acceleo/src/projectMDE_acceleo/main/generate.mtl b/projectMDE_acceleo/src/projectMDE_acceleo/main/generate.mtl
index 805ddd69993e419b8fdfb18d8f1a43a1ed366ebb..76f70d1775600779a6af2fe26f9c75a4aa2e6d62 100644
--- a/projectMDE_acceleo/src/projectMDE_acceleo/main/generate.mtl
+++ b/projectMDE_acceleo/src/projectMDE_acceleo/main/generate.mtl
@@ -70,7 +70,7 @@ namespace [ns.namespace/] {
 [/template]
 
 [template public generateInternalType(delegate : Delegate)]
-[generateTypeDef(delegate.accessability, delegate.specifier, delegate.getType(), delegate.identifier, OrderedSet{})/]([generateParams(delegate.parameters)/]);
+[access(delegate.accessability)/][spec(delegate.specifier)/][delegate.getType().toString()/] [delegate.returnType.getQualifiedName()/] [delegate.identifier/]([generateParams(delegate.parameters)/]);
 [/template]
 
 [template public generateInternalType(enum : Enum)]
@@ -96,7 +96,7 @@ namespace [ns.namespace/] {
 [generateFunction(method.accessability, method.specifier, method.returnType.getQualifiedName(), method.identifier, method.parameters, method._body)/]
 [/template]
 
-[template public generateFunction(access: AccessModifier, spec: Specifier, returnType: String, identifier: String, params: OrderedSet(Parameter), _body: OrderedSet(String))]
+[template public generateFunction(access: AccessModifier, spec: Specifier, returnType: String, identifier: String, params: OrderedSet(Parameter), _body: Sequence(String))]
 [access(access)/][spec(spec)/][returnType/] [identifier/]([generateParams(params)/]) {
 	[for (stat : String | _body)]
 	[stat/]