summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjmusset2009-03-05 11:51:05 (EST)
committerjmusset2009-03-05 11:51:05 (EST)
commita2d4926c488513473d6a6240b5d7206def556342 (patch)
treeb6a32c7d83c15abdeab171b6e1f13077c3069340
parente7cb8983288502282ca430d098af937b78c5b42d (diff)
downloadorg.eclipse.acceleo-a2d4926c488513473d6a6240b5d7206def556342.zip
org.eclipse.acceleo-a2d4926c488513473d6a6240b5d7206def556342.tar.gz
org.eclipse.acceleo-a2d4926c488513473d6a6240b5d7206def556342.tar.bz2
Project renaming from MTL to Acceleo
-rw-r--r--plugins/org.eclipse.acceleo.model/.checkstyle12
-rw-r--r--plugins/org.eclipse.acceleo.model/.classpath8
-rw-r--r--plugins/org.eclipse.acceleo.model/.project34
-rw-r--r--plugins/org.eclipse.acceleo.model/.settings/org.eclipse.jdt.core.prefs12
-rw-r--r--plugins/org.eclipse.acceleo.model/META-INF/MANIFEST.MF16
-rw-r--r--plugins/org.eclipse.acceleo.model/about.html57
-rw-r--r--plugins/org.eclipse.acceleo.model/build.properties21
-rw-r--r--plugins/org.eclipse.acceleo.model/model/mtl.ecore153
-rw-r--r--plugins/org.eclipse.acceleo.model/model/mtl.genmodel101
-rw-r--r--plugins/org.eclipse.acceleo.model/model/mtlnonstdlib.ecore57
-rw-r--r--plugins/org.eclipse.acceleo.model/model/mtlstdlib.ecore60
-rw-r--r--plugins/org.eclipse.acceleo.model/plugin.properties25
-rw-r--r--plugins/org.eclipse.acceleo.model/plugin.xml45
-rw-r--r--plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/Block.java74
-rw-r--r--plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/FileBlock.java116
-rw-r--r--plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/ForBlock.java198
-rw-r--r--plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/IfBlock.java103
-rw-r--r--plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/InitSection.java48
-rw-r--r--plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/LetBlock.java103
-rw-r--r--plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/Macro.java75
-rw-r--r--plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/MacroInvocation.java75
-rw-r--r--plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/Module.java98
-rw-r--r--plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/ModuleElement.java61
-rw-r--r--plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/MtlFactory.java179
-rw-r--r--plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/MtlPackage.java3813
-rw-r--r--plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/OpenModeKind.java210
-rw-r--r--plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/ProtectedAreaBlock.java57
-rw-r--r--plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/Query.java104
-rw-r--r--plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/QueryInvocation.java75
-rw-r--r--plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/Template.java121
-rw-r--r--plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/TemplateExpression.java25
-rw-r--r--plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/TemplateInvocation.java188
-rw-r--r--plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/TraceBlock.java57
-rw-r--r--plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/TypedModel.java48
-rw-r--r--plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/VisibilityKind.java237
-rw-r--r--plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/BlockImpl.java234
-rw-r--r--plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/FileBlockImpl.java342
-rw-r--r--plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/ForBlockImpl.java582
-rw-r--r--plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/IfBlockImpl.java311
-rw-r--r--plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/InitSectionImpl.java285
-rw-r--r--plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/LetBlockImpl.java313
-rw-r--r--plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/MacroImpl.java333
-rw-r--r--plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/MacroInvocationImpl.java223
-rw-r--r--plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/ModuleElementImpl.java326
-rw-r--r--plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/ModuleImpl.java261
-rw-r--r--plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/MtlFactoryImpl.java396
-rw-r--r--plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/MtlPackageImpl.java1309
-rw-r--r--plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/ProtectedAreaBlockImpl.java191
-rw-r--r--plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/QueryImpl.java301
-rw-r--r--plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/QueryInvocationImpl.java223
-rw-r--r--plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/TemplateExpressionImpl.java46
-rw-r--r--plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/TemplateImpl.java453
-rw-r--r--plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/TemplateInvocationImpl.java529
-rw-r--r--plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/TraceBlockImpl.java191
-rw-r--r--plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/TypedModelImpl.java138
-rw-r--r--plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/util/MtlAdapterFactory.java627
-rw-r--r--plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/util/MtlResourceFactoryImpl.java54
-rw-r--r--plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/util/MtlResourceImpl.java34
-rw-r--r--plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/util/MtlSwitch.java1089
-rw-r--r--plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/util/MtlXMLProcessor.java54
-rw-r--r--plugins/org.eclipse.acceleo.model/src/org/eclipse/acceleo/model/mtl/impl/spec/QueryInvocationSpec.java44
-rw-r--r--plugins/org.eclipse.acceleo.model/src/org/eclipse/acceleo/model/mtl/impl/spec/TemplateInvocationSpec.java44
-rw-r--r--plugins/org.eclipse.acceleo.model/src/org/eclipse/acceleo/model/mtl/resource/EMtlResourceFactoryImpl.java33
-rw-r--r--plugins/org.eclipse.acceleo.model/src/org/eclipse/acceleo/model/mtl/resource/EMtlResourceImpl.java176
64 files changed, 15808 insertions, 0 deletions
diff --git a/plugins/org.eclipse.acceleo.model/.checkstyle b/plugins/org.eclipse.acceleo.model/.checkstyle
new file mode 100644
index 0000000..6703757
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.model/.checkstyle
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<fileset-config file-format-version="1.2.0" simple-config="true">
+ <local-check-config name="Acceleo" location="/org.eclipse.acceleo-feature/codestyle/AcceleoCheckstyleConfiguration.xml" type="project" description="">
+ <additional-data name="protect-config-file" value="false"/>
+ </local-check-config>
+ <fileset name="tous" enabled="true" check-config-name="Acceleo" local="true">
+ <file-match-pattern match-pattern="." include-pattern="true"/>
+ </fileset>
+ <filter name="FilesFromPackage" enabled="true">
+ <filter-data value="src-gen"/>
+ </filter>
+</fileset-config>
diff --git a/plugins/org.eclipse.acceleo.model/.classpath b/plugins/org.eclipse.acceleo.model/.classpath
new file mode 100644
index 0000000..756f428
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.model/.classpath
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src-gen"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/org.eclipse.acceleo.model/.project b/plugins/org.eclipse.acceleo.model/.project
new file mode 100644
index 0000000..60da094
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.model/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.acceleo.model</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>com.atlassw.tools.eclipse.checkstyle.CheckstyleBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>com.atlassw.tools.eclipse.checkstyle.CheckstyleNature</nature>
+ </natures>
+</projectDescription>
diff --git a/plugins/org.eclipse.acceleo.model/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.acceleo.model/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..9fe1e03
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.model/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,12 @@
+#Thu Apr 17 18:13:54 CEST 2008
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.5
diff --git a/plugins/org.eclipse.acceleo.model/META-INF/MANIFEST.MF b/plugins/org.eclipse.acceleo.model/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..34cbb4e
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.model/META-INF/MANIFEST.MF
@@ -0,0 +1,16 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.acceleo.model; singleton:=true
+Bundle-Version: 0.8.0.qualifier
+Bundle-ClassPath: .
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Require-Bundle: org.eclipse.emf.ecore;visibility:=reexport,
+ org.eclipse.emf.ecore.xmi;visibility:=reexport,
+ org.eclipse.ocl.ecore
+Eclipse-LazyStart: true
+Bundle-ActivationPolicy: lazy
+Export-Package: org.eclipse.acceleo.model.mtl,
+ org.eclipse.acceleo.model.mtl.resource
diff --git a/plugins/org.eclipse.acceleo.model/about.html b/plugins/org.eclipse.acceleo.model/about.html
new file mode 100644
index 0000000..7e1117e
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.model/about.html
@@ -0,0 +1,57 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+
+
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>About</title>
+</head><body lang="EN-US">
+<h2>About This Content</h2>
+
+<em>July 25, 2008</em></p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+
+ <h3>Third Party Content</h3>
+ <p>The Content includes items that have been sourced from third parties as set out below. If you
+ did not receive this Content directly from the Eclipse Foundation, the following is provided
+ for informational purposes only, and you should look to the Redistributor's license for
+ terms and conditions of use.</p>
+ <p><em>
+ <br><br>
+ <strong>OMG MOF 2.0 Specification (06-01-01)</strong> <br>
+ <ul>
+ <li><a href="http://www.omg.org/technology/documents/formal/mof.htm">MOF 2.0 main page</a></li>
+ <li><a href="http://www.omg.org/docs/formal/06-01-01.pdf">MOF 2.0 specification</a></li>
+ <li><a href="http://www.omg.org/">OMG site</a></li>
+ </ul>
+ <br>
+ <strong>OMG OCL 2.0 specification (06-05-01)</strong> <br>
+ <ul>
+ <li><a href="http://www.omg.org/technology/documents/formal/ocl.htm">OCL 2.0 main page</a></li>
+ <li><a href="http://www.omg.org/docs/formal/06-05-01.pdf">OCL 2.0 specification</a></li>
+ <li><a href="http://www.omg.org/">OMG site</a></li>
+ </ul>
+ <br>
+ <strong>OMG MTL 1.0 specification (08-01-16)</strong> <br>
+ <ul>
+ <li><a href="http://www.omg.org/spec/MOFM2T/1.0/">MTL 1.0 main page</a></li>
+ <li><a href="http://www.omg.org/spec/MOFM2T/1.0/PDF">MTL 1.0 specification</a></li>
+ <li><a href="http://www.omg.org/">OMG site</a></li>
+ </ul>
+ <br>
+ </em></p>
+ <p>A detailed list of fixes and clarifications with respect to those specifications may be found in the plug-in directly realizing them.</p>
+</body></html> \ No newline at end of file
diff --git a/plugins/org.eclipse.acceleo.model/build.properties b/plugins/org.eclipse.acceleo.model/build.properties
new file mode 100644
index 0000000..74a1f9b
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.model/build.properties
@@ -0,0 +1,21 @@
+################################################################################
+# Copyright (c) 2008, 2009 Obeo.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+# Obeo - initial API and implementation
+################################################################################
+bin.includes = .,\
+ model/,\
+ META-INF/,\
+ plugin.xml,\
+ plugin.properties,\
+ about.html
+jars.compile.order = .
+source.. = src/,\
+ src-gen/
+output.. = bin/
+Bundle-ClassPath: .
diff --git a/plugins/org.eclipse.acceleo.model/model/mtl.ecore b/plugins/org.eclipse.acceleo.model/model/mtl.ecore
new file mode 100644
index 0000000..6e06e3d
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.model/model/mtl.ecore
@@ -0,0 +1,153 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="mtl"
+ nsURI="http://www.eclipse.org/acceleo/mtl/0.8.0" nsPrefix="mtl">
+ <eClassifiers xsi:type="ecore:EClass" name="Module" eSuperTypes="platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EPackage">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="input" lowerBound="1" upperBound="-1"
+ eType="#//TypedModel" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="extends" upperBound="-1"
+ eType="#//Module"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="imports" upperBound="-1"
+ eType="#//Module"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ownedModuleElement" lowerBound="1"
+ upperBound="-1" eType="#//ModuleElement" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ModuleElement" abstract="true" eSuperTypes="platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//ENamedElement platform:/plugin/org.eclipse.ocl/model/OCL.ecore#//utilities/ASTNode">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="visibility" lowerBound="1"
+ eType="#//VisibilityKind"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="VisibilityKind">
+ <eLiterals name="Private"/>
+ <eLiterals name="Protected" value="1"/>
+ <eLiterals name="Public" value="2"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="TemplateExpression" eSuperTypes="platform:/plugin/org.eclipse.ocl.ecore/model/OCLEcore.ecore#//ecore/OCLExpression platform:/plugin/org.eclipse.ocl/model/OCL.ecore#//utilities/ASTNode"/>
+ <eClassifiers xsi:type="ecore:EClass" name="Block" eSuperTypes="#//TemplateExpression">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="init" eType="#//InitSection"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="body" upperBound="-1" eType="ecore:EClass platform:/plugin/org.eclipse.ocl.ecore/model/OCLEcore.ecore#//ecore/OCLExpression"
+ containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="InitSection" eSuperTypes="platform:/plugin/org.eclipse.ocl/model/OCL.ecore#//utilities/ASTNode">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="variable" lowerBound="1"
+ upperBound="-1" eType="ecore:EClass platform:/plugin/org.eclipse.ocl.ecore/model/OCLEcore.ecore#//ecore/Variable"
+ containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Template" eSuperTypes="#//Block #//ModuleElement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="overrides" upperBound="-1"
+ eType="#//Template"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="parameter" upperBound="-1"
+ eType="ecore:EClass platform:/plugin/org.eclipse.ocl.ecore/model/OCLEcore.ecore#//ecore/Variable"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="guard" eType="ecore:EClass platform:/plugin/org.eclipse.ocl.ecore/model/OCLEcore.ecore#//ecore/OCLExpression"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="main" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+ defaultValueLiteral="false"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="TemplateInvocation" eSuperTypes="#//TemplateExpression">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="definition" lowerBound="1"
+ eType="#//Template"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="argument" upperBound="-1"
+ eType="ecore:EClass platform:/plugin/org.eclipse.ocl.ecore/model/OCLEcore.ecore#//ecore/OCLExpression"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="before" eType="ecore:EClass platform:/plugin/org.eclipse.ocl.ecore/model/OCLEcore.ecore#//ecore/OCLExpression"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="after" eType="ecore:EClass platform:/plugin/org.eclipse.ocl.ecore/model/OCLEcore.ecore#//ecore/OCLExpression"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="each" eType="ecore:EClass platform:/plugin/org.eclipse.ocl.ecore/model/OCLEcore.ecore#//ecore/OCLExpression"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="super" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EBoolean"
+ defaultValueLiteral="false"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Query" eSuperTypes="#//ModuleElement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="parameter" upperBound="-1"
+ eType="ecore:EClass platform:/plugin/org.eclipse.ocl.ecore/model/OCLEcore.ecore#//ecore/Variable"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="expression" lowerBound="1"
+ eType="ecore:EClass platform:/plugin/org.eclipse.ocl.ecore/model/OCLEcore.ecore#//ecore/OCLExpression"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="type" lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EClassifier"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="QueryInvocation" eSuperTypes="#//TemplateExpression">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="definition" lowerBound="1"
+ eType="#//Query"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="argument" upperBound="-1"
+ eType="ecore:EClass platform:/plugin/org.eclipse.ocl.ecore/model/OCLEcore.ecore#//ecore/OCLExpression"
+ containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ProtectedAreaBlock" eSuperTypes="#//Block">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="marker" lowerBound="1"
+ eType="ecore:EClass platform:/plugin/org.eclipse.ocl.ecore/model/OCLEcore.ecore#//ecore/OCLExpression"
+ containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ForBlock" eSuperTypes="#//Block">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="loopVariable" lowerBound="1"
+ eType="ecore:EClass platform:/plugin/org.eclipse.ocl.ecore/model/OCLEcore.ecore#//ecore/Variable"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="iterSet" lowerBound="1"
+ eType="ecore:EClass platform:/plugin/org.eclipse.ocl.ecore/model/OCLEcore.ecore#//ecore/OCLExpression"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="before" eType="ecore:EClass platform:/plugin/org.eclipse.ocl.ecore/model/OCLEcore.ecore#//ecore/OCLExpression"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="each" eType="ecore:EClass platform:/plugin/org.eclipse.ocl.ecore/model/OCLEcore.ecore#//ecore/OCLExpression"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="after" eType="ecore:EClass platform:/plugin/org.eclipse.ocl.ecore/model/OCLEcore.ecore#//ecore/OCLExpression"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="guard" eType="ecore:EClass platform:/plugin/org.eclipse.ocl.ecore/model/OCLEcore.ecore#//ecore/OCLExpression"
+ containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="IfBlock" eSuperTypes="#//Block">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ifExpr" lowerBound="1"
+ eType="ecore:EClass platform:/plugin/org.eclipse.ocl.ecore/model/OCLEcore.ecore#//ecore/OCLExpression"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="else" eType="#//Block"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="elseIf" upperBound="-1"
+ eType="#//IfBlock" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="LetBlock" eSuperTypes="#//Block">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="elseLet" upperBound="-1"
+ eType="#//LetBlock" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="else" eType="#//Block"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="letVariable" lowerBound="1"
+ eType="ecore:EClass platform:/plugin/org.eclipse.ocl.ecore/model/OCLEcore.ecore#//ecore/Variable"
+ containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="FileBlock" eSuperTypes="#//Block">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="openMode" lowerBound="1"
+ eType="#//OpenModeKind"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="fileUrl" lowerBound="1"
+ eType="ecore:EClass platform:/plugin/org.eclipse.ocl.ecore/model/OCLEcore.ecore#//ecore/OCLExpression"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="uniqId" eType="ecore:EClass platform:/plugin/org.eclipse.ocl.ecore/model/OCLEcore.ecore#//ecore/OCLExpression"
+ containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="TraceBlock" eSuperTypes="#//Block">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="modelElement" lowerBound="1"
+ eType="ecore:EClass platform:/plugin/org.eclipse.ocl.ecore/model/OCLEcore.ecore#//ecore/OCLExpression"
+ containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Macro" eSuperTypes="#//Block #//ModuleElement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="parameter" upperBound="-1"
+ eType="ecore:EClass platform:/plugin/org.eclipse.ocl.ecore/model/OCLEcore.ecore#//ecore/Variable"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="type" lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EClassifier"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="MacroInvocation" eSuperTypes="#//TemplateExpression">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="definition" lowerBound="1"
+ eType="#//Macro"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="argument" upperBound="-1"
+ eType="ecore:EClass platform:/plugin/org.eclipse.ocl.ecore/model/OCLEcore.ecore#//ecore/OCLExpression"
+ containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="OpenModeKind">
+ <eLiterals name="Append"/>
+ <eLiterals name="OverWrite" value="1"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="TypedModel">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="takesTypesFrom" lowerBound="1"
+ upperBound="-1" eType="ecore:EClass platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EPackage"/>
+ </eClassifiers>
+</ecore:EPackage>
diff --git a/plugins/org.eclipse.acceleo.model/model/mtl.genmodel b/plugins/org.eclipse.acceleo.model/model/mtl.genmodel
new file mode 100644
index 0000000..23eee11
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.model/model/mtl.genmodel
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+ xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" copyrightText=""
+ modelDirectory="/org.eclipse.acceleo.model/src-gen" modelPluginID="org.eclipse.acceleo.model"
+ modelName="Mtl" nonNLSMarkers="true" importerID="org.eclipse.emf.importer.ecore"
+ complianceLevel="5.0" copyrightFields="false" usedGenPackages="platform:/plugin/org.eclipse.emf.ecore/model/Ecore.genmodel#//ecore platform:/plugin/org.eclipse.ocl/model/OCL.genmodel#//ocl platform:/plugin/org.eclipse.ocl.ecore/model/OCLEcore.genmodel#//ocl">
+ <foreignModel>mtl.ecore</foreignModel>
+ <genPackages prefix="Mtl" basePackage="org.eclipse.acceleo.model" resource="XML"
+ disposableProviderFactory="true" ecorePackage="mtl.ecore#/">
+ <genEnums typeSafeEnumCompatible="false" ecoreEnum="mtl.ecore#//VisibilityKind">
+ <genEnumLiterals ecoreEnumLiteral="mtl.ecore#//VisibilityKind/Private"/>
+ <genEnumLiterals ecoreEnumLiteral="mtl.ecore#//VisibilityKind/Protected"/>
+ <genEnumLiterals ecoreEnumLiteral="mtl.ecore#//VisibilityKind/Public"/>
+ </genEnums>
+ <genEnums typeSafeEnumCompatible="false" ecoreEnum="mtl.ecore#//OpenModeKind">
+ <genEnumLiterals ecoreEnumLiteral="mtl.ecore#//OpenModeKind/Append"/>
+ <genEnumLiterals ecoreEnumLiteral="mtl.ecore#//OpenModeKind/OverWrite"/>
+ </genEnums>
+ <genClasses ecoreClass="mtl.ecore#//Module">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference mtl.ecore#//Module/input"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference mtl.ecore#//Module/extends"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference mtl.ecore#//Module/imports"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference mtl.ecore#//Module/ownedModuleElement"/>
+ </genClasses>
+ <genClasses ecoreClass="mtl.ecore#//ModuleElement">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute mtl.ecore#//ModuleElement/visibility"/>
+ </genClasses>
+ <genClasses ecoreClass="mtl.ecore#//TemplateExpression"/>
+ <genClasses ecoreClass="mtl.ecore#//Block">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference mtl.ecore#//Block/init"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference mtl.ecore#//Block/body"/>
+ </genClasses>
+ <genClasses ecoreClass="mtl.ecore#//InitSection">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference mtl.ecore#//InitSection/variable"/>
+ </genClasses>
+ <genClasses ecoreClass="mtl.ecore#//Template">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference mtl.ecore#//Template/overrides"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference mtl.ecore#//Template/parameter"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference mtl.ecore#//Template/guard"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute mtl.ecore#//Template/main"/>
+ </genClasses>
+ <genClasses ecoreClass="mtl.ecore#//TemplateInvocation">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference mtl.ecore#//TemplateInvocation/definition"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference mtl.ecore#//TemplateInvocation/argument"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference mtl.ecore#//TemplateInvocation/before"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference mtl.ecore#//TemplateInvocation/after"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference mtl.ecore#//TemplateInvocation/each"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute mtl.ecore#//TemplateInvocation/super"/>
+ </genClasses>
+ <genClasses ecoreClass="mtl.ecore#//Query">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference mtl.ecore#//Query/parameter"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference mtl.ecore#//Query/expression"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference mtl.ecore#//Query/type"/>
+ </genClasses>
+ <genClasses ecoreClass="mtl.ecore#//QueryInvocation">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference mtl.ecore#//QueryInvocation/definition"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference mtl.ecore#//QueryInvocation/argument"/>
+ </genClasses>
+ <genClasses ecoreClass="mtl.ecore#//ProtectedAreaBlock">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference mtl.ecore#//ProtectedAreaBlock/marker"/>
+ </genClasses>
+ <genClasses ecoreClass="mtl.ecore#//ForBlock">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference mtl.ecore#//ForBlock/loopVariable"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference mtl.ecore#//ForBlock/iterSet"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference mtl.ecore#//ForBlock/before"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference mtl.ecore#//ForBlock/each"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference mtl.ecore#//ForBlock/after"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference mtl.ecore#//ForBlock/guard"/>
+ </genClasses>
+ <genClasses ecoreClass="mtl.ecore#//IfBlock">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference mtl.ecore#//IfBlock/ifExpr"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference mtl.ecore#//IfBlock/else"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference mtl.ecore#//IfBlock/elseIf"/>
+ </genClasses>
+ <genClasses ecoreClass="mtl.ecore#//LetBlock">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference mtl.ecore#//LetBlock/elseLet"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference mtl.ecore#//LetBlock/else"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference mtl.ecore#//LetBlock/letVariable"/>
+ </genClasses>
+ <genClasses ecoreClass="mtl.ecore#//FileBlock">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute mtl.ecore#//FileBlock/openMode"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference mtl.ecore#//FileBlock/fileUrl"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference mtl.ecore#//FileBlock/uniqId"/>
+ </genClasses>
+ <genClasses ecoreClass="mtl.ecore#//TraceBlock">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference mtl.ecore#//TraceBlock/modelElement"/>
+ </genClasses>
+ <genClasses ecoreClass="mtl.ecore#//Macro">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference mtl.ecore#//Macro/parameter"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference mtl.ecore#//Macro/type"/>
+ </genClasses>
+ <genClasses ecoreClass="mtl.ecore#//MacroInvocation">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference mtl.ecore#//MacroInvocation/definition"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference mtl.ecore#//MacroInvocation/argument"/>
+ </genClasses>
+ <genClasses ecoreClass="mtl.ecore#//TypedModel">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference mtl.ecore#//TypedModel/takesTypesFrom"/>
+ </genClasses>
+ </genPackages>
+</genmodel:GenModel>
diff --git a/plugins/org.eclipse.acceleo.model/model/mtlnonstdlib.ecore b/plugins/org.eclipse.acceleo.model/model/mtlnonstdlib.ecore
new file mode 100644
index 0000000..0fdf56a
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.model/model/mtlnonstdlib.ecore
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:ocl.ecore="http://www.eclipse.org/ocl/1.1.0/Ecore" name="mtlnonstdlib"
+ nsURI="http://www.eclipse.org/acceleo/mtl/0.8.0/mtlnonstdlib.ecore" nsPrefix="mtlnonstdlib">
+ <eClassifiers xsi:type="ecore:EClass" name="String">
+ <eOperations name="replace" eType="ocl.ecore:PrimitiveType http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String">
+ <eAnnotations source="MTL non-standard"/>
+ <eParameters name="substring" eType="ocl.ecore:PrimitiveType http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String"/>
+ <eParameters name="replacement" eType="ocl.ecore:PrimitiveType http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String"/>
+ </eOperations>
+ <eOperations name="replaceAll" eType="ocl.ecore:PrimitiveType http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String">
+ <eAnnotations source="MTL non-standard"/>
+ <eParameters name="substring" eType="ocl.ecore:PrimitiveType http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String"/>
+ <eParameters name="replacement" eType="ocl.ecore:PrimitiveType http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String"/>
+ </eOperations>
+ <eOperations name="substituteAll" eType="ocl.ecore:PrimitiveType http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String">
+ <eAnnotations source="MTL non-standard"/>
+ <eParameters name="substring" eType="ocl.ecore:PrimitiveType http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String"/>
+ <eParameters name="replacement" eType="ocl.ecore:PrimitiveType http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String"/>
+ </eOperations>
+ <eOperations name="startsWith" eType="ocl.ecore:PrimitiveType http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/Boolean">
+ <eAnnotations source="MTL non-standard"/>
+ <eParameters name="substring" eType="ocl.ecore:PrimitiveType http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String"/>
+ </eOperations>
+ <eOperations name="endsWith" eType="ocl.ecore:PrimitiveType http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/Boolean">
+ <eAnnotations source="MTL non-standard"/>
+ <eParameters name="substring" eType="ocl.ecore:PrimitiveType http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String"/>
+ </eOperations>
+ <eOperations name="trim" eType="ocl.ecore:PrimitiveType http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String">
+ <eAnnotations source="MTL non-standard"/>
+ </eOperations>
+ <eOperations name="tokenize" eType="ocl.ecore:SequenceType http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/Sequence(T)">
+ <eAnnotations source="MTL non-standard"/>
+ <eParameters name="delimiters" eType="ocl.ecore:PrimitiveType http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String"/>
+ </eOperations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="OclAny">
+ <eOperations name="eAllContents" eType="ocl.ecore:SequenceType http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/Sequence(T)">
+ <eAnnotations source="MTL non-standard"/>
+ </eOperations>
+ <eOperations name="eAllContents" eType="ocl.ecore:SequenceType http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/Sequence(T)">
+ <eAnnotations source="MTL non-standard"/>
+ <eParameters name="filter" eType="ocl.ecore:AnyType http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/OclAny"/>
+ </eOperations>
+ <eOperations name="ancestors" eType="ocl.ecore:SequenceType http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/Sequence(T)">
+ <eAnnotations source="MTL non-standard"/>
+ </eOperations>
+ <eOperations name="siblings" eType="ocl.ecore:SequenceType http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/Sequence(T)"/>
+ <eOperations name="toString" eType="#//String">
+ <eAnnotations source="MTL non-standard"/>
+ </eOperations>
+ <eOperations name="eInverse" eType="ocl.ecore:SequenceType http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/Sequence(T)">
+ <eAnnotations source="MTL non-standard"/>
+ </eOperations>
+ </eClassifiers>
+</ecore:EPackage>
diff --git a/plugins/org.eclipse.acceleo.model/model/mtlstdlib.ecore b/plugins/org.eclipse.acceleo.model/model/mtlstdlib.ecore
new file mode 100644
index 0000000..71969c8
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.model/model/mtlstdlib.ecore
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:ocl.ecore="http://www.eclipse.org/ocl/1.1.0/Ecore" name="mtlstdlib"
+ nsURI="http://www.eclipse.org/acceleo/mtl/0.8.0/mtlstdlib.ecore" nsPrefix="mtlstdlib">
+ <eClassifiers xsi:type="ecore:EClass" name="String">
+ <eOperations name="substitute" eType="ocl.ecore:PrimitiveType http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String">
+ <eAnnotations source="MTL"/>
+ <eParameters name="r" eType="ocl.ecore:PrimitiveType http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String"/>
+ <eParameters name="t" eType="ocl.ecore:PrimitiveType http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String"/>
+ </eOperations>
+ <eOperations name="index" eType="ocl.ecore:PrimitiveType http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/Integer">
+ <eAnnotations source="MTL"/>
+ <eParameters name="r" eType="ocl.ecore:PrimitiveType http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String"/>
+ </eOperations>
+ <eOperations name="first" eType="ocl.ecore:PrimitiveType http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String">
+ <eAnnotations source="MTL"/>
+ <eParameters name="n" eType="ocl.ecore:PrimitiveType http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/Integer"/>
+ </eOperations>
+ <eOperations name="last" eType="ocl.ecore:PrimitiveType http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String">
+ <eAnnotations source="MTL"/>
+ <eParameters name="n" eType="ocl.ecore:PrimitiveType http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/Integer"/>
+ </eOperations>
+ <eOperations name="strstr" eType="ocl.ecore:PrimitiveType http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/Boolean">
+ <eAnnotations source="MTL"/>
+ <eParameters name="r" eType="ocl.ecore:PrimitiveType http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String"/>
+ </eOperations>
+ <eOperations name="strtok" eType="ocl.ecore:PrimitiveType http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String">
+ <eAnnotations source="MTL"/>
+ <eParameters name="s1" eType="ocl.ecore:PrimitiveType http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String"/>
+ <eParameters name="flag" eType="ocl.ecore:PrimitiveType http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/Integer"/>
+ </eOperations>
+ <eOperations name="strcmp" eType="ocl.ecore:PrimitiveType http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/Integer">
+ <eAnnotations source="MTL"/>
+ <eParameters name="s1" eType="ocl.ecore:PrimitiveType http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String"/>
+ </eOperations>
+ <eOperations name="isAlpha" eType="ocl.ecore:PrimitiveType http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/Boolean">
+ <eAnnotations source="MTL"/>
+ </eOperations>
+ <eOperations name="isAlphanum" eType="ocl.ecore:PrimitiveType http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/Boolean">
+ <eAnnotations source="MTL"/>
+ </eOperations>
+ <eOperations name="toUpperFirst" eType="ocl.ecore:PrimitiveType http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String">
+ <eAnnotations source="MTL"/>
+ </eOperations>
+ <eOperations name="toLowerFirst" eType="ocl.ecore:PrimitiveType http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String">
+ <eAnnotations source="MTL"/>
+ </eOperations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Integer">
+ <eOperations name="toString" eType="ocl.ecore:PrimitiveType http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String">
+ <eAnnotations source="MTL"/>
+ </eOperations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Real">
+ <eOperations name="toString">
+ <eAnnotations source="MTL"/>
+ </eOperations>
+ </eClassifiers>
+</ecore:EPackage>
diff --git a/plugins/org.eclipse.acceleo.model/plugin.properties b/plugins/org.eclipse.acceleo.model/plugin.properties
new file mode 100644
index 0000000..bb86605
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.model/plugin.properties
@@ -0,0 +1,25 @@
+#################################################################################
+# Copyright (c) 2008, 2009 Obeo.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+# Obeo - initial API and implementation
+#################################################################################
+pluginName = Acceleo Model
+providerName = Eclipse Modeling Project
+
+# ====================================================================
+# To code developer:
+# Do NOT change the properties between this line and the
+# "%%% END OF TRANSLATED PROPERTIES %%%" line.
+# Make a new property name, append to the end of the file and change
+# the code to use the new property.
+# ====================================================================
+
+# ====================================================================
+# %%% END OF TRANSLATED PROPERTIES %%%
+# ====================================================================
+
diff --git a/plugins/org.eclipse.acceleo.model/plugin.xml b/plugins/org.eclipse.acceleo.model/plugin.xml
new file mode 100644
index 0000000..060ce99
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.model/plugin.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+Copyright (c) 2008, 2009 Obeo.
+All rights reserved. This program and the accompanying materials
+are made available under the terms of the Eclipse Public License v1.0
+which accompanies this distribution, and is available at
+http://www.eclipse.org/legal/epl-v10.html
+
+Contributors:
+ Obeo - initial API and implementation
+-->
+
+<plugin>
+
+ <extension point="org.eclipse.emf.ecore.generated_package">
+ <package
+ uri = "http://www.eclipse.org/acceleo/mtl/0.8.0/"
+ class = "org.eclipse.acceleo.model.mtl.MtlPackage"
+ genModel = "model/mtl.genmodel" />
+ </extension>
+
+ <extension point="org.eclipse.emf.ecore.extension_parser">
+ <parser
+ type="emtl"
+ class="org.eclipse.acceleo.model.mtl.resource.EMtlResourceFactoryImpl" />
+ </extension>
+
+ <extension
+ point="org.eclipse.emf.ecore.uri_mapping">
+ <mapping
+ source="http://www.eclipse.org/acceleo/mtl/0.8.0/mtlstdlib.ecore"
+ target="platform:/plugin/org.eclipse.acceleo.model/model/mtlstdlib.ecore">
+ </mapping>
+ </extension>
+
+ <extension
+ point="org.eclipse.emf.ecore.uri_mapping">
+ <mapping
+ source="http://www.eclipse.org/acceleo/mtl/0.8.0/mtlnonstdlib.ecore"
+ target="platform:/plugin/org.eclipse.acceleo.model/model/mtlnonstdlib.ecore">
+ </mapping>
+ </extension>
+</plugin>
diff --git a/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/Block.java b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/Block.java
new file mode 100644
index 0000000..5f4a0f9
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/Block.java
@@ -0,0 +1,74 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.model.mtl;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.ocl.ecore.OCLExpression;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '<em><b>Block</b></em>'. <!-- end-user-doc -->
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.acceleo.model.mtl.Block#getInit <em>Init</em>}</li>
+ * <li>{@link org.eclipse.acceleo.model.mtl.Block#getBody <em>Body</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.acceleo.model.mtl.MtlPackage#getBlock()
+ * @model
+ * @generated
+ */
+public interface Block extends TemplateExpression {
+ /**
+ * Returns the value of the '<em><b>Init</b></em>' containment reference. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Init</em>' containment reference isn't clear, there really should be more of
+ * a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Init</em>' containment reference.
+ * @see #setInit(InitSection)
+ * @see org.eclipse.acceleo.model.mtl.MtlPackage#getBlock_Init()
+ * @model containment="true"
+ * @generated
+ */
+ InitSection getInit();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.acceleo.model.mtl.Block#getInit <em>Init</em>}' containment reference. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Init</em>' containment reference.
+ * @see #getInit()
+ * @generated
+ */
+ void setInit(InitSection value);
+
+ /**
+ * Returns the value of the '<em><b>Body</b></em>' containment reference list. The list contents are of
+ * type {@link org.eclipse.ocl.ecore.OCLExpression}. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Body</em>' containment reference list isn't clear, there really should be
+ * more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Body</em>' containment reference list.
+ * @see org.eclipse.acceleo.model.mtl.MtlPackage#getBlock_Body()
+ * @model containment="true"
+ * @generated
+ */
+ EList<OCLExpression> getBody();
+
+} // Block
diff --git a/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/FileBlock.java b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/FileBlock.java
new file mode 100644
index 0000000..ac0414c
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/FileBlock.java
@@ -0,0 +1,116 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.model.mtl;
+
+import org.eclipse.ocl.ecore.OCLExpression;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '<em><b>File Block</b></em>'. <!--
+ * end-user-doc -->
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.acceleo.model.mtl.FileBlock#getOpenMode <em>Open Mode</em>}</li>
+ * <li>{@link org.eclipse.acceleo.model.mtl.FileBlock#getFileUrl <em>File Url</em>}</li>
+ * <li>{@link org.eclipse.acceleo.model.mtl.FileBlock#getUniqId <em>Uniq Id</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.acceleo.model.mtl.MtlPackage#getFileBlock()
+ * @model
+ * @generated
+ */
+public interface FileBlock extends Block {
+ /**
+ * Returns the value of the '<em><b>Open Mode</b></em>' attribute. The literals are from the enumeration
+ * {@link org.eclipse.acceleo.model.mtl.OpenModeKind}. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Open Mode</em>' attribute isn't clear, there really should be more of a
+ * description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Open Mode</em>' attribute.
+ * @see org.eclipse.acceleo.model.mtl.OpenModeKind
+ * @see #setOpenMode(OpenModeKind)
+ * @see org.eclipse.acceleo.model.mtl.MtlPackage#getFileBlock_OpenMode()
+ * @model required="true"
+ * @generated
+ */
+ OpenModeKind getOpenMode();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.acceleo.model.mtl.FileBlock#getOpenMode <em>Open Mode</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Open Mode</em>' attribute.
+ * @see org.eclipse.acceleo.model.mtl.OpenModeKind
+ * @see #getOpenMode()
+ * @generated
+ */
+ void setOpenMode(OpenModeKind value);
+
+ /**
+ * Returns the value of the '<em><b>File Url</b></em>' containment reference. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>File Url</em>' containment reference isn't clear, there really should be
+ * more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>File Url</em>' containment reference.
+ * @see #setFileUrl(OCLExpression)
+ * @see org.eclipse.acceleo.model.mtl.MtlPackage#getFileBlock_FileUrl()
+ * @model containment="true" required="true"
+ * @generated
+ */
+ OCLExpression getFileUrl();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.acceleo.model.mtl.FileBlock#getFileUrl <em>File Url</em>}' containment
+ * reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>File Url</em>' containment reference.
+ * @see #getFileUrl()
+ * @generated
+ */
+ void setFileUrl(OCLExpression value);
+
+ /**
+ * Returns the value of the '<em><b>Uniq Id</b></em>' containment reference. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Uniq Id</em>' containment reference isn't clear, there really should be more
+ * of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Uniq Id</em>' containment reference.
+ * @see #setUniqId(OCLExpression)
+ * @see org.eclipse.acceleo.model.mtl.MtlPackage#getFileBlock_UniqId()
+ * @model containment="true"
+ * @generated
+ */
+ OCLExpression getUniqId();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.acceleo.model.mtl.FileBlock#getUniqId <em>Uniq Id</em>}' containment
+ * reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Uniq Id</em>' containment reference.
+ * @see #getUniqId()
+ * @generated
+ */
+ void setUniqId(OCLExpression value);
+
+} // FileBlock
diff --git a/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/ForBlock.java b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/ForBlock.java
new file mode 100644
index 0000000..ae7c114
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/ForBlock.java
@@ -0,0 +1,198 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.model.mtl;
+
+import org.eclipse.ocl.ecore.OCLExpression;
+import org.eclipse.ocl.ecore.Variable;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '<em><b>For Block</b></em>'. <!-- end-user-doc
+ * -->
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.acceleo.model.mtl.ForBlock#getLoopVariable <em>Loop Variable</em>}</li>
+ * <li>{@link org.eclipse.acceleo.model.mtl.ForBlock#getIterSet <em>Iter Set</em>}</li>
+ * <li>{@link org.eclipse.acceleo.model.mtl.ForBlock#getBefore <em>Before</em>}</li>
+ * <li>{@link org.eclipse.acceleo.model.mtl.ForBlock#getEach <em>Each</em>}</li>
+ * <li>{@link org.eclipse.acceleo.model.mtl.ForBlock#getAfter <em>After</em>}</li>
+ * <li>{@link org.eclipse.acceleo.model.mtl.ForBlock#getGuard <em>Guard</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.acceleo.model.mtl.MtlPackage#getForBlock()
+ * @model
+ * @generated
+ */
+public interface ForBlock extends Block {
+ /**
+ * Returns the value of the '<em><b>Loop Variable</b></em>' containment reference. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Loop Variable</em>' containment reference isn't clear, there really should
+ * be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Loop Variable</em>' containment reference.
+ * @see #setLoopVariable(Variable)
+ * @see org.eclipse.acceleo.model.mtl.MtlPackage#getForBlock_LoopVariable()
+ * @model containment="true" required="true"
+ * @generated
+ */
+ Variable getLoopVariable();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.acceleo.model.mtl.ForBlock#getLoopVariable <em>Loop Variable</em>}'
+ * containment reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Loop Variable</em>' containment reference.
+ * @see #getLoopVariable()
+ * @generated
+ */
+ void setLoopVariable(Variable value);
+
+ /**
+ * Returns the value of the '<em><b>Iter Set</b></em>' containment reference. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Iter Set</em>' containment reference isn't clear, there really should be
+ * more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Iter Set</em>' containment reference.
+ * @see #setIterSet(OCLExpression)
+ * @see org.eclipse.acceleo.model.mtl.MtlPackage#getForBlock_IterSet()
+ * @model containment="true" required="true"
+ * @generated
+ */
+ OCLExpression getIterSet();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.acceleo.model.mtl.ForBlock#getIterSet <em>Iter Set</em>}' containment
+ * reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Iter Set</em>' containment reference.
+ * @see #getIterSet()
+ * @generated
+ */
+ void setIterSet(OCLExpression value);
+
+ /**
+ * Returns the value of the '<em><b>Before</b></em>' containment reference. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Before</em>' containment reference isn't clear, there really should be more
+ * of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Before</em>' containment reference.
+ * @see #setBefore(OCLExpression)
+ * @see org.eclipse.acceleo.model.mtl.MtlPackage#getForBlock_Before()
+ * @model containment="true"
+ * @generated
+ */
+ OCLExpression getBefore();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.acceleo.model.mtl.ForBlock#getBefore <em>Before</em>}' containment
+ * reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Before</em>' containment reference.
+ * @see #getBefore()
+ * @generated
+ */
+ void setBefore(OCLExpression value);
+
+ /**
+ * Returns the value of the '<em><b>Each</b></em>' containment reference. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Each</em>' containment reference isn't clear, there really should be more of
+ * a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Each</em>' containment reference.
+ * @see #setEach(OCLExpression)
+ * @see org.eclipse.acceleo.model.mtl.MtlPackage#getForBlock_Each()
+ * @model containment="true"
+ * @generated
+ */
+ OCLExpression getEach();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.acceleo.model.mtl.ForBlock#getEach <em>Each</em>}' containment reference.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Each</em>' containment reference.
+ * @see #getEach()
+ * @generated
+ */
+ void setEach(OCLExpression value);
+
+ /**
+ * Returns the value of the '<em><b>After</b></em>' containment reference. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>After</em>' containment reference isn't clear, there really should be more
+ * of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>After</em>' containment reference.
+ * @see #setAfter(OCLExpression)
+ * @see org.eclipse.acceleo.model.mtl.MtlPackage#getForBlock_After()
+ * @model containment="true"
+ * @generated
+ */
+ OCLExpression getAfter();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.acceleo.model.mtl.ForBlock#getAfter <em>After</em>}' containment reference.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>After</em>' containment reference.
+ * @see #getAfter()
+ * @generated
+ */
+ void setAfter(OCLExpression value);
+
+ /**
+ * Returns the value of the '<em><b>Guard</b></em>' containment reference. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Guard</em>' containment reference isn't clear, there really should be more
+ * of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Guard</em>' containment reference.
+ * @see #setGuard(OCLExpression)
+ * @see org.eclipse.acceleo.model.mtl.MtlPackage#getForBlock_Guard()
+ * @model containment="true"
+ * @generated
+ */
+ OCLExpression getGuard();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.acceleo.model.mtl.ForBlock#getGuard <em>Guard</em>}' containment reference.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Guard</em>' containment reference.
+ * @see #getGuard()
+ * @generated
+ */
+ void setGuard(OCLExpression value);
+
+} // ForBlock
diff --git a/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/IfBlock.java b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/IfBlock.java
new file mode 100644
index 0000000..e62ab5f
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/IfBlock.java
@@ -0,0 +1,103 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.model.mtl;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.ocl.ecore.OCLExpression;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '<em><b>If Block</b></em>'. <!-- end-user-doc
+ * -->
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.acceleo.model.mtl.IfBlock#getIfExpr <em>If Expr</em>}</li>
+ * <li>{@link org.eclipse.acceleo.model.mtl.IfBlock#getElse <em>Else</em>}</li>
+ * <li>{@link org.eclipse.acceleo.model.mtl.IfBlock#getElseIf <em>Else If</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.acceleo.model.mtl.MtlPackage#getIfBlock()
+ * @model
+ * @generated
+ */
+public interface IfBlock extends Block {
+ /**
+ * Returns the value of the '<em><b>If Expr</b></em>' containment reference. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>If Expr</em>' containment reference isn't clear, there really should be more
+ * of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>If Expr</em>' containment reference.
+ * @see #setIfExpr(OCLExpression)
+ * @see org.eclipse.acceleo.model.mtl.MtlPackage#getIfBlock_IfExpr()
+ * @model containment="true" required="true"
+ * @generated
+ */
+ OCLExpression getIfExpr();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.acceleo.model.mtl.IfBlock#getIfExpr <em>If Expr</em>}' containment
+ * reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>If Expr</em>' containment reference.
+ * @see #getIfExpr()
+ * @generated
+ */
+ void setIfExpr(OCLExpression value);
+
+ /**
+ * Returns the value of the '<em><b>Else</b></em>' containment reference. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Else</em>' containment reference isn't clear, there really should be more of
+ * a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Else</em>' containment reference.
+ * @see #setElse(Block)
+ * @see org.eclipse.acceleo.model.mtl.MtlPackage#getIfBlock_Else()
+ * @model containment="true"
+ * @generated
+ */
+ Block getElse();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.acceleo.model.mtl.IfBlock#getElse <em>Else</em>}' containment reference.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Else</em>' containment reference.
+ * @see #getElse()
+ * @generated
+ */
+ void setElse(Block value);
+
+ /**
+ * Returns the value of the '<em><b>Else If</b></em>' containment reference list. The list contents are of
+ * type {@link org.eclipse.acceleo.model.mtl.IfBlock}. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Else If</em>' containment reference list isn't clear, there really should be
+ * more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Else If</em>' containment reference list.
+ * @see org.eclipse.acceleo.model.mtl.MtlPackage#getIfBlock_ElseIf()
+ * @model containment="true"
+ * @generated
+ */
+ EList<IfBlock> getElseIf();
+
+} // IfBlock
diff --git a/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/InitSection.java b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/InitSection.java
new file mode 100644
index 0000000..d716884
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/InitSection.java
@@ -0,0 +1,48 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.model.mtl;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.ocl.ecore.Variable;
+import org.eclipse.ocl.utilities.ASTNode;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '<em><b>Init Section</b></em>'. <!--
+ * end-user-doc -->
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.acceleo.model.mtl.InitSection#getVariable <em>Variable</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.acceleo.model.mtl.MtlPackage#getInitSection()
+ * @model
+ * @generated
+ */
+public interface InitSection extends ASTNode {
+ /**
+ * Returns the value of the '<em><b>Variable</b></em>' containment reference list. The list contents are
+ * of type {@link org.eclipse.ocl.ecore.Variable}. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Variable</em>' containment reference list isn't clear, there really should
+ * be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Variable</em>' containment reference list.
+ * @see org.eclipse.acceleo.model.mtl.MtlPackage#getInitSection_Variable()
+ * @model containment="true" required="true"
+ * @generated
+ */
+ EList<Variable> getVariable();
+
+} // InitSection
diff --git a/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/LetBlock.java b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/LetBlock.java
new file mode 100644
index 0000000..90dba98
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/LetBlock.java
@@ -0,0 +1,103 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.model.mtl;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.ocl.ecore.Variable;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '<em><b>Let Block</b></em>'. <!-- end-user-doc
+ * -->
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.acceleo.model.mtl.LetBlock#getElseLet <em>Else Let</em>}</li>
+ * <li>{@link org.eclipse.acceleo.model.mtl.LetBlock#getElse <em>Else</em>}</li>
+ * <li>{@link org.eclipse.acceleo.model.mtl.LetBlock#getLetVariable <em>Let Variable</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.acceleo.model.mtl.MtlPackage#getLetBlock()
+ * @model
+ * @generated
+ */
+public interface LetBlock extends Block {
+ /**
+ * Returns the value of the '<em><b>Else Let</b></em>' containment reference list. The list contents are
+ * of type {@link org.eclipse.acceleo.model.mtl.LetBlock}. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Else Let</em>' containment reference list isn't clear, there really should
+ * be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Else Let</em>' containment reference list.
+ * @see org.eclipse.acceleo.model.mtl.MtlPackage#getLetBlock_ElseLet()
+ * @model containment="true"
+ * @generated
+ */
+ EList<LetBlock> getElseLet();
+
+ /**
+ * Returns the value of the '<em><b>Else</b></em>' containment reference. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Else</em>' containment reference isn't clear, there really should be more of
+ * a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Else</em>' containment reference.
+ * @see #setElse(Block)
+ * @see org.eclipse.acceleo.model.mtl.MtlPackage#getLetBlock_Else()
+ * @model containment="true"
+ * @generated
+ */
+ Block getElse();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.acceleo.model.mtl.LetBlock#getElse <em>Else</em>}' containment reference.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Else</em>' containment reference.
+ * @see #getElse()
+ * @generated
+ */
+ void setElse(Block value);
+
+ /**
+ * Returns the value of the '<em><b>Let Variable</b></em>' containment reference. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Let Variable</em>' containment reference isn't clear, there really should be
+ * more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Let Variable</em>' containment reference.
+ * @see #setLetVariable(Variable)
+ * @see org.eclipse.acceleo.model.mtl.MtlPackage#getLetBlock_LetVariable()
+ * @model containment="true" required="true"
+ * @generated
+ */
+ Variable getLetVariable();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.acceleo.model.mtl.LetBlock#getLetVariable <em>Let Variable</em>}'
+ * containment reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Let Variable</em>' containment reference.
+ * @see #getLetVariable()
+ * @generated
+ */
+ void setLetVariable(Variable value);
+
+} // LetBlock
diff --git a/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/Macro.java b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/Macro.java
new file mode 100644
index 0000000..44f6c56
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/Macro.java
@@ -0,0 +1,75 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.model.mtl;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClassifier;
+import org.eclipse.ocl.ecore.Variable;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '<em><b>Macro</b></em>'. <!-- end-user-doc -->
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.acceleo.model.mtl.Macro#getParameter <em>Parameter</em>}</li>
+ * <li>{@link org.eclipse.acceleo.model.mtl.Macro#getType <em>Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.acceleo.model.mtl.MtlPackage#getMacro()
+ * @model
+ * @generated
+ */
+public interface Macro extends Block, ModuleElement {
+ /**
+ * Returns the value of the '<em><b>Parameter</b></em>' containment reference list. The list contents are
+ * of type {@link org.eclipse.ocl.ecore.Variable}. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Parameter</em>' containment reference list isn't clear, there really should
+ * be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Parameter</em>' containment reference list.
+ * @see org.eclipse.acceleo.model.mtl.MtlPackage#getMacro_Parameter()
+ * @model containment="true"
+ * @generated
+ */
+ EList<Variable> getParameter();
+
+ /**
+ * Returns the value of the '<em><b>Type</b></em>' reference. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Type</em>' reference isn't clear, there really should be more of a
+ * description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Type</em>' reference.
+ * @see #setType(EClassifier)
+ * @see org.eclipse.acceleo.model.mtl.MtlPackage#getMacro_Type()
+ * @model required="true"
+ * @generated
+ */
+ EClassifier getType();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.acceleo.model.mtl.Macro#getType <em>Type</em>}' reference. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Type</em>' reference.
+ * @see #getType()
+ * @generated
+ */
+ void setType(EClassifier value);
+
+} // Macro
diff --git a/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/MacroInvocation.java b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/MacroInvocation.java
new file mode 100644
index 0000000..c28faec
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/MacroInvocation.java
@@ -0,0 +1,75 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.model.mtl;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.ocl.ecore.OCLExpression;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '<em><b>Macro Invocation</b></em>'. <!--
+ * end-user-doc -->
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.acceleo.model.mtl.MacroInvocation#getDefinition <em>Definition</em>}</li>
+ * <li>{@link org.eclipse.acceleo.model.mtl.MacroInvocation#getArgument <em>Argument</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.acceleo.model.mtl.MtlPackage#getMacroInvocation()
+ * @model
+ * @generated
+ */
+public interface MacroInvocation extends TemplateExpression {
+ /**
+ * Returns the value of the '<em><b>Definition</b></em>' reference. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Definition</em>' reference isn't clear, there really should be more of a
+ * description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Definition</em>' reference.
+ * @see #setDefinition(Macro)
+ * @see org.eclipse.acceleo.model.mtl.MtlPackage#getMacroInvocation_Definition()
+ * @model required="true"
+ * @generated
+ */
+ Macro getDefinition();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.acceleo.model.mtl.MacroInvocation#getDefinition <em>Definition</em>}'
+ * reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Definition</em>' reference.
+ * @see #getDefinition()
+ * @generated
+ */
+ void setDefinition(Macro value);
+
+ /**
+ * Returns the value of the '<em><b>Argument</b></em>' containment reference list. The list contents are
+ * of type {@link org.eclipse.ocl.ecore.OCLExpression}. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Argument</em>' containment reference list isn't clear, there really should
+ * be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Argument</em>' containment reference list.
+ * @see org.eclipse.acceleo.model.mtl.MtlPackage#getMacroInvocation_Argument()
+ * @model containment="true"
+ * @generated
+ */
+ EList<OCLExpression> getArgument();
+
+} // MacroInvocation
diff --git a/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/Module.java b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/Module.java
new file mode 100644
index 0000000..e6682b8
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/Module.java
@@ -0,0 +1,98 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.model.mtl;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EPackage;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '<em><b>Module</b></em>'. <!-- end-user-doc
+ * -->
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.acceleo.model.mtl.Module#getInput <em>Input</em>}</li>
+ * <li>{@link org.eclipse.acceleo.model.mtl.Module#getExtends <em>Extends</em>}</li>
+ * <li>{@link org.eclipse.acceleo.model.mtl.Module#getImports <em>Imports</em>}</li>
+ * <li>{@link org.eclipse.acceleo.model.mtl.Module#getOwnedModuleElement <em>Owned Module Element</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.acceleo.model.mtl.MtlPackage#getModule()
+ * @model
+ * @generated
+ */
+public interface Module extends EPackage {
+ /**
+ * Returns the value of the '<em><b>Input</b></em>' containment reference list. The list contents are of
+ * type {@link org.eclipse.acceleo.model.mtl.TypedModel}. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Input</em>' containment reference list isn't clear, there really should be
+ * more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Input</em>' containment reference list.
+ * @see org.eclipse.acceleo.model.mtl.MtlPackage#getModule_Input()
+ * @model containment="true" required="true"
+ * @generated
+ */
+ EList<TypedModel> getInput();
+
+ /**
+ * Returns the value of the '<em><b>Extends</b></em>' reference list. The list contents are of type
+ * {@link org.eclipse.acceleo.model.mtl.Module}. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Extends</em>' reference list isn't clear, there really should be more of a
+ * description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Extends</em>' reference list.
+ * @see org.eclipse.acceleo.model.mtl.MtlPackage#getModule_Extends()
+ * @model
+ * @generated
+ */
+ EList<Module> getExtends();
+
+ /**
+ * Returns the value of the '<em><b>Imports</b></em>' reference list. The list contents are of type
+ * {@link org.eclipse.acceleo.model.mtl.Module}. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Imports</em>' reference list isn't clear, there really should be more of a
+ * description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Imports</em>' reference list.
+ * @see org.eclipse.acceleo.model.mtl.MtlPackage#getModule_Imports()
+ * @model
+ * @generated
+ */
+ EList<Module> getImports();
+
+ /**
+ * Returns the value of the '<em><b>Owned Module Element</b></em>' containment reference list. The list
+ * contents are of type {@link org.eclipse.acceleo.model.mtl.ModuleElement}. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Owned Module Element</em>' containment reference list isn't clear, there
+ * really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Owned Module Element</em>' containment reference list.
+ * @see org.eclipse.acceleo.model.mtl.MtlPackage#getModule_OwnedModuleElement()
+ * @model containment="true" required="true"
+ * @generated
+ */
+ EList<ModuleElement> getOwnedModuleElement();
+
+} // Module
diff --git a/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/ModuleElement.java b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/ModuleElement.java
new file mode 100644
index 0000000..1139b17
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/ModuleElement.java
@@ -0,0 +1,61 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.model.mtl;
+
+import org.eclipse.emf.ecore.ENamedElement;
+import org.eclipse.ocl.utilities.ASTNode;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '<em><b>Module Element</b></em>'. <!--
+ * end-user-doc -->
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.acceleo.model.mtl.ModuleElement#getVisibility <em>Visibility</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.acceleo.model.mtl.MtlPackage#getModuleElement()
+ * @model abstract="true"
+ * @generated
+ */
+public interface ModuleElement extends ENamedElement, ASTNode {
+ /**
+ * Returns the value of the '<em><b>Visibility</b></em>' attribute. The literals are from the enumeration
+ * {@link org.eclipse.acceleo.model.mtl.VisibilityKind}. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Visibility</em>' attribute isn't clear, there really should be more of a
+ * description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Visibility</em>' attribute.
+ * @see org.eclipse.acceleo.model.mtl.VisibilityKind
+ * @see #setVisibility(VisibilityKind)
+ * @see org.eclipse.acceleo.model.mtl.MtlPackage#getModuleElement_Visibility()
+ * @model required="true"
+ * @generated
+ */
+ VisibilityKind getVisibility();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.acceleo.model.mtl.ModuleElement#getVisibility <em>Visibility</em>}'
+ * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Visibility</em>' attribute.
+ * @see org.eclipse.acceleo.model.mtl.VisibilityKind
+ * @see #getVisibility()
+ * @generated
+ */
+ void setVisibility(VisibilityKind value);
+
+} // ModuleElement
diff --git a/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/MtlFactory.java b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/MtlFactory.java
new file mode 100644
index 0000000..4fecfc3
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/MtlFactory.java
@@ -0,0 +1,179 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.model.mtl;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc --> The <b>Factory</b> for the model. It provides a create method for each non-abstract
+ * class of the model. <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.model.mtl.MtlPackage
+ * @generated
+ */
+public interface MtlFactory extends EFactory {
+ /**
+ * The singleton instance of the factory. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ MtlFactory eINSTANCE = org.eclipse.acceleo.model.mtl.impl.MtlFactoryImpl.init();
+
+ /**
+ * Returns a new object of class '<em>Module</em>'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return a new object of class '<em>Module</em>'.
+ * @generated
+ */
+ Module createModule();
+
+ /**
+ * Returns a new object of class '<em>Template Expression</em>'. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @return a new object of class '<em>Template Expression</em>'.
+ * @generated
+ */
+ TemplateExpression createTemplateExpression();
+
+ /**
+ * Returns a new object of class '<em>Block</em>'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return a new object of class '<em>Block</em>'.
+ * @generated
+ */
+ Block createBlock();
+
+ /**
+ * Returns a new object of class '<em>Init Section</em>'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return a new object of class '<em>Init Section</em>'.
+ * @generated
+ */
+ InitSection createInitSection();
+
+ /**
+ * Returns a new object of class '<em>Template</em>'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return a new object of class '<em>Template</em>'.
+ * @generated
+ */
+ Template createTemplate();
+
+ /**
+ * Returns a new object of class '<em>Template Invocation</em>'. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @return a new object of class '<em>Template Invocation</em>'.
+ * @generated
+ */
+ TemplateInvocation createTemplateInvocation();
+
+ /**
+ * Returns a new object of class '<em>Query</em>'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return a new object of class '<em>Query</em>'.
+ * @generated
+ */
+ Query createQuery();
+
+ /**
+ * Returns a new object of class '<em>Query Invocation</em>'. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @return a new object of class '<em>Query Invocation</em>'.
+ * @generated
+ */
+ QueryInvocation createQueryInvocation();
+
+ /**
+ * Returns a new object of class '<em>Protected Area Block</em>'. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @return a new object of class '<em>Protected Area Block</em>'.
+ * @generated
+ */
+ ProtectedAreaBlock createProtectedAreaBlock();
+
+ /**
+ * Returns a new object of class '<em>For Block</em>'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return a new object of class '<em>For Block</em>'.
+ * @generated
+ */
+ ForBlock createForBlock();
+
+ /**
+ * Returns a new object of class '<em>If Block</em>'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return a new object of class '<em>If Block</em>'.
+ * @generated
+ */
+ IfBlock createIfBlock();
+
+ /**
+ * Returns a new object of class '<em>Let Block</em>'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return a new object of class '<em>Let Block</em>'.
+ * @generated
+ */
+ LetBlock createLetBlock();
+
+ /**
+ * Returns a new object of class '<em>File Block</em>'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return a new object of class '<em>File Block</em>'.
+ * @generated
+ */
+ FileBlock createFileBlock();
+
+ /**
+ * Returns a new object of class '<em>Trace Block</em>'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return a new object of class '<em>Trace Block</em>'.
+ * @generated
+ */
+ TraceBlock createTraceBlock();
+
+ /**
+ * Returns a new object of class '<em>Macro</em>'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return a new object of class '<em>Macro</em>'.
+ * @generated
+ */
+ Macro createMacro();
+
+ /**
+ * Returns a new object of class '<em>Macro Invocation</em>'. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @return a new object of class '<em>Macro Invocation</em>'.
+ * @generated
+ */
+ MacroInvocation createMacroInvocation();
+
+ /**
+ * Returns a new object of class '<em>Typed Model</em>'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return a new object of class '<em>Typed Model</em>'.
+ * @generated
+ */
+ TypedModel createTypedModel();
+
+ /**
+ * Returns the package supported by this factory. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the package supported by this factory.
+ * @generated
+ */
+ MtlPackage getMtlPackage();
+
+} // MtlFactory
diff --git a/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/MtlPackage.java b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/MtlPackage.java
new file mode 100644
index 0000000..c443a7d
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/MtlPackage.java
@@ -0,0 +1,3813 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.model.mtl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EcorePackage;
+import org.eclipse.ocl.utilities.UtilitiesPackage;
+
+/**
+ * <!-- begin-user-doc --> The <b>Package</b> for the model. It contains accessors for the meta objects to
+ * represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.model.mtl.MtlFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface MtlPackage extends EPackage {
+ /**
+ * The package name. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ String eNAME = "mtl"; //$NON-NLS-1$
+
+ /**
+ * The package namespace URI. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ String eNS_URI = "http://www.eclipse.org/acceleo/mtl/0.8.0"; //$NON-NLS-1$
+
+ /**
+ * The package namespace name. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ String eNS_PREFIX = "mtl"; //$NON-NLS-1$
+
+ /**
+ * The singleton instance of the package. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ MtlPackage eINSTANCE = org.eclipse.acceleo.model.mtl.impl.MtlPackageImpl.init();
+
+ /**
+ * The meta object id for the '{@link org.eclipse.acceleo.model.mtl.impl.ModuleImpl <em>Module</em>}' class. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.model.mtl.impl.ModuleImpl
+ * @see org.eclipse.acceleo.model.mtl.impl.MtlPackageImpl#getModule()
+ * @generated
+ */
+ int MODULE = 0;
+
+ /**
+ * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MODULE__EANNOTATIONS = EcorePackage.EPACKAGE__EANNOTATIONS;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MODULE__NAME = EcorePackage.EPACKAGE__NAME;
+
+ /**
+ * The feature id for the '<em><b>Ns URI</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MODULE__NS_URI = EcorePackage.EPACKAGE__NS_URI;
+
+ /**
+ * The feature id for the '<em><b>Ns Prefix</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MODULE__NS_PREFIX = EcorePackage.EPACKAGE__NS_PREFIX;
+
+ /**
+ * The feature id for the '<em><b>EFactory Instance</b></em>' reference. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MODULE__EFACTORY_INSTANCE = EcorePackage.EPACKAGE__EFACTORY_INSTANCE;
+
+ /**
+ * The feature id for the '<em><b>EClassifiers</b></em>' containment reference list. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MODULE__ECLASSIFIERS = EcorePackage.EPACKAGE__ECLASSIFIERS;
+
+ /**
+ * The feature id for the '<em><b>ESubpackages</b></em>' containment reference list. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MODULE__ESUBPACKAGES = EcorePackage.EPACKAGE__ESUBPACKAGES;
+
+ /**
+ * The feature id for the '<em><b>ESuper Package</b></em>' container reference. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MODULE__ESUPER_PACKAGE = EcorePackage.EPACKAGE__ESUPER_PACKAGE;
+
+ /**
+ * The feature id for the '<em><b>Input</b></em>' containment reference list. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MODULE__INPUT = EcorePackage.EPACKAGE_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Extends</b></em>' reference list. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MODULE__EXTENDS = EcorePackage.EPACKAGE_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Imports</b></em>' reference list. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MODULE__IMPORTS = EcorePackage.EPACKAGE_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Owned Module Element</b></em>' containment reference list. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MODULE__OWNED_MODULE_ELEMENT = EcorePackage.EPACKAGE_FEATURE_COUNT + 3;
+
+ /**
+ * The number of structural features of the '<em>Module</em>' class. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MODULE_FEATURE_COUNT = EcorePackage.EPACKAGE_FEATURE_COUNT + 4;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.acceleo.model.mtl.impl.ModuleElementImpl <em>Module Element</em>}'
+ * class. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.model.mtl.impl.ModuleElementImpl
+ * @see org.eclipse.acceleo.model.mtl.impl.MtlPackageImpl#getModuleElement()
+ * @generated
+ */
+ int MODULE_ELEMENT = 1;
+
+ /**
+ * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MODULE_ELEMENT__EANNOTATIONS = EcorePackage.ENAMED_ELEMENT__EANNOTATIONS;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MODULE_ELEMENT__NAME = EcorePackage.ENAMED_ELEMENT__NAME;
+
+ /**
+ * The feature id for the '<em><b>Start Position</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MODULE_ELEMENT__START_POSITION = EcorePackage.ENAMED_ELEMENT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>End Position</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MODULE_ELEMENT__END_POSITION = EcorePackage.ENAMED_ELEMENT_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Visibility</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MODULE_ELEMENT__VISIBILITY = EcorePackage.ENAMED_ELEMENT_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>Module Element</em>' class. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MODULE_ELEMENT_FEATURE_COUNT = EcorePackage.ENAMED_ELEMENT_FEATURE_COUNT + 3;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.acceleo.model.mtl.impl.TemplateExpressionImpl
+ * <em>Template Expression</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.model.mtl.impl.TemplateExpressionImpl
+ * @see org.eclipse.acceleo.model.mtl.impl.MtlPackageImpl#getTemplateExpression()
+ * @generated
+ */
+ int TEMPLATE_EXPRESSION = 2;
+
+ /**
+ * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TEMPLATE_EXPRESSION__EANNOTATIONS = org.eclipse.ocl.ecore.EcorePackage.OCL_EXPRESSION__EANNOTATIONS;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TEMPLATE_EXPRESSION__NAME = org.eclipse.ocl.ecore.EcorePackage.OCL_EXPRESSION__NAME;
+
+ /**
+ * The feature id for the '<em><b>Ordered</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TEMPLATE_EXPRESSION__ORDERED = org.eclipse.ocl.ecore.EcorePackage.OCL_EXPRESSION__ORDERED;
+
+ /**
+ * The feature id for the '<em><b>Unique</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TEMPLATE_EXPRESSION__UNIQUE = org.eclipse.ocl.ecore.EcorePackage.OCL_EXPRESSION__UNIQUE;
+
+ /**
+ * The feature id for the '<em><b>Lower Bound</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TEMPLATE_EXPRESSION__LOWER_BOUND = org.eclipse.ocl.ecore.EcorePackage.OCL_EXPRESSION__LOWER_BOUND;
+
+ /**
+ * The feature id for the '<em><b>Upper Bound</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TEMPLATE_EXPRESSION__UPPER_BOUND = org.eclipse.ocl.ecore.EcorePackage.OCL_EXPRESSION__UPPER_BOUND;
+
+ /**
+ * The feature id for the '<em><b>Many</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TEMPLATE_EXPRESSION__MANY = org.eclipse.ocl.ecore.EcorePackage.OCL_EXPRESSION__MANY;
+
+ /**
+ * The feature id for the '<em><b>Required</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TEMPLATE_EXPRESSION__REQUIRED = org.eclipse.ocl.ecore.EcorePackage.OCL_EXPRESSION__REQUIRED;
+
+ /**
+ * The feature id for the '<em><b>EType</b></em>' reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TEMPLATE_EXPRESSION__ETYPE = org.eclipse.ocl.ecore.EcorePackage.OCL_EXPRESSION__ETYPE;
+
+ /**
+ * The feature id for the '<em><b>EGeneric Type</b></em>' containment reference. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TEMPLATE_EXPRESSION__EGENERIC_TYPE = org.eclipse.ocl.ecore.EcorePackage.OCL_EXPRESSION__EGENERIC_TYPE;
+
+ /**
+ * The feature id for the '<em><b>Start Position</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TEMPLATE_EXPRESSION__START_POSITION = org.eclipse.ocl.ecore.EcorePackage.OCL_EXPRESSION__START_POSITION;
+
+ /**
+ * The feature id for the '<em><b>End Position</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TEMPLATE_EXPRESSION__END_POSITION = org.eclipse.ocl.ecore.EcorePackage.OCL_EXPRESSION__END_POSITION;
+
+ /**
+ * The number of structural features of the '<em>Template Expression</em>' class. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TEMPLATE_EXPRESSION_FEATURE_COUNT = org.eclipse.ocl.ecore.EcorePackage.OCL_EXPRESSION_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.acceleo.model.mtl.impl.BlockImpl <em>Block</em>}' class. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.model.mtl.impl.BlockImpl
+ * @see org.eclipse.acceleo.model.mtl.impl.MtlPackageImpl#getBlock()
+ * @generated
+ */
+ int BLOCK = 3;
+
+ /**
+ * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int BLOCK__EANNOTATIONS = TEMPLATE_EXPRESSION__EANNOTATIONS;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int BLOCK__NAME = TEMPLATE_EXPRESSION__NAME;
+
+ /**
+ * The feature id for the '<em><b>Ordered</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @generated
+ * @ordered
+ */
+ int BLOCK__ORDERED = TEMPLATE_EXPRESSION__ORDERED;
+
+ /**
+ * The feature id for the '<em><b>Unique</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @generated
+ * @ordered
+ */
+ int BLOCK__UNIQUE = TEMPLATE_EXPRESSION__UNIQUE;
+
+ /**
+ * The feature id for the '<em><b>Lower Bound</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int BLOCK__LOWER_BOUND = TEMPLATE_EXPRESSION__LOWER_BOUND;
+
+ /**
+ * The feature id for the '<em><b>Upper Bound</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int BLOCK__UPPER_BOUND = TEMPLATE_EXPRESSION__UPPER_BOUND;
+
+ /**
+ * The feature id for the '<em><b>Many</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int BLOCK__MANY = TEMPLATE_EXPRESSION__MANY;
+
+ /**
+ * The feature id for the '<em><b>Required</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @generated
+ * @ordered
+ */
+ int BLOCK__REQUIRED = TEMPLATE_EXPRESSION__REQUIRED;
+
+ /**
+ * The feature id for the '<em><b>EType</b></em>' reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int BLOCK__ETYPE = TEMPLATE_EXPRESSION__ETYPE;
+
+ /**
+ * The feature id for the '<em><b>EGeneric Type</b></em>' containment reference. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int BLOCK__EGENERIC_TYPE = TEMPLATE_EXPRESSION__EGENERIC_TYPE;
+
+ /**
+ * The feature id for the '<em><b>Start Position</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int BLOCK__START_POSITION = TEMPLATE_EXPRESSION__START_POSITION;
+
+ /**
+ * The feature id for the '<em><b>End Position</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int BLOCK__END_POSITION = TEMPLATE_EXPRESSION__END_POSITION;
+
+ /**
+ * The feature id for the '<em><b>Init</b></em>' containment reference. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int BLOCK__INIT = TEMPLATE_EXPRESSION_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Body</b></em>' containment reference list. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int BLOCK__BODY = TEMPLATE_EXPRESSION_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Block</em>' class. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int BLOCK_FEATURE_COUNT = TEMPLATE_EXPRESSION_FEATURE_COUNT + 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.acceleo.model.mtl.impl.InitSectionImpl <em>Init Section</em>}' class.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.model.mtl.impl.InitSectionImpl
+ * @see org.eclipse.acceleo.model.mtl.impl.MtlPackageImpl#getInitSection()
+ * @generated
+ */
+ int INIT_SECTION = 4;
+
+ /**
+ * The feature id for the '<em><b>Start Position</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int INIT_SECTION__START_POSITION = UtilitiesPackage.AST_NODE__START_POSITION;
+
+ /**
+ * The feature id for the '<em><b>End Position</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int INIT_SECTION__END_POSITION = UtilitiesPackage.AST_NODE__END_POSITION;
+
+ /**
+ * The feature id for the '<em><b>Variable</b></em>' containment reference list. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int INIT_SECTION__VARIABLE = UtilitiesPackage.AST_NODE_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Init Section</em>' class. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int INIT_SECTION_FEATURE_COUNT = UtilitiesPackage.AST_NODE_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.acceleo.model.mtl.impl.TemplateImpl <em>Template</em>}' class. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.model.mtl.impl.TemplateImpl
+ * @see org.eclipse.acceleo.model.mtl.impl.MtlPackageImpl#getTemplate()
+ * @generated
+ */
+ int TEMPLATE = 5;
+
+ /**
+ * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TEMPLATE__EANNOTATIONS = BLOCK__EANNOTATIONS;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TEMPLATE__NAME = BLOCK__NAME;
+
+ /**
+ * The feature id for the '<em><b>Ordered</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TEMPLATE__ORDERED = BLOCK__ORDERED;
+
+ /**
+ * The feature id for the '<em><b>Unique</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TEMPLATE__UNIQUE = BLOCK__UNIQUE;
+
+ /**
+ * The feature id for the '<em><b>Lower Bound</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TEMPLATE__LOWER_BOUND = BLOCK__LOWER_BOUND;
+
+ /**
+ * The feature id for the '<em><b>Upper Bound</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TEMPLATE__UPPER_BOUND = BLOCK__UPPER_BOUND;
+
+ /**
+ * The feature id for the '<em><b>Many</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TEMPLATE__MANY = BLOCK__MANY;
+
+ /**
+ * The feature id for the '<em><b>Required</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TEMPLATE__REQUIRED = BLOCK__REQUIRED;
+
+ /**
+ * The feature id for the '<em><b>EType</b></em>' reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TEMPLATE__ETYPE = BLOCK__ETYPE;
+
+ /**
+ * The feature id for the '<em><b>EGeneric Type</b></em>' containment reference. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TEMPLATE__EGENERIC_TYPE = BLOCK__EGENERIC_TYPE;
+
+ /**
+ * The feature id for the '<em><b>Start Position</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TEMPLATE__START_POSITION = BLOCK__START_POSITION;
+
+ /**
+ * The feature id for the '<em><b>End Position</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TEMPLATE__END_POSITION = BLOCK__END_POSITION;
+
+ /**
+ * The feature id for the '<em><b>Init</b></em>' containment reference. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TEMPLATE__INIT = BLOCK__INIT;
+
+ /**
+ * The feature id for the '<em><b>Body</b></em>' containment reference list. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TEMPLATE__BODY = BLOCK__BODY;
+
+ /**
+ * The feature id for the '<em><b>Visibility</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TEMPLATE__VISIBILITY = BLOCK_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Overrides</b></em>' reference list. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TEMPLATE__OVERRIDES = BLOCK_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Parameter</b></em>' containment reference list. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TEMPLATE__PARAMETER = BLOCK_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Guard</b></em>' containment reference. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TEMPLATE__GUARD = BLOCK_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Main</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TEMPLATE__MAIN = BLOCK_FEATURE_COUNT + 4;
+
+ /**
+ * The number of structural features of the '<em>Template</em>' class. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TEMPLATE_FEATURE_COUNT = BLOCK_FEATURE_COUNT + 5;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.acceleo.model.mtl.impl.TemplateInvocationImpl
+ * <em>Template Invocation</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.model.mtl.impl.TemplateInvocationImpl
+ * @see org.eclipse.acceleo.model.mtl.impl.MtlPackageImpl#getTemplateInvocation()
+ * @generated
+ */
+ int TEMPLATE_INVOCATION = 6;
+
+ /**
+ * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TEMPLATE_INVOCATION__EANNOTATIONS = TEMPLATE_EXPRESSION__EANNOTATIONS;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TEMPLATE_INVOCATION__NAME = TEMPLATE_EXPRESSION__NAME;
+
+ /**
+ * The feature id for the '<em><b>Ordered</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TEMPLATE_INVOCATION__ORDERED = TEMPLATE_EXPRESSION__ORDERED;
+
+ /**
+ * The feature id for the '<em><b>Unique</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TEMPLATE_INVOCATION__UNIQUE = TEMPLATE_EXPRESSION__UNIQUE;
+
+ /**
+ * The feature id for the '<em><b>Lower Bound</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TEMPLATE_INVOCATION__LOWER_BOUND = TEMPLATE_EXPRESSION__LOWER_BOUND;
+
+ /**
+ * The feature id for the '<em><b>Upper Bound</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TEMPLATE_INVOCATION__UPPER_BOUND = TEMPLATE_EXPRESSION__UPPER_BOUND;
+
+ /**
+ * The feature id for the '<em><b>Many</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TEMPLATE_INVOCATION__MANY = TEMPLATE_EXPRESSION__MANY;
+
+ /**
+ * The feature id for the '<em><b>Required</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TEMPLATE_INVOCATION__REQUIRED = TEMPLATE_EXPRESSION__REQUIRED;
+
+ /**
+ * The feature id for the '<em><b>EType</b></em>' reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TEMPLATE_INVOCATION__ETYPE = TEMPLATE_EXPRESSION__ETYPE;
+
+ /**
+ * The feature id for the '<em><b>EGeneric Type</b></em>' containment reference. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TEMPLATE_INVOCATION__EGENERIC_TYPE = TEMPLATE_EXPRESSION__EGENERIC_TYPE;
+
+ /**
+ * The feature id for the '<em><b>Start Position</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TEMPLATE_INVOCATION__START_POSITION = TEMPLATE_EXPRESSION__START_POSITION;
+
+ /**
+ * The feature id for the '<em><b>End Position</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TEMPLATE_INVOCATION__END_POSITION = TEMPLATE_EXPRESSION__END_POSITION;
+
+ /**
+ * The feature id for the '<em><b>Definition</b></em>' reference. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TEMPLATE_INVOCATION__DEFINITION = TEMPLATE_EXPRESSION_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Argument</b></em>' containment reference list. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TEMPLATE_INVOCATION__ARGUMENT = TEMPLATE_EXPRESSION_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Before</b></em>' containment reference. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TEMPLATE_INVOCATION__BEFORE = TEMPLATE_EXPRESSION_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>After</b></em>' containment reference. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TEMPLATE_INVOCATION__AFTER = TEMPLATE_EXPRESSION_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Each</b></em>' containment reference. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TEMPLATE_INVOCATION__EACH = TEMPLATE_EXPRESSION_FEATURE_COUNT + 4;
+
+ /**
+ * The feature id for the '<em><b>Super</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TEMPLATE_INVOCATION__SUPER = TEMPLATE_EXPRESSION_FEATURE_COUNT + 5;
+
+ /**
+ * The number of structural features of the '<em>Template Invocation</em>' class. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TEMPLATE_INVOCATION_FEATURE_COUNT = TEMPLATE_EXPRESSION_FEATURE_COUNT + 6;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.acceleo.model.mtl.impl.QueryImpl <em>Query</em>}' class. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.model.mtl.impl.QueryImpl
+ * @see org.eclipse.acceleo.model.mtl.impl.MtlPackageImpl#getQuery()
+ * @generated
+ */
+ int QUERY = 7;
+
+ /**
+ * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int QUERY__EANNOTATIONS = MODULE_ELEMENT__EANNOTATIONS;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int QUERY__NAME = MODULE_ELEMENT__NAME;
+
+ /**
+ * The feature id for the '<em><b>Start Position</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int QUERY__START_POSITION = MODULE_ELEMENT__START_POSITION;
+
+ /**
+ * The feature id for the '<em><b>End Position</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int QUERY__END_POSITION = MODULE_ELEMENT__END_POSITION;
+
+ /**
+ * The feature id for the '<em><b>Visibility</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int QUERY__VISIBILITY = MODULE_ELEMENT__VISIBILITY;
+
+ /**
+ * The feature id for the '<em><b>Parameter</b></em>' containment reference list. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int QUERY__PARAMETER = MODULE_ELEMENT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Expression</b></em>' containment reference. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int QUERY__EXPRESSION = MODULE_ELEMENT_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Type</b></em>' reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int QUERY__TYPE = MODULE_ELEMENT_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>Query</em>' class. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int QUERY_FEATURE_COUNT = MODULE_ELEMENT_FEATURE_COUNT + 3;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.acceleo.model.mtl.impl.QueryInvocationImpl <em>Query Invocation</em>}'
+ * class. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.model.mtl.impl.QueryInvocationImpl
+ * @see org.eclipse.acceleo.model.mtl.impl.MtlPackageImpl#getQueryInvocation()
+ * @generated
+ */
+ int QUERY_INVOCATION = 8;
+
+ /**
+ * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int QUERY_INVOCATION__EANNOTATIONS = TEMPLATE_EXPRESSION__EANNOTATIONS;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int QUERY_INVOCATION__NAME = TEMPLATE_EXPRESSION__NAME;
+
+ /**
+ * The feature id for the '<em><b>Ordered</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @generated
+ * @ordered
+ */
+ int QUERY_INVOCATION__ORDERED = TEMPLATE_EXPRESSION__ORDERED;
+
+ /**
+ * The feature id for the '<em><b>Unique</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @generated
+ * @ordered
+ */
+ int QUERY_INVOCATION__UNIQUE = TEMPLATE_EXPRESSION__UNIQUE;
+
+ /**
+ * The feature id for the '<em><b>Lower Bound</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int QUERY_INVOCATION__LOWER_BOUND = TEMPLATE_EXPRESSION__LOWER_BOUND;
+
+ /**
+ * The feature id for the '<em><b>Upper Bound</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int QUERY_INVOCATION__UPPER_BOUND = TEMPLATE_EXPRESSION__UPPER_BOUND;
+
+ /**
+ * The feature id for the '<em><b>Many</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int QUERY_INVOCATION__MANY = TEMPLATE_EXPRESSION__MANY;
+
+ /**
+ * The feature id for the '<em><b>Required</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @generated
+ * @ordered
+ */
+ int QUERY_INVOCATION__REQUIRED = TEMPLATE_EXPRESSION__REQUIRED;
+
+ /**
+ * The feature id for the '<em><b>EType</b></em>' reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int QUERY_INVOCATION__ETYPE = TEMPLATE_EXPRESSION__ETYPE;
+
+ /**
+ * The feature id for the '<em><b>EGeneric Type</b></em>' containment reference. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int QUERY_INVOCATION__EGENERIC_TYPE = TEMPLATE_EXPRESSION__EGENERIC_TYPE;
+
+ /**
+ * The feature id for the '<em><b>Start Position</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int QUERY_INVOCATION__START_POSITION = TEMPLATE_EXPRESSION__START_POSITION;
+
+ /**
+ * The feature id for the '<em><b>End Position</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int QUERY_INVOCATION__END_POSITION = TEMPLATE_EXPRESSION__END_POSITION;
+
+ /**
+ * The feature id for the '<em><b>Definition</b></em>' reference. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int QUERY_INVOCATION__DEFINITION = TEMPLATE_EXPRESSION_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Argument</b></em>' containment reference list. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int QUERY_INVOCATION__ARGUMENT = TEMPLATE_EXPRESSION_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Query Invocation</em>' class. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int QUERY_INVOCATION_FEATURE_COUNT = TEMPLATE_EXPRESSION_FEATURE_COUNT + 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.acceleo.model.mtl.impl.ProtectedAreaBlockImpl
+ * <em>Protected Area Block</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.model.mtl.impl.ProtectedAreaBlockImpl
+ * @see org.eclipse.acceleo.model.mtl.impl.MtlPackageImpl#getProtectedAreaBlock()
+ * @generated
+ */
+ int PROTECTED_AREA_BLOCK = 9;
+
+ /**
+ * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int PROTECTED_AREA_BLOCK__EANNOTATIONS = BLOCK__EANNOTATIONS;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int PROTECTED_AREA_BLOCK__NAME = BLOCK__NAME;
+
+ /**
+ * The feature id for the '<em><b>Ordered</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @generated
+ * @ordered
+ */
+ int PROTECTED_AREA_BLOCK__ORDERED = BLOCK__ORDERED;
+
+ /**
+ * The feature id for the '<em><b>Unique</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @generated
+ * @ordered
+ */
+ int PROTECTED_AREA_BLOCK__UNIQUE = BLOCK__UNIQUE;
+
+ /**
+ * The feature id for the '<em><b>Lower Bound</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int PROTECTED_AREA_BLOCK__LOWER_BOUND = BLOCK__LOWER_BOUND;
+
+ /**
+ * The feature id for the '<em><b>Upper Bound</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int PROTECTED_AREA_BLOCK__UPPER_BOUND = BLOCK__UPPER_BOUND;
+
+ /**
+ * The feature id for the '<em><b>Many</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int PROTECTED_AREA_BLOCK__MANY = BLOCK__MANY;
+
+ /**
+ * The feature id for the '<em><b>Required</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @generated
+ * @ordered
+ */
+ int PROTECTED_AREA_BLOCK__REQUIRED = BLOCK__REQUIRED;
+
+ /**
+ * The feature id for the '<em><b>EType</b></em>' reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int PROTECTED_AREA_BLOCK__ETYPE = BLOCK__ETYPE;
+
+ /**
+ * The feature id for the '<em><b>EGeneric Type</b></em>' containment reference. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int PROTECTED_AREA_BLOCK__EGENERIC_TYPE = BLOCK__EGENERIC_TYPE;
+
+ /**
+ * The feature id for the '<em><b>Start Position</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int PROTECTED_AREA_BLOCK__START_POSITION = BLOCK__START_POSITION;
+
+ /**
+ * The feature id for the '<em><b>End Position</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int PROTECTED_AREA_BLOCK__END_POSITION = BLOCK__END_POSITION;
+
+ /**
+ * The feature id for the '<em><b>Init</b></em>' containment reference. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int PROTECTED_AREA_BLOCK__INIT = BLOCK__INIT;
+
+ /**
+ * The feature id for the '<em><b>Body</b></em>' containment reference list. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int PROTECTED_AREA_BLOCK__BODY = BLOCK__BODY;
+
+ /**
+ * The feature id for the '<em><b>Marker</b></em>' containment reference. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int PROTECTED_AREA_BLOCK__MARKER = BLOCK_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Protected Area Block</em>' class. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int PROTECTED_AREA_BLOCK_FEATURE_COUNT = BLOCK_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.acceleo.model.mtl.impl.ForBlockImpl <em>For Block</em>}' class. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.model.mtl.impl.ForBlockImpl
+ * @see org.eclipse.acceleo.model.mtl.impl.MtlPackageImpl#getForBlock()
+ * @generated
+ */
+ int FOR_BLOCK = 10;
+
+ /**
+ * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FOR_BLOCK__EANNOTATIONS = BLOCK__EANNOTATIONS;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FOR_BLOCK__NAME = BLOCK__NAME;
+
+ /**
+ * The feature id for the '<em><b>Ordered</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FOR_BLOCK__ORDERED = BLOCK__ORDERED;
+
+ /**
+ * The feature id for the '<em><b>Unique</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FOR_BLOCK__UNIQUE = BLOCK__UNIQUE;
+
+ /**
+ * The feature id for the '<em><b>Lower Bound</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FOR_BLOCK__LOWER_BOUND = BLOCK__LOWER_BOUND;
+
+ /**
+ * The feature id for the '<em><b>Upper Bound</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FOR_BLOCK__UPPER_BOUND = BLOCK__UPPER_BOUND;
+
+ /**
+ * The feature id for the '<em><b>Many</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FOR_BLOCK__MANY = BLOCK__MANY;
+
+ /**
+ * The feature id for the '<em><b>Required</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FOR_BLOCK__REQUIRED = BLOCK__REQUIRED;
+
+ /**
+ * The feature id for the '<em><b>EType</b></em>' reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FOR_BLOCK__ETYPE = BLOCK__ETYPE;
+
+ /**
+ * The feature id for the '<em><b>EGeneric Type</b></em>' containment reference. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FOR_BLOCK__EGENERIC_TYPE = BLOCK__EGENERIC_TYPE;
+
+ /**
+ * The feature id for the '<em><b>Start Position</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FOR_BLOCK__START_POSITION = BLOCK__START_POSITION;
+
+ /**
+ * The feature id for the '<em><b>End Position</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FOR_BLOCK__END_POSITION = BLOCK__END_POSITION;
+
+ /**
+ * The feature id for the '<em><b>Init</b></em>' containment reference. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FOR_BLOCK__INIT = BLOCK__INIT;
+
+ /**
+ * The feature id for the '<em><b>Body</b></em>' containment reference list. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FOR_BLOCK__BODY = BLOCK__BODY;
+
+ /**
+ * The feature id for the '<em><b>Loop Variable</b></em>' containment reference. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FOR_BLOCK__LOOP_VARIABLE = BLOCK_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Iter Set</b></em>' containment reference. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FOR_BLOCK__ITER_SET = BLOCK_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Before</b></em>' containment reference. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FOR_BLOCK__BEFORE = BLOCK_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Each</b></em>' containment reference. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FOR_BLOCK__EACH = BLOCK_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>After</b></em>' containment reference. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FOR_BLOCK__AFTER = BLOCK_FEATURE_COUNT + 4;
+
+ /**
+ * The feature id for the '<em><b>Guard</b></em>' containment reference. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FOR_BLOCK__GUARD = BLOCK_FEATURE_COUNT + 5;
+
+ /**
+ * The number of structural features of the '<em>For Block</em>' class. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FOR_BLOCK_FEATURE_COUNT = BLOCK_FEATURE_COUNT + 6;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.acceleo.model.mtl.impl.IfBlockImpl <em>If Block</em>}' class. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.model.mtl.impl.IfBlockImpl
+ * @see org.eclipse.acceleo.model.mtl.impl.MtlPackageImpl#getIfBlock()
+ * @generated
+ */
+ int IF_BLOCK = 11;
+
+ /**
+ * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int IF_BLOCK__EANNOTATIONS = BLOCK__EANNOTATIONS;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int IF_BLOCK__NAME = BLOCK__NAME;
+
+ /**
+ * The feature id for the '<em><b>Ordered</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @generated
+ * @ordered
+ */
+ int IF_BLOCK__ORDERED = BLOCK__ORDERED;
+
+ /**
+ * The feature id for the '<em><b>Unique</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @generated
+ * @ordered
+ */
+ int IF_BLOCK__UNIQUE = BLOCK__UNIQUE;
+
+ /**
+ * The feature id for the '<em><b>Lower Bound</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int IF_BLOCK__LOWER_BOUND = BLOCK__LOWER_BOUND;
+
+ /**
+ * The feature id for the '<em><b>Upper Bound</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int IF_BLOCK__UPPER_BOUND = BLOCK__UPPER_BOUND;
+
+ /**
+ * The feature id for the '<em><b>Many</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int IF_BLOCK__MANY = BLOCK__MANY;
+
+ /**
+ * The feature id for the '<em><b>Required</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @generated
+ * @ordered
+ */
+ int IF_BLOCK__REQUIRED = BLOCK__REQUIRED;
+
+ /**
+ * The feature id for the '<em><b>EType</b></em>' reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int IF_BLOCK__ETYPE = BLOCK__ETYPE;
+
+ /**
+ * The feature id for the '<em><b>EGeneric Type</b></em>' containment reference. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int IF_BLOCK__EGENERIC_TYPE = BLOCK__EGENERIC_TYPE;
+
+ /**
+ * The feature id for the '<em><b>Start Position</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int IF_BLOCK__START_POSITION = BLOCK__START_POSITION;
+
+ /**
+ * The feature id for the '<em><b>End Position</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int IF_BLOCK__END_POSITION = BLOCK__END_POSITION;
+
+ /**
+ * The feature id for the '<em><b>Init</b></em>' containment reference. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int IF_BLOCK__INIT = BLOCK__INIT;
+
+ /**
+ * The feature id for the '<em><b>Body</b></em>' containment reference list. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int IF_BLOCK__BODY = BLOCK__BODY;
+
+ /**
+ * The feature id for the '<em><b>If Expr</b></em>' containment reference. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int IF_BLOCK__IF_EXPR = BLOCK_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Else</b></em>' containment reference. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int IF_BLOCK__ELSE = BLOCK_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Else If</b></em>' containment reference list. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int IF_BLOCK__ELSE_IF = BLOCK_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>If Block</em>' class. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int IF_BLOCK_FEATURE_COUNT = BLOCK_FEATURE_COUNT + 3;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.acceleo.model.mtl.impl.LetBlockImpl <em>Let Block</em>}' class. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.model.mtl.impl.LetBlockImpl
+ * @see org.eclipse.acceleo.model.mtl.impl.MtlPackageImpl#getLetBlock()
+ * @generated
+ */
+ int LET_BLOCK = 12;
+
+ /**
+ * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LET_BLOCK__EANNOTATIONS = BLOCK__EANNOTATIONS;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LET_BLOCK__NAME = BLOCK__NAME;
+
+ /**
+ * The feature id for the '<em><b>Ordered</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LET_BLOCK__ORDERED = BLOCK__ORDERED;
+
+ /**
+ * The feature id for the '<em><b>Unique</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LET_BLOCK__UNIQUE = BLOCK__UNIQUE;
+
+ /**
+ * The feature id for the '<em><b>Lower Bound</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LET_BLOCK__LOWER_BOUND = BLOCK__LOWER_BOUND;
+
+ /**
+ * The feature id for the '<em><b>Upper Bound</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LET_BLOCK__UPPER_BOUND = BLOCK__UPPER_BOUND;
+
+ /**
+ * The feature id for the '<em><b>Many</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LET_BLOCK__MANY = BLOCK__MANY;
+
+ /**
+ * The feature id for the '<em><b>Required</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LET_BLOCK__REQUIRED = BLOCK__REQUIRED;
+
+ /**
+ * The feature id for the '<em><b>EType</b></em>' reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LET_BLOCK__ETYPE = BLOCK__ETYPE;
+
+ /**
+ * The feature id for the '<em><b>EGeneric Type</b></em>' containment reference. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LET_BLOCK__EGENERIC_TYPE = BLOCK__EGENERIC_TYPE;
+
+ /**
+ * The feature id for the '<em><b>Start Position</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LET_BLOCK__START_POSITION = BLOCK__START_POSITION;
+
+ /**
+ * The feature id for the '<em><b>End Position</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LET_BLOCK__END_POSITION = BLOCK__END_POSITION;
+
+ /**
+ * The feature id for the '<em><b>Init</b></em>' containment reference. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LET_BLOCK__INIT = BLOCK__INIT;
+
+ /**
+ * The feature id for the '<em><b>Body</b></em>' containment reference list. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LET_BLOCK__BODY = BLOCK__BODY;
+
+ /**
+ * The feature id for the '<em><b>Else Let</b></em>' containment reference list. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LET_BLOCK__ELSE_LET = BLOCK_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Else</b></em>' containment reference. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LET_BLOCK__ELSE = BLOCK_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Let Variable</b></em>' containment reference. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LET_BLOCK__LET_VARIABLE = BLOCK_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>Let Block</em>' class. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LET_BLOCK_FEATURE_COUNT = BLOCK_FEATURE_COUNT + 3;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.acceleo.model.mtl.impl.FileBlockImpl <em>File Block</em>}' class. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.model.mtl.impl.FileBlockImpl
+ * @see org.eclipse.acceleo.model.mtl.impl.MtlPackageImpl#getFileBlock()
+ * @generated
+ */
+ int FILE_BLOCK = 13;
+
+ /**
+ * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FILE_BLOCK__EANNOTATIONS = BLOCK__EANNOTATIONS;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FILE_BLOCK__NAME = BLOCK__NAME;
+
+ /**
+ * The feature id for the '<em><b>Ordered</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FILE_BLOCK__ORDERED = BLOCK__ORDERED;
+
+ /**
+ * The feature id for the '<em><b>Unique</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FILE_BLOCK__UNIQUE = BLOCK__UNIQUE;
+
+ /**
+ * The feature id for the '<em><b>Lower Bound</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FILE_BLOCK__LOWER_BOUND = BLOCK__LOWER_BOUND;
+
+ /**
+ * The feature id for the '<em><b>Upper Bound</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FILE_BLOCK__UPPER_BOUND = BLOCK__UPPER_BOUND;
+
+ /**
+ * The feature id for the '<em><b>Many</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FILE_BLOCK__MANY = BLOCK__MANY;
+
+ /**
+ * The feature id for the '<em><b>Required</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FILE_BLOCK__REQUIRED = BLOCK__REQUIRED;
+
+ /**
+ * The feature id for the '<em><b>EType</b></em>' reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FILE_BLOCK__ETYPE = BLOCK__ETYPE;
+
+ /**
+ * The feature id for the '<em><b>EGeneric Type</b></em>' containment reference. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FILE_BLOCK__EGENERIC_TYPE = BLOCK__EGENERIC_TYPE;
+
+ /**
+ * The feature id for the '<em><b>Start Position</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FILE_BLOCK__START_POSITION = BLOCK__START_POSITION;
+
+ /**
+ * The feature id for the '<em><b>End Position</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FILE_BLOCK__END_POSITION = BLOCK__END_POSITION;
+
+ /**
+ * The feature id for the '<em><b>Init</b></em>' containment reference. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FILE_BLOCK__INIT = BLOCK__INIT;
+
+ /**
+ * The feature id for the '<em><b>Body</b></em>' containment reference list. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FILE_BLOCK__BODY = BLOCK__BODY;
+
+ /**
+ * The feature id for the '<em><b>Open Mode</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FILE_BLOCK__OPEN_MODE = BLOCK_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>File Url</b></em>' containment reference. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FILE_BLOCK__FILE_URL = BLOCK_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Uniq Id</b></em>' containment reference. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FILE_BLOCK__UNIQ_ID = BLOCK_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>File Block</em>' class. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FILE_BLOCK_FEATURE_COUNT = BLOCK_FEATURE_COUNT + 3;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.acceleo.model.mtl.impl.TraceBlockImpl <em>Trace Block</em>}' class.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.model.mtl.impl.TraceBlockImpl
+ * @see org.eclipse.acceleo.model.mtl.impl.MtlPackageImpl#getTraceBlock()
+ * @generated
+ */
+ int TRACE_BLOCK = 14;
+
+ /**
+ * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TRACE_BLOCK__EANNOTATIONS = BLOCK__EANNOTATIONS;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TRACE_BLOCK__NAME = BLOCK__NAME;
+
+ /**
+ * The feature id for the '<em><b>Ordered</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TRACE_BLOCK__ORDERED = BLOCK__ORDERED;
+
+ /**
+ * The feature id for the '<em><b>Unique</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TRACE_BLOCK__UNIQUE = BLOCK__UNIQUE;
+
+ /**
+ * The feature id for the '<em><b>Lower Bound</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TRACE_BLOCK__LOWER_BOUND = BLOCK__LOWER_BOUND;
+
+ /**
+ * The feature id for the '<em><b>Upper Bound</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TRACE_BLOCK__UPPER_BOUND = BLOCK__UPPER_BOUND;
+
+ /**
+ * The feature id for the '<em><b>Many</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TRACE_BLOCK__MANY = BLOCK__MANY;
+
+ /**
+ * The feature id for the '<em><b>Required</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TRACE_BLOCK__REQUIRED = BLOCK__REQUIRED;
+
+ /**
+ * The feature id for the '<em><b>EType</b></em>' reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TRACE_BLOCK__ETYPE = BLOCK__ETYPE;
+
+ /**
+ * The feature id for the '<em><b>EGeneric Type</b></em>' containment reference. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TRACE_BLOCK__EGENERIC_TYPE = BLOCK__EGENERIC_TYPE;
+
+ /**
+ * The feature id for the '<em><b>Start Position</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TRACE_BLOCK__START_POSITION = BLOCK__START_POSITION;
+
+ /**
+ * The feature id for the '<em><b>End Position</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TRACE_BLOCK__END_POSITION = BLOCK__END_POSITION;
+
+ /**
+ * The feature id for the '<em><b>Init</b></em>' containment reference. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TRACE_BLOCK__INIT = BLOCK__INIT;
+
+ /**
+ * The feature id for the '<em><b>Body</b></em>' containment reference list. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TRACE_BLOCK__BODY = BLOCK__BODY;
+
+ /**
+ * The feature id for the '<em><b>Model Element</b></em>' containment reference. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TRACE_BLOCK__MODEL_ELEMENT = BLOCK_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Trace Block</em>' class. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TRACE_BLOCK_FEATURE_COUNT = BLOCK_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.acceleo.model.mtl.impl.MacroImpl <em>Macro</em>}' class. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.model.mtl.impl.MacroImpl
+ * @see org.eclipse.acceleo.model.mtl.impl.MtlPackageImpl#getMacro()
+ * @generated
+ */
+ int MACRO = 15;
+
+ /**
+ * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MACRO__EANNOTATIONS = BLOCK__EANNOTATIONS;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MACRO__NAME = BLOCK__NAME;
+
+ /**
+ * The feature id for the '<em><b>Ordered</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MACRO__ORDERED = BLOCK__ORDERED;
+
+ /**
+ * The feature id for the '<em><b>Unique</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MACRO__UNIQUE = BLOCK__UNIQUE;
+
+ /**
+ * The feature id for the '<em><b>Lower Bound</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MACRO__LOWER_BOUND = BLOCK__LOWER_BOUND;
+
+ /**
+ * The feature id for the '<em><b>Upper Bound</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MACRO__UPPER_BOUND = BLOCK__UPPER_BOUND;
+
+ /**
+ * The feature id for the '<em><b>Many</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MACRO__MANY = BLOCK__MANY;
+
+ /**
+ * The feature id for the '<em><b>Required</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MACRO__REQUIRED = BLOCK__REQUIRED;
+
+ /**
+ * The feature id for the '<em><b>EType</b></em>' reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MACRO__ETYPE = BLOCK__ETYPE;
+
+ /**
+ * The feature id for the '<em><b>EGeneric Type</b></em>' containment reference. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MACRO__EGENERIC_TYPE = BLOCK__EGENERIC_TYPE;
+
+ /**
+ * The feature id for the '<em><b>Start Position</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MACRO__START_POSITION = BLOCK__START_POSITION;
+
+ /**
+ * The feature id for the '<em><b>End Position</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MACRO__END_POSITION = BLOCK__END_POSITION;
+
+ /**
+ * The feature id for the '<em><b>Init</b></em>' containment reference. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MACRO__INIT = BLOCK__INIT;
+
+ /**
+ * The feature id for the '<em><b>Body</b></em>' containment reference list. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MACRO__BODY = BLOCK__BODY;
+
+ /**
+ * The feature id for the '<em><b>Visibility</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MACRO__VISIBILITY = BLOCK_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Parameter</b></em>' containment reference list. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MACRO__PARAMETER = BLOCK_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Type</b></em>' reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MACRO__TYPE = BLOCK_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>Macro</em>' class. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MACRO_FEATURE_COUNT = BLOCK_FEATURE_COUNT + 3;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.acceleo.model.mtl.impl.MacroInvocationImpl <em>Macro Invocation</em>}'
+ * class. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.model.mtl.impl.MacroInvocationImpl
+ * @see org.eclipse.acceleo.model.mtl.impl.MtlPackageImpl#getMacroInvocation()
+ * @generated
+ */
+ int MACRO_INVOCATION = 16;
+
+ /**
+ * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MACRO_INVOCATION__EANNOTATIONS = TEMPLATE_EXPRESSION__EANNOTATIONS;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MACRO_INVOCATION__NAME = TEMPLATE_EXPRESSION__NAME;
+
+ /**
+ * The feature id for the '<em><b>Ordered</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MACRO_INVOCATION__ORDERED = TEMPLATE_EXPRESSION__ORDERED;
+
+ /**
+ * The feature id for the '<em><b>Unique</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MACRO_INVOCATION__UNIQUE = TEMPLATE_EXPRESSION__UNIQUE;
+
+ /**
+ * The feature id for the '<em><b>Lower Bound</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MACRO_INVOCATION__LOWER_BOUND = TEMPLATE_EXPRESSION__LOWER_BOUND;
+
+ /**
+ * The feature id for the '<em><b>Upper Bound</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MACRO_INVOCATION__UPPER_BOUND = TEMPLATE_EXPRESSION__UPPER_BOUND;
+
+ /**
+ * The feature id for the '<em><b>Many</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MACRO_INVOCATION__MANY = TEMPLATE_EXPRESSION__MANY;
+
+ /**
+ * The feature id for the '<em><b>Required</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MACRO_INVOCATION__REQUIRED = TEMPLATE_EXPRESSION__REQUIRED;
+
+ /**
+ * The feature id for the '<em><b>EType</b></em>' reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MACRO_INVOCATION__ETYPE = TEMPLATE_EXPRESSION__ETYPE;
+
+ /**
+ * The feature id for the '<em><b>EGeneric Type</b></em>' containment reference. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MACRO_INVOCATION__EGENERIC_TYPE = TEMPLATE_EXPRESSION__EGENERIC_TYPE;
+
+ /**
+ * The feature id for the '<em><b>Start Position</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MACRO_INVOCATION__START_POSITION = TEMPLATE_EXPRESSION__START_POSITION;
+
+ /**
+ * The feature id for the '<em><b>End Position</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MACRO_INVOCATION__END_POSITION = TEMPLATE_EXPRESSION__END_POSITION;
+
+ /**
+ * The feature id for the '<em><b>Definition</b></em>' reference. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MACRO_INVOCATION__DEFINITION = TEMPLATE_EXPRESSION_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Argument</b></em>' containment reference list. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MACRO_INVOCATION__ARGUMENT = TEMPLATE_EXPRESSION_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Macro Invocation</em>' class. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MACRO_INVOCATION_FEATURE_COUNT = TEMPLATE_EXPRESSION_FEATURE_COUNT + 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.acceleo.model.mtl.impl.TypedModelImpl <em>Typed Model</em>}' class.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.model.mtl.impl.TypedModelImpl
+ * @see org.eclipse.acceleo.model.mtl.impl.MtlPackageImpl#getTypedModel()
+ * @generated
+ */
+ int TYPED_MODEL = 17;
+
+ /**
+ * The feature id for the '<em><b>Takes Types From</b></em>' reference list. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TYPED_MODEL__TAKES_TYPES_FROM = 0;
+
+ /**
+ * The number of structural features of the '<em>Typed Model</em>' class. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TYPED_MODEL_FEATURE_COUNT = 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.acceleo.model.mtl.VisibilityKind <em>Visibility Kind</em>}' enum. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.model.mtl.VisibilityKind
+ * @see org.eclipse.acceleo.model.mtl.impl.MtlPackageImpl#getVisibilityKind()
+ * @generated
+ */
+ int VISIBILITY_KIND = 18;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.acceleo.model.mtl.OpenModeKind <em>Open Mode Kind</em>}' enum. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.model.mtl.OpenModeKind
+ * @see org.eclipse.acceleo.model.mtl.impl.MtlPackageImpl#getOpenModeKind()
+ * @generated
+ */
+ int OPEN_MODE_KIND = 19;
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.acceleo.model.mtl.Module <em>Module</em>}'. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @return the meta object for class '<em>Module</em>'.
+ * @see org.eclipse.acceleo.model.mtl.Module
+ * @generated
+ */
+ EClass getModule();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.acceleo.model.mtl.Module#getInput
+ * <em>Input</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the containment reference list '<em>Input</em>'.
+ * @see org.eclipse.acceleo.model.mtl.Module#getInput()
+ * @see #getModule()
+ * @generated
+ */
+ EReference getModule_Input();
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.acceleo.model.mtl.Module#getExtends
+ * <em>Extends</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the reference list '<em>Extends</em>'.
+ * @see org.eclipse.acceleo.model.mtl.Module#getExtends()
+ * @see #getModule()
+ * @generated
+ */
+ EReference getModule_Extends();
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.acceleo.model.mtl.Module#getImports
+ * <em>Imports</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the reference list '<em>Imports</em>'.
+ * @see org.eclipse.acceleo.model.mtl.Module#getImports()
+ * @see #getModule()
+ * @generated
+ */
+ EReference getModule_Imports();
+
+ /**
+ * Returns the meta object for the containment reference list '
+ * {@link org.eclipse.acceleo.model.mtl.Module#getOwnedModuleElement <em>Owned Module Element</em>}'. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the containment reference list '<em>Owned Module Element</em>'.
+ * @see org.eclipse.acceleo.model.mtl.Module#getOwnedModuleElement()
+ * @see #getModule()
+ * @generated
+ */
+ EReference getModule_OwnedModuleElement();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.acceleo.model.mtl.ModuleElement <em>Module Element</em>}'. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for class '<em>Module Element</em>'.
+ * @see org.eclipse.acceleo.model.mtl.ModuleElement
+ * @generated
+ */
+ EClass getModuleElement();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.acceleo.model.mtl.ModuleElement#getVisibility
+ * <em>Visibility</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the attribute '<em>Visibility</em>'.
+ * @see org.eclipse.acceleo.model.mtl.ModuleElement#getVisibility()
+ * @see #getModuleElement()
+ * @generated
+ */
+ EAttribute getModuleElement_Visibility();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.acceleo.model.mtl.TemplateExpression
+ * <em>Template Expression</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for class '<em>Template Expression</em>'.
+ * @see org.eclipse.acceleo.model.mtl.TemplateExpression
+ * @generated
+ */
+ EClass getTemplateExpression();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.acceleo.model.mtl.Block <em>Block</em>}'. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @return the meta object for class '<em>Block</em>'.
+ * @see org.eclipse.acceleo.model.mtl.Block
+ * @generated
+ */
+ EClass getBlock();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.acceleo.model.mtl.Block#getInit
+ * <em>Init</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the containment reference '<em>Init</em>'.
+ * @see org.eclipse.acceleo.model.mtl.Block#getInit()
+ * @see #getBlock()
+ * @generated
+ */
+ EReference getBlock_Init();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.acceleo.model.mtl.Block#getBody
+ * <em>Body</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the containment reference list '<em>Body</em>'.
+ * @see org.eclipse.acceleo.model.mtl.Block#getBody()
+ * @see #getBlock()
+ * @generated
+ */
+ EReference getBlock_Body();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.acceleo.model.mtl.InitSection <em>Init Section</em>}'. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for class '<em>Init Section</em>'.
+ * @see org.eclipse.acceleo.model.mtl.InitSection
+ * @generated
+ */
+ EClass getInitSection();
+
+ /**
+ * Returns the meta object for the containment reference list '
+ * {@link org.eclipse.acceleo.model.mtl.InitSection#getVariable <em>Variable</em>}'. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @return the meta object for the containment reference list '<em>Variable</em>'.
+ * @see org.eclipse.acceleo.model.mtl.InitSection#getVariable()
+ * @see #getInitSection()
+ * @generated
+ */
+ EReference getInitSection_Variable();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.acceleo.model.mtl.Template <em>Template</em>}'. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for class '<em>Template</em>'.
+ * @see org.eclipse.acceleo.model.mtl.Template
+ * @generated
+ */
+ EClass getTemplate();
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.acceleo.model.mtl.Template#getOverrides
+ * <em>Overrides</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the reference list '<em>Overrides</em>'.
+ * @see org.eclipse.acceleo.model.mtl.Template#getOverrides()
+ * @see #getTemplate()
+ * @generated
+ */
+ EReference getTemplate_Overrides();
+
+ /**
+ * Returns the meta object for the containment reference list '
+ * {@link org.eclipse.acceleo.model.mtl.Template#getParameter <em>Parameter</em>}'. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @return the meta object for the containment reference list '<em>Parameter</em>'.
+ * @see org.eclipse.acceleo.model.mtl.Template#getParameter()
+ * @see #getTemplate()
+ * @generated
+ */
+ EReference getTemplate_Parameter();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.acceleo.model.mtl.Template#getGuard
+ * <em>Guard</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the containment reference '<em>Guard</em>'.
+ * @see org.eclipse.acceleo.model.mtl.Template#getGuard()
+ * @see #getTemplate()
+ * @generated
+ */
+ EReference getTemplate_Guard();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.acceleo.model.mtl.Template#isMain <em>Main</em>}'. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the attribute '<em>Main</em>'.
+ * @see org.eclipse.acceleo.model.mtl.Template#isMain()
+ * @see #getTemplate()
+ * @generated
+ */
+ EAttribute getTemplate_Main();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.acceleo.model.mtl.TemplateInvocation
+ * <em>Template Invocation</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for class '<em>Template Invocation</em>'.
+ * @see org.eclipse.acceleo.model.mtl.TemplateInvocation
+ * @generated
+ */
+ EClass getTemplateInvocation();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.acceleo.model.mtl.TemplateInvocation#getDefinition
+ * <em>Definition</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the reference '<em>Definition</em>'.
+ * @see org.eclipse.acceleo.model.mtl.TemplateInvocation#getDefinition()
+ * @see #getTemplateInvocation()
+ * @generated
+ */
+ EReference getTemplateInvocation_Definition();
+
+ /**
+ * Returns the meta object for the containment reference list '
+ * {@link org.eclipse.acceleo.model.mtl.TemplateInvocation#getArgument <em>Argument</em>}'. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @return the meta object for the containment reference list '<em>Argument</em>'.
+ * @see org.eclipse.acceleo.model.mtl.TemplateInvocation#getArgument()
+ * @see #getTemplateInvocation()
+ * @generated
+ */
+ EReference getTemplateInvocation_Argument();
+
+ /**
+ * Returns the meta object for the containment reference '
+ * {@link org.eclipse.acceleo.model.mtl.TemplateInvocation#getBefore <em>Before</em>}'. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @return the meta object for the containment reference '<em>Before</em>'.
+ * @see org.eclipse.acceleo.model.mtl.TemplateInvocation#getBefore()
+ * @see #getTemplateInvocation()
+ * @generated
+ */
+ EReference getTemplateInvocation_Before();
+
+ /**
+ * Returns the meta object for the containment reference '
+ * {@link org.eclipse.acceleo.model.mtl.TemplateInvocation#getAfter <em>After</em>}'. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @return the meta object for the containment reference '<em>After</em>'.
+ * @see org.eclipse.acceleo.model.mtl.TemplateInvocation#getAfter()
+ * @see #getTemplateInvocation()
+ * @generated
+ */
+ EReference getTemplateInvocation_After();
+
+ /**
+ * Returns the meta object for the containment reference '
+ * {@link org.eclipse.acceleo.model.mtl.TemplateInvocation#getEach <em>Each</em>}'. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @return the meta object for the containment reference '<em>Each</em>'.
+ * @see org.eclipse.acceleo.model.mtl.TemplateInvocation#getEach()
+ * @see #getTemplateInvocation()
+ * @generated
+ */
+ EReference getTemplateInvocation_Each();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.acceleo.model.mtl.TemplateInvocation#isSuper
+ * <em>Super</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the attribute '<em>Super</em>'.
+ * @see org.eclipse.acceleo.model.mtl.TemplateInvocation#isSuper()
+ * @see #getTemplateInvocation()
+ * @generated
+ */
+ EAttribute getTemplateInvocation_Super();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.acceleo.model.mtl.Query <em>Query</em>}'. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @return the meta object for class '<em>Query</em>'.
+ * @see org.eclipse.acceleo.model.mtl.Query
+ * @generated
+ */
+ EClass getQuery();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.acceleo.model.mtl.Query#getParameter
+ * <em>Parameter</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the containment reference list '<em>Parameter</em>'.
+ * @see org.eclipse.acceleo.model.mtl.Query#getParameter()
+ * @see #getQuery()
+ * @generated
+ */
+ EReference getQuery_Parameter();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.acceleo.model.mtl.Query#getExpression
+ * <em>Expression</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the containment reference '<em>Expression</em>'.
+ * @see org.eclipse.acceleo.model.mtl.Query#getExpression()
+ * @see #getQuery()
+ * @generated
+ */
+ EReference getQuery_Expression();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.acceleo.model.mtl.Query#getType <em>Type</em>}'. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the reference '<em>Type</em>'.
+ * @see org.eclipse.acceleo.model.mtl.Query#getType()
+ * @see #getQuery()
+ * @generated
+ */
+ EReference getQuery_Type();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.acceleo.model.mtl.QueryInvocation <em>Query Invocation</em>}'.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for class '<em>Query Invocation</em>'.
+ * @see org.eclipse.acceleo.model.mtl.QueryInvocation
+ * @generated
+ */
+ EClass getQueryInvocation();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.acceleo.model.mtl.QueryInvocation#getDefinition
+ * <em>Definition</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the reference '<em>Definition</em>'.
+ * @see org.eclipse.acceleo.model.mtl.QueryInvocation#getDefinition()
+ * @see #getQueryInvocation()
+ * @generated
+ */
+ EReference getQueryInvocation_Definition();
+
+ /**
+ * Returns the meta object for the containment reference list '
+ * {@link org.eclipse.acceleo.model.mtl.QueryInvocation#getArgument <em>Argument</em>}'. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @return the meta object for the containment reference list '<em>Argument</em>'.
+ * @see org.eclipse.acceleo.model.mtl.QueryInvocation#getArgument()
+ * @see #getQueryInvocation()
+ * @generated
+ */
+ EReference getQueryInvocation_Argument();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.acceleo.model.mtl.ProtectedAreaBlock
+ * <em>Protected Area Block</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for class '<em>Protected Area Block</em>'.
+ * @see org.eclipse.acceleo.model.mtl.ProtectedAreaBlock
+ * @generated
+ */
+ EClass getProtectedAreaBlock();
+
+ /**
+ * Returns the meta object for the containment reference '
+ * {@link org.eclipse.acceleo.model.mtl.ProtectedAreaBlock#getMarker <em>Marker</em>}'. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @return the meta object for the containment reference '<em>Marker</em>'.
+ * @see org.eclipse.acceleo.model.mtl.ProtectedAreaBlock#getMarker()
+ * @see #getProtectedAreaBlock()
+ * @generated
+ */
+ EReference getProtectedAreaBlock_Marker();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.acceleo.model.mtl.ForBlock <em>For Block</em>}'. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for class '<em>For Block</em>'.
+ * @see org.eclipse.acceleo.model.mtl.ForBlock
+ * @generated
+ */
+ EClass getForBlock();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.acceleo.model.mtl.ForBlock#getLoopVariable
+ * <em>Loop Variable</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the containment reference '<em>Loop Variable</em>'.
+ * @see org.eclipse.acceleo.model.mtl.ForBlock#getLoopVariable()
+ * @see #getForBlock()
+ * @generated
+ */
+ EReference getForBlock_LoopVariable();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.acceleo.model.mtl.ForBlock#getIterSet
+ * <em>Iter Set</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the containment reference '<em>Iter Set</em>'.
+ * @see org.eclipse.acceleo.model.mtl.ForBlock#getIterSet()
+ * @see #getForBlock()
+ * @generated
+ */
+ EReference getForBlock_IterSet();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.acceleo.model.mtl.ForBlock#getBefore
+ * <em>Before</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the containment reference '<em>Before</em>'.
+ * @see org.eclipse.acceleo.model.mtl.ForBlock#getBefore()
+ * @see #getForBlock()
+ * @generated
+ */
+ EReference getForBlock_Before();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.acceleo.model.mtl.ForBlock#getEach
+ * <em>Each</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the containment reference '<em>Each</em>'.
+ * @see org.eclipse.acceleo.model.mtl.ForBlock#getEach()
+ * @see #getForBlock()
+ * @generated
+ */
+ EReference getForBlock_Each();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.acceleo.model.mtl.ForBlock#getAfter
+ * <em>After</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the containment reference '<em>After</em>'.
+ * @see org.eclipse.acceleo.model.mtl.ForBlock#getAfter()
+ * @see #getForBlock()
+ * @generated
+ */
+ EReference getForBlock_After();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.acceleo.model.mtl.ForBlock#getGuard
+ * <em>Guard</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the containment reference '<em>Guard</em>'.
+ * @see org.eclipse.acceleo.model.mtl.ForBlock#getGuard()
+ * @see #getForBlock()
+ * @generated
+ */
+ EReference getForBlock_Guard();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.acceleo.model.mtl.IfBlock <em>If Block</em>}'. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for class '<em>If Block</em>'.
+ * @see org.eclipse.acceleo.model.mtl.IfBlock
+ * @generated
+ */
+ EClass getIfBlock();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.acceleo.model.mtl.IfBlock#getIfExpr
+ * <em>If Expr</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the containment reference '<em>If Expr</em>'.
+ * @see org.eclipse.acceleo.model.mtl.IfBlock#getIfExpr()
+ * @see #getIfBlock()
+ * @generated
+ */
+ EReference getIfBlock_IfExpr();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.acceleo.model.mtl.IfBlock#getElse
+ * <em>Else</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the containment reference '<em>Else</em>'.
+ * @see org.eclipse.acceleo.model.mtl.IfBlock#getElse()
+ * @see #getIfBlock()
+ * @generated
+ */
+ EReference getIfBlock_Else();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.acceleo.model.mtl.IfBlock#getElseIf
+ * <em>Else If</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the containment reference list '<em>Else If</em>'.
+ * @see org.eclipse.acceleo.model.mtl.IfBlock#getElseIf()
+ * @see #getIfBlock()
+ * @generated
+ */
+ EReference getIfBlock_ElseIf();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.acceleo.model.mtl.LetBlock <em>Let Block</em>}'. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for class '<em>Let Block</em>'.
+ * @see org.eclipse.acceleo.model.mtl.LetBlock
+ * @generated
+ */
+ EClass getLetBlock();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.acceleo.model.mtl.LetBlock#getElseLet
+ * <em>Else Let</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the containment reference list '<em>Else Let</em>'.
+ * @see org.eclipse.acceleo.model.mtl.LetBlock#getElseLet()
+ * @see #getLetBlock()
+ * @generated
+ */
+ EReference getLetBlock_ElseLet();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.acceleo.model.mtl.LetBlock#getElse
+ * <em>Else</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the containment reference '<em>Else</em>'.
+ * @see org.eclipse.acceleo.model.mtl.LetBlock#getElse()
+ * @see #getLetBlock()
+ * @generated
+ */
+ EReference getLetBlock_Else();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.acceleo.model.mtl.LetBlock#getLetVariable
+ * <em>Let Variable</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the containment reference '<em>Let Variable</em>'.
+ * @see org.eclipse.acceleo.model.mtl.LetBlock#getLetVariable()
+ * @see #getLetBlock()
+ * @generated
+ */
+ EReference getLetBlock_LetVariable();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.acceleo.model.mtl.FileBlock <em>File Block</em>}'. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for class '<em>File Block</em>'.
+ * @see org.eclipse.acceleo.model.mtl.FileBlock
+ * @generated
+ */
+ EClass getFileBlock();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.acceleo.model.mtl.FileBlock#getOpenMode
+ * <em>Open Mode</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the attribute '<em>Open Mode</em>'.
+ * @see org.eclipse.acceleo.model.mtl.FileBlock#getOpenMode()
+ * @see #getFileBlock()
+ * @generated
+ */
+ EAttribute getFileBlock_OpenMode();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.acceleo.model.mtl.FileBlock#getFileUrl
+ * <em>File Url</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the containment reference '<em>File Url</em>'.
+ * @see org.eclipse.acceleo.model.mtl.FileBlock#getFileUrl()
+ * @see #getFileBlock()
+ * @generated
+ */
+ EReference getFileBlock_FileUrl();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.acceleo.model.mtl.FileBlock#getUniqId
+ * <em>Uniq Id</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the containment reference '<em>Uniq Id</em>'.
+ * @see org.eclipse.acceleo.model.mtl.FileBlock#getUniqId()
+ * @see #getFileBlock()
+ * @generated
+ */
+ EReference getFileBlock_UniqId();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.acceleo.model.mtl.TraceBlock <em>Trace Block</em>}'. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for class '<em>Trace Block</em>'.
+ * @see org.eclipse.acceleo.model.mtl.TraceBlock
+ * @generated
+ */
+ EClass getTraceBlock();
+
+ /**
+ * Returns the meta object for the containment reference '
+ * {@link org.eclipse.acceleo.model.mtl.TraceBlock#getModelElement <em>Model Element</em>}'. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @return the meta object for the containment reference '<em>Model Element</em>'.
+ * @see org.eclipse.acceleo.model.mtl.TraceBlock#getModelElement()
+ * @see #getTraceBlock()
+ * @generated
+ */
+ EReference getTraceBlock_ModelElement();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.acceleo.model.mtl.Macro <em>Macro</em>}'. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @return the meta object for class '<em>Macro</em>'.
+ * @see org.eclipse.acceleo.model.mtl.Macro
+ * @generated
+ */
+ EClass getMacro();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.acceleo.model.mtl.Macro#getParameter
+ * <em>Parameter</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the containment reference list '<em>Parameter</em>'.
+ * @see org.eclipse.acceleo.model.mtl.Macro#getParameter()
+ * @see #getMacro()
+ * @generated
+ */
+ EReference getMacro_Parameter();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.acceleo.model.mtl.Macro#getType <em>Type</em>}'. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the reference '<em>Type</em>'.
+ * @see org.eclipse.acceleo.model.mtl.Macro#getType()
+ * @see #getMacro()
+ * @generated
+ */
+ EReference getMacro_Type();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.acceleo.model.mtl.MacroInvocation <em>Macro Invocation</em>}'.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for class '<em>Macro Invocation</em>'.
+ * @see org.eclipse.acceleo.model.mtl.MacroInvocation
+ * @generated
+ */
+ EClass getMacroInvocation();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.acceleo.model.mtl.MacroInvocation#getDefinition
+ * <em>Definition</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the reference '<em>Definition</em>'.
+ * @see org.eclipse.acceleo.model.mtl.MacroInvocation#getDefinition()
+ * @see #getMacroInvocation()
+ * @generated
+ */
+ EReference getMacroInvocation_Definition();
+
+ /**
+ * Returns the meta object for the containment reference list '
+ * {@link org.eclipse.acceleo.model.mtl.MacroInvocation#getArgument <em>Argument</em>}'. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @return the meta object for the containment reference list '<em>Argument</em>'.
+ * @see org.eclipse.acceleo.model.mtl.MacroInvocation#getArgument()
+ * @see #getMacroInvocation()
+ * @generated
+ */
+ EReference getMacroInvocation_Argument();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.acceleo.model.mtl.TypedModel <em>Typed Model</em>}'. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for class '<em>Typed Model</em>'.
+ * @see org.eclipse.acceleo.model.mtl.TypedModel
+ * @generated
+ */
+ EClass getTypedModel();
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.acceleo.model.mtl.TypedModel#getTakesTypesFrom
+ * <em>Takes Types From</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the reference list '<em>Takes Types From</em>'.
+ * @see org.eclipse.acceleo.model.mtl.TypedModel#getTakesTypesFrom()
+ * @see #getTypedModel()
+ * @generated
+ */
+ EReference getTypedModel_TakesTypesFrom();
+
+ /**
+ * Returns the meta object for enum '{@link org.eclipse.acceleo.model.mtl.VisibilityKind <em>Visibility Kind</em>}'.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for enum '<em>Visibility Kind</em>'.
+ * @see org.eclipse.acceleo.model.mtl.VisibilityKind
+ * @generated
+ */
+ EEnum getVisibilityKind();
+
+ /**
+ * Returns the meta object for enum '{@link org.eclipse.acceleo.model.mtl.OpenModeKind <em>Open Mode Kind</em>}'. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for enum '<em>Open Mode Kind</em>'.
+ * @see org.eclipse.acceleo.model.mtl.OpenModeKind
+ * @generated
+ */
+ EEnum getOpenModeKind();
+
+ /**
+ * Returns the factory that creates the instances of the model. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @return the factory that creates the instances of the model.
+ * @generated
+ */
+ MtlFactory getMtlFactory();
+
+ /**
+ * <!-- begin-user-doc --> Defines literals for the meta objects that represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ interface Literals {
+ /**
+ * The meta object literal for the '{@link org.eclipse.acceleo.model.mtl.impl.ModuleImpl <em>Module</em>}' class.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.model.mtl.impl.ModuleImpl
+ * @see org.eclipse.acceleo.model.mtl.impl.MtlPackageImpl#getModule()
+ * @generated
+ */
+ EClass MODULE = eINSTANCE.getModule();
+
+ /**
+ * The meta object literal for the '<em><b>Input</b></em>' containment reference list feature. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference MODULE__INPUT = eINSTANCE.getModule_Input();
+
+ /**
+ * The meta object literal for the '<em><b>Extends</b></em>' reference list feature. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference MODULE__EXTENDS = eINSTANCE.getModule_Extends();
+
+ /**
+ * The meta object literal for the '<em><b>Imports</b></em>' reference list feature. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference MODULE__IMPORTS = eINSTANCE.getModule_Imports();
+
+ /**
+ * The meta object literal for the '<em><b>Owned Module Element</b></em>' containment reference list
+ * feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference MODULE__OWNED_MODULE_ELEMENT = eINSTANCE.getModule_OwnedModuleElement();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.acceleo.model.mtl.impl.ModuleElementImpl
+ * <em>Module Element</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.model.mtl.impl.ModuleElementImpl
+ * @see org.eclipse.acceleo.model.mtl.impl.MtlPackageImpl#getModuleElement()
+ * @generated
+ */
+ EClass MODULE_ELEMENT = eINSTANCE.getModuleElement();
+
+ /**
+ * The meta object literal for the '<em><b>Visibility</b></em>' attribute feature. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EAttribute MODULE_ELEMENT__VISIBILITY = eINSTANCE.getModuleElement_Visibility();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.acceleo.model.mtl.impl.TemplateExpressionImpl
+ * <em>Template Expression</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.model.mtl.impl.TemplateExpressionImpl
+ * @see org.eclipse.acceleo.model.mtl.impl.MtlPackageImpl#getTemplateExpression()
+ * @generated
+ */
+ EClass TEMPLATE_EXPRESSION = eINSTANCE.getTemplateExpression();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.acceleo.model.mtl.impl.BlockImpl <em>Block</em>}' class. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.model.mtl.impl.BlockImpl
+ * @see org.eclipse.acceleo.model.mtl.impl.MtlPackageImpl#getBlock()
+ * @generated
+ */
+ EClass BLOCK = eINSTANCE.getBlock();
+
+ /**
+ * The meta object literal for the '<em><b>Init</b></em>' containment reference feature. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference BLOCK__INIT = eINSTANCE.getBlock_Init();
+
+ /**
+ * The meta object literal for the '<em><b>Body</b></em>' containment reference list feature. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference BLOCK__BODY = eINSTANCE.getBlock_Body();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.acceleo.model.mtl.impl.InitSectionImpl <em>Init Section</em>}
+ * ' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.model.mtl.impl.InitSectionImpl
+ * @see org.eclipse.acceleo.model.mtl.impl.MtlPackageImpl#getInitSection()
+ * @generated
+ */
+ EClass INIT_SECTION = eINSTANCE.getInitSection();
+
+ /**
+ * The meta object literal for the '<em><b>Variable</b></em>' containment reference list feature. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference INIT_SECTION__VARIABLE = eINSTANCE.getInitSection_Variable();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.acceleo.model.mtl.impl.TemplateImpl <em>Template</em>}'
+ * class. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.model.mtl.impl.TemplateImpl
+ * @see org.eclipse.acceleo.model.mtl.impl.MtlPackageImpl#getTemplate()
+ * @generated
+ */
+ EClass TEMPLATE = eINSTANCE.getTemplate();
+
+ /**
+ * The meta object literal for the '<em><b>Overrides</b></em>' reference list feature. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference TEMPLATE__OVERRIDES = eINSTANCE.getTemplate_Overrides();
+
+ /**
+ * The meta object literal for the '<em><b>Parameter</b></em>' containment reference list feature.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference TEMPLATE__PARAMETER = eINSTANCE.getTemplate_Parameter();
+
+ /**
+ * The meta object literal for the '<em><b>Guard</b></em>' containment reference feature. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference TEMPLATE__GUARD = eINSTANCE.getTemplate_Guard();
+
+ /**
+ * The meta object literal for the '<em><b>Main</b></em>' attribute feature. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EAttribute TEMPLATE__MAIN = eINSTANCE.getTemplate_Main();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.acceleo.model.mtl.impl.TemplateInvocationImpl
+ * <em>Template Invocation</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.model.mtl.impl.TemplateInvocationImpl
+ * @see org.eclipse.acceleo.model.mtl.impl.MtlPackageImpl#getTemplateInvocation()
+ * @generated
+ */
+ EClass TEMPLATE_INVOCATION = eINSTANCE.getTemplateInvocation();
+
+ /**
+ * The meta object literal for the '<em><b>Definition</b></em>' reference feature. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference TEMPLATE_INVOCATION__DEFINITION = eINSTANCE.getTemplateInvocation_Definition();
+
+ /**
+ * The meta object literal for the '<em><b>Argument</b></em>' containment reference list feature. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference TEMPLATE_INVOCATION__ARGUMENT = eINSTANCE.getTemplateInvocation_Argument();
+
+ /**
+ * The meta object literal for the '<em><b>Before</b></em>' containment reference feature. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference TEMPLATE_INVOCATION__BEFORE = eINSTANCE.getTemplateInvocation_Before();
+
+ /**
+ * The meta object literal for the '<em><b>After</b></em>' containment reference feature. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference TEMPLATE_INVOCATION__AFTER = eINSTANCE.getTemplateInvocation_After();
+
+ /**
+ * The meta object literal for the '<em><b>Each</b></em>' containment reference feature. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference TEMPLATE_INVOCATION__EACH = eINSTANCE.getTemplateInvocation_Each();
+
+ /**
+ * The meta object literal for the '<em><b>Super</b></em>' attribute feature. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EAttribute TEMPLATE_INVOCATION__SUPER = eINSTANCE.getTemplateInvocation_Super();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.acceleo.model.mtl.impl.QueryImpl <em>Query</em>}' class. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.model.mtl.impl.QueryImpl
+ * @see org.eclipse.acceleo.model.mtl.impl.MtlPackageImpl#getQuery()
+ * @generated
+ */
+ EClass QUERY = eINSTANCE.getQuery();
+
+ /**
+ * The meta object literal for the '<em><b>Parameter</b></em>' containment reference list feature.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference QUERY__PARAMETER = eINSTANCE.getQuery_Parameter();
+
+ /**
+ * The meta object literal for the '<em><b>Expression</b></em>' containment reference feature. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference QUERY__EXPRESSION = eINSTANCE.getQuery_Expression();
+
+ /**
+ * The meta object literal for the '<em><b>Type</b></em>' reference feature. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference QUERY__TYPE = eINSTANCE.getQuery_Type();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.acceleo.model.mtl.impl.QueryInvocationImpl
+ * <em>Query Invocation</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.model.mtl.impl.QueryInvocationImpl
+ * @see org.eclipse.acceleo.model.mtl.impl.MtlPackageImpl#getQueryInvocation()
+ * @generated
+ */
+ EClass QUERY_INVOCATION = eINSTANCE.getQueryInvocation();
+
+ /**
+ * The meta object literal for the '<em><b>Definition</b></em>' reference feature. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference QUERY_INVOCATION__DEFINITION = eINSTANCE.getQueryInvocation_Definition();
+
+ /**
+ * The meta object literal for the '<em><b>Argument</b></em>' containment reference list feature. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference QUERY_INVOCATION__ARGUMENT = eINSTANCE.getQueryInvocation_Argument();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.acceleo.model.mtl.impl.ProtectedAreaBlockImpl
+ * <em>Protected Area Block</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.model.mtl.impl.ProtectedAreaBlockImpl
+ * @see org.eclipse.acceleo.model.mtl.impl.MtlPackageImpl#getProtectedAreaBlock()
+ * @generated
+ */
+ EClass PROTECTED_AREA_BLOCK = eINSTANCE.getProtectedAreaBlock();
+
+ /**
+ * The meta object literal for the '<em><b>Marker</b></em>' containment reference feature. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference PROTECTED_AREA_BLOCK__MARKER = eINSTANCE.getProtectedAreaBlock_Marker();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.acceleo.model.mtl.impl.ForBlockImpl <em>For Block</em>}'
+ * class. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.model.mtl.impl.ForBlockImpl
+ * @see org.eclipse.acceleo.model.mtl.impl.MtlPackageImpl#getForBlock()
+ * @generated
+ */
+ EClass FOR_BLOCK = eINSTANCE.getForBlock();
+
+ /**
+ * The meta object literal for the '<em><b>Loop Variable</b></em>' containment reference feature. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference FOR_BLOCK__LOOP_VARIABLE = eINSTANCE.getForBlock_LoopVariable();
+
+ /**
+ * The meta object literal for the '<em><b>Iter Set</b></em>' containment reference feature. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference FOR_BLOCK__ITER_SET = eINSTANCE.getForBlock_IterSet();
+
+ /**
+ * The meta object literal for the '<em><b>Before</b></em>' containment reference feature. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference FOR_BLOCK__BEFORE = eINSTANCE.getForBlock_Before();
+
+ /**
+ * The meta object literal for the '<em><b>Each</b></em>' containment reference feature. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference FOR_BLOCK__EACH = eINSTANCE.getForBlock_Each();
+
+ /**
+ * The meta object literal for the '<em><b>After</b></em>' containment reference feature. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference FOR_BLOCK__AFTER = eINSTANCE.getForBlock_After();
+
+ /**
+ * The meta object literal for the '<em><b>Guard</b></em>' containment reference feature. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference FOR_BLOCK__GUARD = eINSTANCE.getForBlock_Guard();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.acceleo.model.mtl.impl.IfBlockImpl <em>If Block</em>}' class.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.model.mtl.impl.IfBlockImpl
+ * @see org.eclipse.acceleo.model.mtl.impl.MtlPackageImpl#getIfBlock()
+ * @generated
+ */
+ EClass IF_BLOCK = eINSTANCE.getIfBlock();
+
+ /**
+ * The meta object literal for the '<em><b>If Expr</b></em>' containment reference feature. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference IF_BLOCK__IF_EXPR = eINSTANCE.getIfBlock_IfExpr();
+
+ /**
+ * The meta object literal for the '<em><b>Else</b></em>' containment reference feature. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference IF_BLOCK__ELSE = eINSTANCE.getIfBlock_Else();
+
+ /**
+ * The meta object literal for the '<em><b>Else If</b></em>' containment reference list feature. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference IF_BLOCK__ELSE_IF = eINSTANCE.getIfBlock_ElseIf();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.acceleo.model.mtl.impl.LetBlockImpl <em>Let Block</em>}'
+ * class. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.model.mtl.impl.LetBlockImpl
+ * @see org.eclipse.acceleo.model.mtl.impl.MtlPackageImpl#getLetBlock()
+ * @generated
+ */
+ EClass LET_BLOCK = eINSTANCE.getLetBlock();
+
+ /**
+ * The meta object literal for the '<em><b>Else Let</b></em>' containment reference list feature. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference LET_BLOCK__ELSE_LET = eINSTANCE.getLetBlock_ElseLet();
+
+ /**
+ * The meta object literal for the '<em><b>Else</b></em>' containment reference feature. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference LET_BLOCK__ELSE = eINSTANCE.getLetBlock_Else();
+
+ /**
+ * The meta object literal for the '<em><b>Let Variable</b></em>' containment reference feature. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference LET_BLOCK__LET_VARIABLE = eINSTANCE.getLetBlock_LetVariable();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.acceleo.model.mtl.impl.FileBlockImpl <em>File Block</em>}'
+ * class. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.model.mtl.impl.FileBlockImpl
+ * @see org.eclipse.acceleo.model.mtl.impl.MtlPackageImpl#getFileBlock()
+ * @generated
+ */
+ EClass FILE_BLOCK = eINSTANCE.getFileBlock();
+
+ /**
+ * The meta object literal for the '<em><b>Open Mode</b></em>' attribute feature. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EAttribute FILE_BLOCK__OPEN_MODE = eINSTANCE.getFileBlock_OpenMode();
+
+ /**
+ * The meta object literal for the '<em><b>File Url</b></em>' containment reference feature. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference FILE_BLOCK__FILE_URL = eINSTANCE.getFileBlock_FileUrl();
+
+ /**
+ * The meta object literal for the '<em><b>Uniq Id</b></em>' containment reference feature. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference FILE_BLOCK__UNIQ_ID = eINSTANCE.getFileBlock_UniqId();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.acceleo.model.mtl.impl.TraceBlockImpl <em>Trace Block</em>}'
+ * class. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.model.mtl.impl.TraceBlockImpl
+ * @see org.eclipse.acceleo.model.mtl.impl.MtlPackageImpl#getTraceBlock()
+ * @generated
+ */
+ EClass TRACE_BLOCK = eINSTANCE.getTraceBlock();
+
+ /**
+ * The meta object literal for the '<em><b>Model Element</b></em>' containment reference feature. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference TRACE_BLOCK__MODEL_ELEMENT = eINSTANCE.getTraceBlock_ModelElement();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.acceleo.model.mtl.impl.MacroImpl <em>Macro</em>}' class. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.model.mtl.impl.MacroImpl
+ * @see org.eclipse.acceleo.model.mtl.impl.MtlPackageImpl#getMacro()
+ * @generated
+ */
+ EClass MACRO = eINSTANCE.getMacro();
+
+ /**
+ * The meta object literal for the '<em><b>Parameter</b></em>' containment reference list feature.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference MACRO__PARAMETER = eINSTANCE.getMacro_Parameter();
+
+ /**
+ * The meta object literal for the '<em><b>Type</b></em>' reference feature. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference MACRO__TYPE = eINSTANCE.getMacro_Type();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.acceleo.model.mtl.impl.MacroInvocationImpl
+ * <em>Macro Invocation</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.model.mtl.impl.MacroInvocationImpl
+ * @see org.eclipse.acceleo.model.mtl.impl.MtlPackageImpl#getMacroInvocation()
+ * @generated
+ */
+ EClass MACRO_INVOCATION = eINSTANCE.getMacroInvocation();
+
+ /**
+ * The meta object literal for the '<em><b>Definition</b></em>' reference feature. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference MACRO_INVOCATION__DEFINITION = eINSTANCE.getMacroInvocation_Definition();
+
+ /**
+ * The meta object literal for the '<em><b>Argument</b></em>' containment reference list feature. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference MACRO_INVOCATION__ARGUMENT = eINSTANCE.getMacroInvocation_Argument();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.acceleo.model.mtl.impl.TypedModelImpl <em>Typed Model</em>}'
+ * class. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.model.mtl.impl.TypedModelImpl
+ * @see org.eclipse.acceleo.model.mtl.impl.MtlPackageImpl#getTypedModel()
+ * @generated
+ */
+ EClass TYPED_MODEL = eINSTANCE.getTypedModel();
+
+ /**
+ * The meta object literal for the '<em><b>Takes Types From</b></em>' reference list feature. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference TYPED_MODEL__TAKES_TYPES_FROM = eINSTANCE.getTypedModel_TakesTypesFrom();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.acceleo.model.mtl.VisibilityKind <em>Visibility Kind</em>}'
+ * enum. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.model.mtl.VisibilityKind
+ * @see org.eclipse.acceleo.model.mtl.impl.MtlPackageImpl#getVisibilityKind()
+ * @generated
+ */
+ EEnum VISIBILITY_KIND = eINSTANCE.getVisibilityKind();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.acceleo.model.mtl.OpenModeKind <em>Open Mode Kind</em>}'
+ * enum. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.model.mtl.OpenModeKind
+ * @see org.eclipse.acceleo.model.mtl.impl.MtlPackageImpl#getOpenModeKind()
+ * @generated
+ */
+ EEnum OPEN_MODE_KIND = eINSTANCE.getOpenModeKind();
+
+ }
+
+} // MtlPackage
diff --git a/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/OpenModeKind.java b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/OpenModeKind.java
new file mode 100644
index 0000000..cc94763
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/OpenModeKind.java
@@ -0,0 +1,210 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.model.mtl;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc --> A representation of the literals of the enumeration '<em><b>Open Mode Kind</b></em>
+ * ', and utility methods for working with them. <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.model.mtl.MtlPackage#getOpenModeKind()
+ * @model
+ * @generated
+ */
+public enum OpenModeKind implements Enumerator {
+ /**
+ * The '<em><b>Append</b></em>' literal object. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #APPEND_VALUE
+ * @generated
+ * @ordered
+ */
+ APPEND(0, "Append", "Append"), //$NON-NLS-1$ //$NON-NLS-2$
+
+ /**
+ * The '<em><b>Over Write</b></em>' literal object. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #OVER_WRITE_VALUE
+ * @generated
+ * @ordered
+ */
+ OVER_WRITE(1, "OverWrite", "OverWrite"); //$NON-NLS-1$ //$NON-NLS-2$
+
+ /**
+ * The '<em><b>Append</b></em>' literal value. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Append</b></em>' literal object isn't clear, there really should be more of a
+ * description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @see #APPEND
+ * @model name="Append"
+ * @generated
+ * @ordered
+ */
+ public static final int APPEND_VALUE = 0;
+
+ /**
+ * The '<em><b>Over Write</b></em>' literal value. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Over Write</b></em>' literal object isn't clear, there really should be more
+ * of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @see #OVER_WRITE
+ * @model name="OverWrite"
+ * @generated
+ * @ordered
+ */
+ public static final int OVER_WRITE_VALUE = 1;
+
+ /**
+ * An array of all the '<em><b>Open Mode Kind</b></em>' enumerators. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ */
+ private static final OpenModeKind[] VALUES_ARRAY = new OpenModeKind[] {APPEND, OVER_WRITE,};
+
+ /**
+ * A public read-only list of all the '<em><b>Open Mode Kind</b></em>' enumerators. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public static final List<OpenModeKind> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+ /**
+ * Returns the '<em><b>Open Mode Kind</b></em>' literal with the specified literal value. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public static OpenModeKind get(String literal) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ OpenModeKind result = VALUES_ARRAY[i];
+ if (result.toString().equals(literal)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Open Mode Kind</b></em>' literal with the specified name. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public static OpenModeKind getByName(String name) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ OpenModeKind result = VALUES_ARRAY[i];
+ if (result.getName().equals(name)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Open Mode Kind</b></em>' literal with the specified integer value. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public static OpenModeKind get(int value) {
+ switch (value) {
+ case APPEND_VALUE:
+ return APPEND;
+ case OVER_WRITE_VALUE:
+ return OVER_WRITE;
+ }
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private final int value;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private final String name;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private final String literal;
+
+ /**
+ * Only this class can construct instances. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private OpenModeKind(int value, String name, String literal) {
+ this.value = value;
+ this.name = name;
+ this.literal = literal;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public int getValue() {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public String getLiteral() {
+ return literal;
+ }
+
+ /**
+ * Returns the literal value of the enumerator, which is its string representation. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public String toString() {
+ return literal;
+ }
+
+} // OpenModeKind
diff --git a/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/ProtectedAreaBlock.java b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/ProtectedAreaBlock.java
new file mode 100644
index 0000000..bc91aca
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/ProtectedAreaBlock.java
@@ -0,0 +1,57 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.model.mtl;
+
+import org.eclipse.ocl.ecore.OCLExpression;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '<em><b>Protected Area Block</b></em>'. <!--
+ * end-user-doc -->
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.acceleo.model.mtl.ProtectedAreaBlock#getMarker <em>Marker</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.acceleo.model.mtl.MtlPackage#getProtectedAreaBlock()
+ * @model
+ * @generated
+ */
+public interface ProtectedAreaBlock extends Block {
+ /**
+ * Returns the value of the '<em><b>Marker</b></em>' containment reference. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Marker</em>' containment reference isn't clear, there really should be more
+ * of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Marker</em>' containment reference.
+ * @see #setMarker(OCLExpression)
+ * @see org.eclipse.acceleo.model.mtl.MtlPackage#getProtectedAreaBlock_Marker()
+ * @model containment="true" required="true"
+ * @generated
+ */
+ OCLExpression getMarker();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.acceleo.model.mtl.ProtectedAreaBlock#getMarker <em>Marker</em>}'
+ * containment reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Marker</em>' containment reference.
+ * @see #getMarker()
+ * @generated
+ */
+ void setMarker(OCLExpression value);
+
+} // ProtectedAreaBlock
diff --git a/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/Query.java b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/Query.java
new file mode 100644
index 0000000..45ade43
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/Query.java
@@ -0,0 +1,104 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.model.mtl;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClassifier;
+import org.eclipse.ocl.ecore.OCLExpression;
+import org.eclipse.ocl.ecore.Variable;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '<em><b>Query</b></em>'. <!-- end-user-doc -->
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.acceleo.model.mtl.Query#getParameter <em>Parameter</em>}</li>
+ * <li>{@link org.eclipse.acceleo.model.mtl.Query#getExpression <em>Expression</em>}</li>
+ * <li>{@link org.eclipse.acceleo.model.mtl.Query#getType <em>Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.acceleo.model.mtl.MtlPackage#getQuery()
+ * @model
+ * @generated
+ */
+public interface Query extends ModuleElement {
+ /**
+ * Returns the value of the '<em><b>Parameter</b></em>' containment reference list. The list contents are
+ * of type {@link org.eclipse.ocl.ecore.Variable}. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Parameter</em>' containment reference list isn't clear, there really should
+ * be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Parameter</em>' containment reference list.
+ * @see org.eclipse.acceleo.model.mtl.MtlPackage#getQuery_Parameter()
+ * @model containment="true"
+ * @generated
+ */
+ EList<Variable> getParameter();
+
+ /**
+ * Returns the value of the '<em><b>Expression</b></em>' containment reference. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Expression</em>' containment reference isn't clear, there really should be
+ * more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Expression</em>' containment reference.
+ * @see #setExpression(OCLExpression)
+ * @see org.eclipse.acceleo.model.mtl.MtlPackage#getQuery_Expression()
+ * @model containment="true" required="true"
+ * @generated
+ */
+ OCLExpression getExpression();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.acceleo.model.mtl.Query#getExpression <em>Expression</em>}' containment
+ * reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Expression</em>' containment reference.
+ * @see #getExpression()
+ * @generated
+ */
+ void setExpression(OCLExpression value);
+
+ /**
+ * Returns the value of the '<em><b>Type</b></em>' reference. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Type</em>' reference isn't clear, there really should be more of a
+ * description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Type</em>' reference.
+ * @see #setType(EClassifier)
+ * @see org.eclipse.acceleo.model.mtl.MtlPackage#getQuery_Type()
+ * @model required="true"
+ * @generated
+ */
+ EClassifier getType();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.acceleo.model.mtl.Query#getType <em>Type</em>}' reference. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Type</em>' reference.
+ * @see #getType()
+ * @generated
+ */
+ void setType(EClassifier value);
+
+} // Query
diff --git a/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/QueryInvocation.java b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/QueryInvocation.java
new file mode 100644
index 0000000..a33bd63
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/QueryInvocation.java
@@ -0,0 +1,75 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.model.mtl;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.ocl.ecore.OCLExpression;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '<em><b>Query Invocation</b></em>'. <!--
+ * end-user-doc -->
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.acceleo.model.mtl.QueryInvocation#getDefinition <em>Definition</em>}</li>
+ * <li>{@link org.eclipse.acceleo.model.mtl.QueryInvocation#getArgument <em>Argument</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.acceleo.model.mtl.MtlPackage#getQueryInvocation()
+ * @model
+ * @generated
+ */
+public interface QueryInvocation extends TemplateExpression {
+ /**
+ * Returns the value of the '<em><b>Definition</b></em>' reference. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Definition</em>' reference isn't clear, there really should be more of a
+ * description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Definition</em>' reference.
+ * @see #setDefinition(Query)
+ * @see org.eclipse.acceleo.model.mtl.MtlPackage#getQueryInvocation_Definition()
+ * @model required="true"
+ * @generated
+ */
+ Query getDefinition();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.acceleo.model.mtl.QueryInvocation#getDefinition <em>Definition</em>}'
+ * reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Definition</em>' reference.
+ * @see #getDefinition()
+ * @generated
+ */
+ void setDefinition(Query value);
+
+ /**
+ * Returns the value of the '<em><b>Argument</b></em>' containment reference list. The list contents are
+ * of type {@link org.eclipse.ocl.ecore.OCLExpression}. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Argument</em>' containment reference list isn't clear, there really should
+ * be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Argument</em>' containment reference list.
+ * @see org.eclipse.acceleo.model.mtl.MtlPackage#getQueryInvocation_Argument()
+ * @model containment="true"
+ * @generated
+ */
+ EList<OCLExpression> getArgument();
+
+} // QueryInvocation
diff --git a/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/Template.java b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/Template.java
new file mode 100644
index 0000000..eb786e2
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/Template.java
@@ -0,0 +1,121 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.model.mtl;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.ocl.ecore.OCLExpression;
+import org.eclipse.ocl.ecore.Variable;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '<em><b>Template</b></em>'. <!-- end-user-doc
+ * -->
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.acceleo.model.mtl.Template#getOverrides <em>Overrides</em>}</li>
+ * <li>{@link org.eclipse.acceleo.model.mtl.Template#getParameter <em>Parameter</em>}</li>
+ * <li>{@link org.eclipse.acceleo.model.mtl.Template#getGuard <em>Guard</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.acceleo.model.mtl.MtlPackage#getTemplate()
+ * @model
+ * @generated
+ */
+public interface Template extends Block, ModuleElement {
+ /**
+ * Returns the value of the '<em><b>Overrides</b></em>' reference list. The list contents are of type
+ * {@link org.eclipse.acceleo.model.mtl.Template}. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Overrides</em>' reference list isn't clear, there really should be more of a
+ * description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Overrides</em>' reference list.
+ * @see org.eclipse.acceleo.model.mtl.MtlPackage#getTemplate_Overrides()
+ * @model
+ * @generated
+ */
+ EList<Template> getOverrides();
+
+ /**
+ * Returns the value of the '<em><b>Parameter</b></em>' containment reference list. The list contents are
+ * of type {@link org.eclipse.ocl.ecore.Variable}. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Parameter</em>' containment reference list isn't clear, there really should
+ * be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Parameter</em>' containment reference list.
+ * @see org.eclipse.acceleo.model.mtl.MtlPackage#getTemplate_Parameter()
+ * @model containment="true"
+ * @generated
+ */
+ EList<Variable> getParameter();
+
+ /**
+ * Returns the value of the '<em><b>Guard</b></em>' containment reference. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Guard</em>' containment reference isn't clear, there really should be more
+ * of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Guard</em>' containment reference.
+ * @see #setGuard(OCLExpression)
+ * @see org.eclipse.acceleo.model.mtl.MtlPackage#getTemplate_Guard()
+ * @model containment="true"
+ * @generated
+ */
+ OCLExpression getGuard();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.acceleo.model.mtl.Template#getGuard <em>Guard</em>}' containment reference.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Guard</em>' containment reference.
+ * @see #getGuard()
+ * @generated
+ */
+ void setGuard(OCLExpression value);
+
+ /**
+ * Returns the value of the '<em><b>Main</b></em>' attribute. The default value is <code>"false"</code>.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Main</em>' attribute isn't clear, there really should be more of a
+ * description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Main</em>' attribute.
+ * @see #setMain(boolean)
+ * @see org.eclipse.acceleo.model.mtl.MtlPackage#getTemplate_Main()
+ * @model default="false"
+ * @generated
+ */
+ boolean isMain();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.acceleo.model.mtl.Template#isMain <em>Main</em>}' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Main</em>' attribute.
+ * @see #isMain()
+ * @generated
+ */
+ void setMain(boolean value);
+
+} // Template
diff --git a/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/TemplateExpression.java b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/TemplateExpression.java
new file mode 100644
index 0000000..aef88d6
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/TemplateExpression.java
@@ -0,0 +1,25 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.model.mtl;
+
+import org.eclipse.ocl.ecore.OCLExpression;
+import org.eclipse.ocl.utilities.ASTNode;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '<em><b>Template Expression</b></em>'. <!--
+ * end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.model.mtl.MtlPackage#getTemplateExpression()
+ * @model
+ * @generated
+ */
+public interface TemplateExpression extends OCLExpression, ASTNode {
+} // TemplateExpression
diff --git a/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/TemplateInvocation.java b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/TemplateInvocation.java
new file mode 100644
index 0000000..efa502f
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/TemplateInvocation.java
@@ -0,0 +1,188 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.model.mtl;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.ocl.ecore.OCLExpression;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '<em><b>Template Invocation</b></em>'. <!--
+ * end-user-doc -->
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.acceleo.model.mtl.TemplateInvocation#getDefinition <em>Definition</em>}</li>
+ * <li>{@link org.eclipse.acceleo.model.mtl.TemplateInvocation#getArgument <em>Argument</em>}</li>
+ * <li>{@link org.eclipse.acceleo.model.mtl.TemplateInvocation#getBefore <em>Before</em>}</li>
+ * <li>{@link org.eclipse.acceleo.model.mtl.TemplateInvocation#getAfter <em>After</em>}</li>
+ * <li>{@link org.eclipse.acceleo.model.mtl.TemplateInvocation#getEach <em>Each</em>}</li>
+ * <li>{@link org.eclipse.acceleo.model.mtl.TemplateInvocation#isSuper <em>Super</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.acceleo.model.mtl.MtlPackage#getTemplateInvocation()
+ * @model
+ * @generated
+ */
+public interface TemplateInvocation extends TemplateExpression {
+ /**
+ * Returns the value of the '<em><b>Definition</b></em>' reference. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Definition</em>' reference isn't clear, there really should be more of a
+ * description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Definition</em>' reference.
+ * @see #setDefinition(Template)
+ * @see org.eclipse.acceleo.model.mtl.MtlPackage#getTemplateInvocation_Definition()
+ * @model required="true"
+ * @generated
+ */
+ Template getDefinition();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.acceleo.model.mtl.TemplateInvocation#getDefinition <em>Definition</em>}'
+ * reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Definition</em>' reference.
+ * @see #getDefinition()
+ * @generated
+ */
+ void setDefinition(Template value);
+
+ /**
+ * Returns the value of the '<em><b>Argument</b></em>' containment reference list. The list contents are
+ * of type {@link org.eclipse.ocl.ecore.OCLExpression}. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Argument</em>' containment reference list isn't clear, there really should
+ * be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Argument</em>' containment reference list.
+ * @see org.eclipse.acceleo.model.mtl.MtlPackage#getTemplateInvocation_Argument()
+ * @model containment="true"
+ * @generated
+ */
+ EList<OCLExpression> getArgument();
+
+ /**
+ * Returns the value of the '<em><b>Before</b></em>' containment reference. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Before</em>' containment reference isn't clear, there really should be more
+ * of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Before</em>' containment reference.
+ * @see #setBefore(OCLExpression)
+ * @see org.eclipse.acceleo.model.mtl.MtlPackage#getTemplateInvocation_Before()
+ * @model containment="true"
+ * @generated
+ */
+ OCLExpression getBefore();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.acceleo.model.mtl.TemplateInvocation#getBefore <em>Before</em>}'
+ * containment reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Before</em>' containment reference.
+ * @see #getBefore()
+ * @generated
+ */
+ void setBefore(OCLExpression value);
+
+ /**
+ * Returns the value of the '<em><b>After</b></em>' containment reference. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>After</em>' containment reference isn't clear, there really should be more
+ * of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>After</em>' containment reference.
+ * @see #setAfter(OCLExpression)
+ * @see org.eclipse.acceleo.model.mtl.MtlPackage#getTemplateInvocation_After()
+ * @model containment="true"
+ * @generated
+ */
+ OCLExpression getAfter();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.acceleo.model.mtl.TemplateInvocation#getAfter <em>After</em>}' containment
+ * reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>After</em>' containment reference.
+ * @see #getAfter()
+ * @generated
+ */
+ void setAfter(OCLExpression value);
+
+ /**
+ * Returns the value of the '<em><b>Each</b></em>' containment reference. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Each</em>' containment reference isn't clear, there really should be more of
+ * a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Each</em>' containment reference.
+ * @see #setEach(OCLExpression)
+ * @see org.eclipse.acceleo.model.mtl.MtlPackage#getTemplateInvocation_Each()
+ * @model containment="true"
+ * @generated
+ */
+ OCLExpression getEach();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.acceleo.model.mtl.TemplateInvocation#getEach <em>Each</em>}' containment
+ * reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Each</em>' containment reference.
+ * @see #getEach()
+ * @generated
+ */
+ void setEach(OCLExpression value);
+
+ /**
+ * Returns the value of the '<em><b>Super</b></em>' attribute. The default value is <code>"false"</code>.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Super</em>' attribute isn't clear, there really should be more of a
+ * description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Super</em>' attribute.
+ * @see #setSuper(boolean)
+ * @see org.eclipse.acceleo.model.mtl.MtlPackage#getTemplateInvocation_Super()
+ * @model default="false"
+ * @generated
+ */
+ boolean isSuper();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.acceleo.model.mtl.TemplateInvocation#isSuper <em>Super</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Super</em>' attribute.
+ * @see #isSuper()
+ * @generated
+ */
+ void setSuper(boolean value);
+
+} // TemplateInvocation
diff --git a/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/TraceBlock.java b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/TraceBlock.java
new file mode 100644
index 0000000..83e4206
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/TraceBlock.java
@@ -0,0 +1,57 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.model.mtl;
+
+import org.eclipse.ocl.ecore.OCLExpression;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '<em><b>Trace Block</b></em>'. <!--
+ * end-user-doc -->
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.acceleo.model.mtl.TraceBlock#getModelElement <em>Model Element</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.acceleo.model.mtl.MtlPackage#getTraceBlock()
+ * @model
+ * @generated
+ */
+public interface TraceBlock extends Block {
+ /**
+ * Returns the value of the '<em><b>Model Element</b></em>' containment reference. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Model Element</em>' containment reference isn't clear, there really should
+ * be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Model Element</em>' containment reference.
+ * @see #setModelElement(OCLExpression)
+ * @see org.eclipse.acceleo.model.mtl.MtlPackage#getTraceBlock_ModelElement()
+ * @model containment="true" required="true"
+ * @generated
+ */
+ OCLExpression getModelElement();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.acceleo.model.mtl.TraceBlock#getModelElement <em>Model Element</em>}'
+ * containment reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Model Element</em>' containment reference.
+ * @see #getModelElement()
+ * @generated
+ */
+ void setModelElement(OCLExpression value);
+
+} // TraceBlock
diff --git a/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/TypedModel.java b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/TypedModel.java
new file mode 100644
index 0000000..99da421
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/TypedModel.java
@@ -0,0 +1,48 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.model.mtl;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '<em><b>Typed Model</b></em>'. <!--
+ * end-user-doc -->
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.acceleo.model.mtl.TypedModel#getTakesTypesFrom <em>Takes Types From</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.acceleo.model.mtl.MtlPackage#getTypedModel()
+ * @model
+ * @generated
+ */
+public interface TypedModel extends EObject {
+ /**
+ * Returns the value of the '<em><b>Takes Types From</b></em>' reference list. The list contents are of
+ * type {@link org.eclipse.emf.ecore.EPackage}. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Takes Types From</em>' reference list isn't clear, there really should be
+ * more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Takes Types From</em>' reference list.
+ * @see org.eclipse.acceleo.model.mtl.MtlPackage#getTypedModel_TakesTypesFrom()
+ * @model required="true"
+ * @generated
+ */
+ EList<EPackage> getTakesTypesFrom();
+
+} // TypedModel
diff --git a/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/VisibilityKind.java b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/VisibilityKind.java
new file mode 100644
index 0000000..7dd4acc
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/VisibilityKind.java
@@ -0,0 +1,237 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.model.mtl;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc --> A representation of the literals of the enumeration '
+ * <em><b>Visibility Kind</b></em>', and utility methods for working with them. <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.model.mtl.MtlPackage#getVisibilityKind()
+ * @model
+ * @generated
+ */
+public enum VisibilityKind implements Enumerator {
+ /**
+ * The '<em><b>Private</b></em>' literal object. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #PRIVATE_VALUE
+ * @generated
+ * @ordered
+ */
+ PRIVATE(0, "Private", "Private"), //$NON-NLS-1$ //$NON-NLS-2$
+
+ /**
+ * The '<em><b>Protected</b></em>' literal object. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #PROTECTED_VALUE
+ * @generated
+ * @ordered
+ */
+ PROTECTED(1, "Protected", "Protected"), //$NON-NLS-1$ //$NON-NLS-2$
+
+ /**
+ * The '<em><b>Public</b></em>' literal object. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #PUBLIC_VALUE
+ * @generated
+ * @ordered
+ */
+ PUBLIC(2, "Public", "Public"); //$NON-NLS-1$ //$NON-NLS-2$
+
+ /**
+ * The '<em><b>Private</b></em>' literal value. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Private</b></em>' literal object isn't clear, there really should be more of
+ * a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @see #PRIVATE
+ * @model name="Private"
+ * @generated
+ * @ordered
+ */
+ public static final int PRIVATE_VALUE = 0;
+
+ /**
+ * The '<em><b>Protected</b></em>' literal value. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Protected</b></em>' literal object isn't clear, there really should be more
+ * of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @see #PROTECTED
+ * @model name="Protected"
+ * @generated
+ * @ordered
+ */
+ public static final int PROTECTED_VALUE = 1;
+
+ /**
+ * The '<em><b>Public</b></em>' literal value. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Public</b></em>' literal object isn't clear, there really should be more of a
+ * description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @see #PUBLIC
+ * @model name="Public"
+ * @generated
+ * @ordered
+ */
+ public static final int PUBLIC_VALUE = 2;
+
+ /**
+ * An array of all the '<em><b>Visibility Kind</b></em>' enumerators. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ */
+ private static final VisibilityKind[] VALUES_ARRAY = new VisibilityKind[] {PRIVATE, PROTECTED, PUBLIC,};
+
+ /**
+ * A public read-only list of all the '<em><b>Visibility Kind</b></em>' enumerators. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public static final List<VisibilityKind> VALUES = Collections.unmodifiableList(Arrays
+ .asList(VALUES_ARRAY));
+
+ /**
+ * Returns the '<em><b>Visibility Kind</b></em>' literal with the specified literal value. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public static VisibilityKind get(String literal) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ VisibilityKind result = VALUES_ARRAY[i];
+ if (result.toString().equals(literal)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Visibility Kind</b></em>' literal with the specified name. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public static VisibilityKind getByName(String name) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ VisibilityKind result = VALUES_ARRAY[i];
+ if (result.getName().equals(name)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Visibility Kind</b></em>' literal with the specified integer value. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public static VisibilityKind get(int value) {
+ switch (value) {
+ case PRIVATE_VALUE:
+ return PRIVATE;
+ case PROTECTED_VALUE:
+ return PROTECTED;
+ case PUBLIC_VALUE:
+ return PUBLIC;
+ }
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private final int value;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private final String name;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private final String literal;
+
+ /**
+ * Only this class can construct instances. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private VisibilityKind(int value, String name, String literal) {
+ this.value = value;
+ this.name = name;
+ this.literal = literal;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public int getValue() {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public String getLiteral() {
+ return literal;
+ }
+
+ /**
+ * Returns the literal value of the enumerator, which is its string representation. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public String toString() {
+ return literal;
+ }
+
+} // VisibilityKind
diff --git a/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/BlockImpl.java b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/BlockImpl.java
new file mode 100644
index 0000000..fe906e7
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/BlockImpl.java
@@ -0,0 +1,234 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.model.mtl.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.acceleo.model.mtl.Block;
+import org.eclipse.acceleo.model.mtl.InitSection;
+import org.eclipse.acceleo.model.mtl.MtlPackage;
+import org.eclipse.ocl.ecore.OCLExpression;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object ' <em><b>Block</b></em>'. <!-- end-user-doc
+ * -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.acceleo.model.mtl.impl.spec.BlockImpl#getInit <em>Init</em>}</li>
+ * <li>{@link org.eclipse.acceleo.model.mtl.impl.spec.BlockImpl#getBody <em>Body</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class BlockImpl extends TemplateExpressionImpl implements Block {
+ /**
+ * The cached value of the '{@link #getInit() <em>Init</em>}' containment reference. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @see #getInit()
+ * @generated
+ * @ordered
+ */
+ protected InitSection init;
+
+ /**
+ * The cached value of the '{@link #getBody() <em>Body</em>}' containment reference list. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getBody()
+ * @generated
+ * @ordered
+ */
+ protected EList<OCLExpression> body;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected BlockImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return MtlPackage.Literals.BLOCK;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public InitSection getInit() {
+ return init;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public NotificationChain basicSetInit(InitSection newInit, NotificationChain msgs) {
+ InitSection oldInit = init;
+ init = newInit;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
+ MtlPackage.BLOCK__INIT, oldInit, newInit);
+ if (msgs == null) {
+ msgs = notification;
+ } else {
+ msgs.add(notification);
+ }
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setInit(InitSection newInit) {
+ if (newInit != init) {
+ NotificationChain msgs = null;
+ if (init != null) {
+ msgs = ((InternalEObject)init).eInverseRemove(this, EOPPOSITE_FEATURE_BASE
+ - MtlPackage.BLOCK__INIT, null, msgs);
+ }
+ if (newInit != null) {
+ msgs = ((InternalEObject)newInit).eInverseAdd(this, EOPPOSITE_FEATURE_BASE
+ - MtlPackage.BLOCK__INIT, null, msgs);
+ }
+ msgs = basicSetInit(newInit, msgs);
+ if (msgs != null) {
+ msgs.dispatch();
+ }
+ } else if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, MtlPackage.BLOCK__INIT, newInit, newInit));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EList<OCLExpression> getBody() {
+ if (body == null) {
+ body = new EObjectContainmentEList<OCLExpression>(OCLExpression.class, this,
+ MtlPackage.BLOCK__BODY);
+ }
+ return body;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case MtlPackage.BLOCK__INIT:
+ return basicSetInit(null, msgs);
+ case MtlPackage.BLOCK__BODY:
+ return ((InternalEList<?>)getBody()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case MtlPackage.BLOCK__INIT:
+ return getInit();
+ case MtlPackage.BLOCK__BODY:
+ return getBody();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case MtlPackage.BLOCK__INIT:
+ setInit((InitSection)newValue);
+ return;
+ case MtlPackage.BLOCK__BODY:
+ getBody().clear();
+ getBody().addAll((Collection<? extends OCLExpression>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case MtlPackage.BLOCK__INIT:
+ setInit((InitSection)null);
+ return;
+ case MtlPackage.BLOCK__BODY:
+ getBody().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case MtlPackage.BLOCK__INIT:
+ return init != null;
+ case MtlPackage.BLOCK__BODY:
+ return body != null && !body.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+} // BlockImpl
diff --git a/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/FileBlockImpl.java b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/FileBlockImpl.java
new file mode 100644
index 0000000..4d1d1ee
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/FileBlockImpl.java
@@ -0,0 +1,342 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.model.mtl.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.acceleo.model.mtl.FileBlock;
+import org.eclipse.acceleo.model.mtl.MtlPackage;
+import org.eclipse.acceleo.model.mtl.OpenModeKind;
+import org.eclipse.ocl.ecore.OCLExpression;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object ' <em><b>File Block</b></em>'. <!--
+ * end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.acceleo.model.mtl.impl.FileBlockImpl#getOpenMode <em>Open Mode</em>}</li>
+ * <li>{@link org.eclipse.acceleo.model.mtl.impl.FileBlockImpl#getFileUrl <em>File Url</em>}</li>
+ * <li>{@link org.eclipse.acceleo.model.mtl.impl.FileBlockImpl#getUniqId <em>Uniq Id</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class FileBlockImpl extends BlockImpl implements FileBlock {
+ /**
+ * The default value of the '{@link #getOpenMode() <em>Open Mode</em>}' attribute. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see #getOpenMode()
+ * @generated
+ * @ordered
+ */
+ protected static final OpenModeKind OPEN_MODE_EDEFAULT = OpenModeKind.APPEND;
+
+ /**
+ * The cached value of the '{@link #getOpenMode() <em>Open Mode</em>}' attribute. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see #getOpenMode()
+ * @generated
+ * @ordered
+ */
+ protected OpenModeKind openMode = OPEN_MODE_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getFileUrl() <em>File Url</em>}' containment reference. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getFileUrl()
+ * @generated
+ * @ordered
+ */
+ protected OCLExpression fileUrl;
+
+ /**
+ * The cached value of the '{@link #getUniqId() <em>Uniq Id</em>}' containment reference. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getUniqId()
+ * @generated
+ * @ordered
+ */
+ protected OCLExpression uniqId;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected FileBlockImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return MtlPackage.Literals.FILE_BLOCK;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public OpenModeKind getOpenMode() {
+ return openMode;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setOpenMode(OpenModeKind newOpenMode) {
+ OpenModeKind oldOpenMode = openMode;
+ openMode = newOpenMode == null ? OPEN_MODE_EDEFAULT : newOpenMode;
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, MtlPackage.FILE_BLOCK__OPEN_MODE,
+ oldOpenMode, openMode));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public OCLExpression getFileUrl() {
+ return fileUrl;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public NotificationChain basicSetFileUrl(OCLExpression newFileUrl, NotificationChain msgs) {
+ OCLExpression oldFileUrl = fileUrl;
+ fileUrl = newFileUrl;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
+ MtlPackage.FILE_BLOCK__FILE_URL, oldFileUrl, newFileUrl);
+ if (msgs == null) {
+ msgs = notification;
+ } else {
+ msgs.add(notification);
+ }
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setFileUrl(OCLExpression newFileUrl) {
+ if (newFileUrl != fileUrl) {
+ NotificationChain msgs = null;
+ if (fileUrl != null) {
+ msgs = ((InternalEObject)fileUrl).eInverseRemove(this, EOPPOSITE_FEATURE_BASE
+ - MtlPackage.FILE_BLOCK__FILE_URL, null, msgs);
+ }
+ if (newFileUrl != null) {
+ msgs = ((InternalEObject)newFileUrl).eInverseAdd(this, EOPPOSITE_FEATURE_BASE
+ - MtlPackage.FILE_BLOCK__FILE_URL, null, msgs);
+ }
+ msgs = basicSetFileUrl(newFileUrl, msgs);
+ if (msgs != null) {
+ msgs.dispatch();
+ }
+ } else if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, MtlPackage.FILE_BLOCK__FILE_URL,
+ newFileUrl, newFileUrl));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public OCLExpression getUniqId() {
+ return uniqId;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public NotificationChain basicSetUniqId(OCLExpression newUniqId, NotificationChain msgs) {
+ OCLExpression oldUniqId = uniqId;
+ uniqId = newUniqId;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
+ MtlPackage.FILE_BLOCK__UNIQ_ID, oldUniqId, newUniqId);
+ if (msgs == null) {
+ msgs = notification;
+ } else {
+ msgs.add(notification);
+ }
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setUniqId(OCLExpression newUniqId) {
+ if (newUniqId != uniqId) {
+ NotificationChain msgs = null;
+ if (uniqId != null) {
+ msgs = ((InternalEObject)uniqId).eInverseRemove(this, EOPPOSITE_FEATURE_BASE
+ - MtlPackage.FILE_BLOCK__UNIQ_ID, null, msgs);
+ }
+ if (newUniqId != null) {
+ msgs = ((InternalEObject)newUniqId).eInverseAdd(this, EOPPOSITE_FEATURE_BASE
+ - MtlPackage.FILE_BLOCK__UNIQ_ID, null, msgs);
+ }
+ msgs = basicSetUniqId(newUniqId, msgs);
+ if (msgs != null) {
+ msgs.dispatch();
+ }
+ } else if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, MtlPackage.FILE_BLOCK__UNIQ_ID, newUniqId,
+ newUniqId));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case MtlPackage.FILE_BLOCK__FILE_URL:
+ return basicSetFileUrl(null, msgs);
+ case MtlPackage.FILE_BLOCK__UNIQ_ID:
+ return basicSetUniqId(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case MtlPackage.FILE_BLOCK__OPEN_MODE:
+ return getOpenMode();
+ case MtlPackage.FILE_BLOCK__FILE_URL:
+ return getFileUrl();
+ case MtlPackage.FILE_BLOCK__UNIQ_ID:
+ return getUniqId();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case MtlPackage.FILE_BLOCK__OPEN_MODE:
+ setOpenMode((OpenModeKind)newValue);
+ return;
+ case MtlPackage.FILE_BLOCK__FILE_URL:
+ setFileUrl((OCLExpression)newValue);
+ return;
+ case MtlPackage.FILE_BLOCK__UNIQ_ID:
+ setUniqId((OCLExpression)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case MtlPackage.FILE_BLOCK__OPEN_MODE:
+ setOpenMode(OPEN_MODE_EDEFAULT);
+ return;
+ case MtlPackage.FILE_BLOCK__FILE_URL:
+ setFileUrl((OCLExpression)null);
+ return;
+ case MtlPackage.FILE_BLOCK__UNIQ_ID:
+ setUniqId((OCLExpression)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case MtlPackage.FILE_BLOCK__OPEN_MODE:
+ return openMode != OPEN_MODE_EDEFAULT;
+ case MtlPackage.FILE_BLOCK__FILE_URL:
+ return fileUrl != null;
+ case MtlPackage.FILE_BLOCK__UNIQ_ID:
+ return uniqId != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) {
+ return super.toString();
+ }
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (openMode: "); //$NON-NLS-1$
+ result.append(openMode);
+ result.append(')');
+ return result.toString();
+ }
+
+} // FileBlockImpl
diff --git a/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/ForBlockImpl.java b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/ForBlockImpl.java
new file mode 100644
index 0000000..582df2d
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/ForBlockImpl.java
@@ -0,0 +1,582 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.model.mtl.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.acceleo.model.mtl.ForBlock;
+import org.eclipse.acceleo.model.mtl.MtlPackage;
+import org.eclipse.ocl.ecore.OCLExpression;
+import org.eclipse.ocl.ecore.Variable;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object ' <em><b>For Block</b></em>'. <!--
+ * end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.acceleo.model.mtl.impl.ForBlockImpl#getLoopVariable <em>Loop Variable</em>}</li>
+ * <li>{@link org.eclipse.acceleo.model.mtl.impl.ForBlockImpl#getIterSet <em>Iter Set</em>}</li>
+ * <li>{@link org.eclipse.acceleo.model.mtl.impl.ForBlockImpl#getBefore <em>Before</em>}</li>
+ * <li>{@link org.eclipse.acceleo.model.mtl.impl.ForBlockImpl#getEach <em>Each</em>}</li>
+ * <li>{@link org.eclipse.acceleo.model.mtl.impl.ForBlockImpl#getAfter <em>After</em>}</li>
+ * <li>{@link org.eclipse.acceleo.model.mtl.impl.ForBlockImpl#getGuard <em>Guard</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ForBlockImpl extends BlockImpl implements ForBlock {
+ /**
+ * The cached value of the '{@link #getLoopVariable() <em>Loop Variable</em>}' containment reference. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getLoopVariable()
+ * @generated
+ * @ordered
+ */
+ protected Variable loopVariable;
+
+ /**
+ * The cached value of the '{@link #getIterSet() <em>Iter Set</em>}' containment reference. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getIterSet()
+ * @generated
+ * @ordered
+ */
+ protected OCLExpression iterSet;
+
+ /**
+ * The cached value of the '{@link #getBefore() <em>Before</em>}' containment reference. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getBefore()
+ * @generated
+ * @ordered
+ */
+ protected OCLExpression before;
+
+ /**
+ * The cached value of the '{@link #getEach() <em>Each</em>}' containment reference. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @see #getEach()
+ * @generated
+ * @ordered
+ */
+ protected OCLExpression each;
+
+ /**
+ * The cached value of the '{@link #getAfter() <em>After</em>}' containment reference. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @see #getAfter()
+ * @generated
+ * @ordered
+ */
+ protected OCLExpression after;
+
+ /**
+ * The cached value of the '{@link #getGuard() <em>Guard</em>}' containment reference. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @see #getGuard()
+ * @generated
+ * @ordered
+ */
+ protected OCLExpression guard;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected ForBlockImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return MtlPackage.Literals.FOR_BLOCK;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public Variable getLoopVariable() {
+ return loopVariable;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public NotificationChain basicSetLoopVariable(Variable newLoopVariable, NotificationChain msgs) {
+ Variable oldLoopVariable = loopVariable;
+ loopVariable = newLoopVariable;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
+ MtlPackage.FOR_BLOCK__LOOP_VARIABLE, oldLoopVariable, newLoopVariable);
+ if (msgs == null) {
+ msgs = notification;
+ } else {
+ msgs.add(notification);
+ }
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setLoopVariable(Variable newLoopVariable) {
+ if (newLoopVariable != loopVariable) {
+ NotificationChain msgs = null;
+ if (loopVariable != null) {
+ msgs = ((InternalEObject)loopVariable).eInverseRemove(this, EOPPOSITE_FEATURE_BASE
+ - MtlPackage.FOR_BLOCK__LOOP_VARIABLE, null, msgs);
+ }
+ if (newLoopVariable != null) {
+ msgs = ((InternalEObject)newLoopVariable).eInverseAdd(this, EOPPOSITE_FEATURE_BASE
+ - MtlPackage.FOR_BLOCK__LOOP_VARIABLE, null, msgs);
+ }
+ msgs = basicSetLoopVariable(newLoopVariable, msgs);
+ if (msgs != null) {
+ msgs.dispatch();
+ }
+ } else if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, MtlPackage.FOR_BLOCK__LOOP_VARIABLE,
+ newLoopVariable, newLoopVariable));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public OCLExpression getIterSet() {
+ return iterSet;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public NotificationChain basicSetIterSet(OCLExpression newIterSet, NotificationChain msgs) {
+ OCLExpression oldIterSet = iterSet;
+ iterSet = newIterSet;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
+ MtlPackage.FOR_BLOCK__ITER_SET, oldIterSet, newIterSet);
+ if (msgs == null) {
+ msgs = notification;
+ } else {
+ msgs.add(notification);
+ }
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setIterSet(OCLExpression newIterSet) {
+ if (newIterSet != iterSet) {
+ NotificationChain msgs = null;
+ if (iterSet != null) {
+ msgs = ((InternalEObject)iterSet).eInverseRemove(this, EOPPOSITE_FEATURE_BASE
+ - MtlPackage.FOR_BLOCK__ITER_SET, null, msgs);
+ }
+ if (newIterSet != null) {
+ msgs = ((InternalEObject)newIterSet).eInverseAdd(this, EOPPOSITE_FEATURE_BASE
+ - MtlPackage.FOR_BLOCK__ITER_SET, null, msgs);
+ }
+ msgs = basicSetIterSet(newIterSet, msgs);
+ if (msgs != null) {
+ msgs.dispatch();
+ }
+ } else if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, MtlPackage.FOR_BLOCK__ITER_SET, newIterSet,
+ newIterSet));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public OCLExpression getBefore() {
+ return before;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public NotificationChain basicSetBefore(OCLExpression newBefore, NotificationChain msgs) {
+ OCLExpression oldBefore = before;
+ before = newBefore;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
+ MtlPackage.FOR_BLOCK__BEFORE, oldBefore, newBefore);
+ if (msgs == null) {
+ msgs = notification;
+ } else {
+ msgs.add(notification);
+ }
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setBefore(OCLExpression newBefore) {
+ if (newBefore != before) {
+ NotificationChain msgs = null;
+ if (before != null) {
+ msgs = ((InternalEObject)before).eInverseRemove(this, EOPPOSITE_FEATURE_BASE
+ - MtlPackage.FOR_BLOCK__BEFORE, null, msgs);
+ }
+ if (newBefore != null) {
+ msgs = ((InternalEObject)newBefore).eInverseAdd(this, EOPPOSITE_FEATURE_BASE
+ - MtlPackage.FOR_BLOCK__BEFORE, null, msgs);
+ }
+ msgs = basicSetBefore(newBefore, msgs);
+ if (msgs != null) {
+ msgs.dispatch();
+ }
+ } else if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, MtlPackage.FOR_BLOCK__BEFORE, newBefore,
+ newBefore));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public OCLExpression getEach() {
+ return each;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public NotificationChain basicSetEach(OCLExpression newEach, NotificationChain msgs) {
+ OCLExpression oldEach = each;
+ each = newEach;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
+ MtlPackage.FOR_BLOCK__EACH, oldEach, newEach);
+ if (msgs == null) {
+ msgs = notification;
+ } else {
+ msgs.add(notification);
+ }
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setEach(OCLExpression newEach) {
+ if (newEach != each) {
+ NotificationChain msgs = null;
+ if (each != null) {
+ msgs = ((InternalEObject)each).eInverseRemove(this, EOPPOSITE_FEATURE_BASE
+ - MtlPackage.FOR_BLOCK__EACH, null, msgs);
+ }
+ if (newEach != null) {
+ msgs = ((InternalEObject)newEach).eInverseAdd(this, EOPPOSITE_FEATURE_BASE
+ - MtlPackage.FOR_BLOCK__EACH, null, msgs);
+ }
+ msgs = basicSetEach(newEach, msgs);
+ if (msgs != null) {
+ msgs.dispatch();
+ }
+ } else if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, MtlPackage.FOR_BLOCK__EACH, newEach,
+ newEach));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public OCLExpression getAfter() {
+ return after;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public NotificationChain basicSetAfter(OCLExpression newAfter, NotificationChain msgs) {
+ OCLExpression oldAfter = after;
+ after = newAfter;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
+ MtlPackage.FOR_BLOCK__AFTER, oldAfter, newAfter);
+ if (msgs == null) {
+ msgs = notification;
+ } else {
+ msgs.add(notification);
+ }
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setAfter(OCLExpression newAfter) {
+ if (newAfter != after) {
+ NotificationChain msgs = null;
+ if (after != null) {
+ msgs = ((InternalEObject)after).eInverseRemove(this, EOPPOSITE_FEATURE_BASE
+ - MtlPackage.FOR_BLOCK__AFTER, null, msgs);
+ }
+ if (newAfter != null) {
+ msgs = ((InternalEObject)newAfter).eInverseAdd(this, EOPPOSITE_FEATURE_BASE
+ - MtlPackage.FOR_BLOCK__AFTER, null, msgs);
+ }
+ msgs = basicSetAfter(newAfter, msgs);
+ if (msgs != null) {
+ msgs.dispatch();
+ }
+ } else if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, MtlPackage.FOR_BLOCK__AFTER, newAfter,
+ newAfter));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public OCLExpression getGuard() {
+ return guard;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public NotificationChain basicSetGuard(OCLExpression newGuard, NotificationChain msgs) {
+ OCLExpression oldGuard = guard;
+ guard = newGuard;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
+ MtlPackage.FOR_BLOCK__GUARD, oldGuard, newGuard);
+ if (msgs == null) {
+ msgs = notification;
+ } else {
+ msgs.add(notification);
+ }
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setGuard(OCLExpression newGuard) {
+ if (newGuard != guard) {
+ NotificationChain msgs = null;
+ if (guard != null) {
+ msgs = ((InternalEObject)guard).eInverseRemove(this, EOPPOSITE_FEATURE_BASE
+ - MtlPackage.FOR_BLOCK__GUARD, null, msgs);
+ }
+ if (newGuard != null) {
+ msgs = ((InternalEObject)newGuard).eInverseAdd(this, EOPPOSITE_FEATURE_BASE
+ - MtlPackage.FOR_BLOCK__GUARD, null, msgs);
+ }
+ msgs = basicSetGuard(newGuard, msgs);
+ if (msgs != null) {
+ msgs.dispatch();
+ }
+ } else if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, MtlPackage.FOR_BLOCK__GUARD, newGuard,
+ newGuard));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case MtlPackage.FOR_BLOCK__LOOP_VARIABLE:
+ return basicSetLoopVariable(null, msgs);
+ case MtlPackage.FOR_BLOCK__ITER_SET:
+ return basicSetIterSet(null, msgs);
+ case MtlPackage.FOR_BLOCK__BEFORE:
+ return basicSetBefore(null, msgs);
+ case MtlPackage.FOR_BLOCK__EACH:
+ return basicSetEach(null, msgs);
+ case MtlPackage.FOR_BLOCK__AFTER:
+ return basicSetAfter(null, msgs);
+ case MtlPackage.FOR_BLOCK__GUARD:
+ return basicSetGuard(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case MtlPackage.FOR_BLOCK__LOOP_VARIABLE:
+ return getLoopVariable();
+ case MtlPackage.FOR_BLOCK__ITER_SET:
+ return getIterSet();
+ case MtlPackage.FOR_BLOCK__BEFORE:
+ return getBefore();
+ case MtlPackage.FOR_BLOCK__EACH:
+ return getEach();
+ case MtlPackage.FOR_BLOCK__AFTER:
+ return getAfter();
+ case MtlPackage.FOR_BLOCK__GUARD:
+ return getGuard();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case MtlPackage.FOR_BLOCK__LOOP_VARIABLE:
+ setLoopVariable((Variable)newValue);
+ return;
+ case MtlPackage.FOR_BLOCK__ITER_SET:
+ setIterSet((OCLExpression)newValue);
+ return;
+ case MtlPackage.FOR_BLOCK__BEFORE:
+ setBefore((OCLExpression)newValue);
+ return;
+ case MtlPackage.FOR_BLOCK__EACH:
+ setEach((OCLExpression)newValue);
+ return;
+ case MtlPackage.FOR_BLOCK__AFTER:
+ setAfter((OCLExpression)newValue);
+ return;
+ case MtlPackage.FOR_BLOCK__GUARD:
+ setGuard((OCLExpression)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case MtlPackage.FOR_BLOCK__LOOP_VARIABLE:
+ setLoopVariable((Variable)null);
+ return;
+ case MtlPackage.FOR_BLOCK__ITER_SET:
+ setIterSet((OCLExpression)null);
+ return;
+ case MtlPackage.FOR_BLOCK__BEFORE:
+ setBefore((OCLExpression)null);
+ return;
+ case MtlPackage.FOR_BLOCK__EACH:
+ setEach((OCLExpression)null);
+ return;
+ case MtlPackage.FOR_BLOCK__AFTER:
+ setAfter((OCLExpression)null);
+ return;
+ case MtlPackage.FOR_BLOCK__GUARD:
+ setGuard((OCLExpression)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case MtlPackage.FOR_BLOCK__LOOP_VARIABLE:
+ return loopVariable != null;
+ case MtlPackage.FOR_BLOCK__ITER_SET:
+ return iterSet != null;
+ case MtlPackage.FOR_BLOCK__BEFORE:
+ return before != null;
+ case MtlPackage.FOR_BLOCK__EACH:
+ return each != null;
+ case MtlPackage.FOR_BLOCK__AFTER:
+ return after != null;
+ case MtlPackage.FOR_BLOCK__GUARD:
+ return guard != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} // ForBlockImpl
diff --git a/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/IfBlockImpl.java b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/IfBlockImpl.java
new file mode 100644
index 0000000..ba63a49
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/IfBlockImpl.java
@@ -0,0 +1,311 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.model.mtl.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.acceleo.model.mtl.Block;
+import org.eclipse.acceleo.model.mtl.IfBlock;
+import org.eclipse.acceleo.model.mtl.MtlPackage;
+import org.eclipse.ocl.ecore.OCLExpression;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object ' <em><b>If Block</b></em>'. <!--
+ * end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.acceleo.model.mtl.impl.IfBlockImpl#getIfExpr <em>If Expr</em>}</li>
+ * <li>{@link org.eclipse.acceleo.model.mtl.impl.IfBlockImpl#getElse <em>Else</em>}</li>
+ * <li>{@link org.eclipse.acceleo.model.mtl.impl.IfBlockImpl#getElseIf <em>Else If</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class IfBlockImpl extends BlockImpl implements IfBlock {
+ /**
+ * The cached value of the '{@link #getIfExpr() <em>If Expr</em>}' containment reference. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getIfExpr()
+ * @generated
+ * @ordered
+ */
+ protected OCLExpression ifExpr;
+
+ /**
+ * The cached value of the '{@link #getElse() <em>Else</em>}' containment reference. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @see #getElse()
+ * @generated
+ * @ordered
+ */
+ protected Block else_;
+
+ /**
+ * The cached value of the '{@link #getElseIf() <em>Else If</em>}' containment reference list. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getElseIf()
+ * @generated
+ * @ordered
+ */
+ protected EList<IfBlock> elseIf;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected IfBlockImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return MtlPackage.Literals.IF_BLOCK;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public OCLExpression getIfExpr() {
+ return ifExpr;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public NotificationChain basicSetIfExpr(OCLExpression newIfExpr, NotificationChain msgs) {
+ OCLExpression oldIfExpr = ifExpr;
+ ifExpr = newIfExpr;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
+ MtlPackage.IF_BLOCK__IF_EXPR, oldIfExpr, newIfExpr);
+ if (msgs == null) {
+ msgs = notification;
+ } else {
+ msgs.add(notification);
+ }
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setIfExpr(OCLExpression newIfExpr) {
+ if (newIfExpr != ifExpr) {
+ NotificationChain msgs = null;
+ if (ifExpr != null) {
+ msgs = ((InternalEObject)ifExpr).eInverseRemove(this, EOPPOSITE_FEATURE_BASE
+ - MtlPackage.IF_BLOCK__IF_EXPR, null, msgs);
+ }
+ if (newIfExpr != null) {
+ msgs = ((InternalEObject)newIfExpr).eInverseAdd(this, EOPPOSITE_FEATURE_BASE
+ - MtlPackage.IF_BLOCK__IF_EXPR, null, msgs);
+ }
+ msgs = basicSetIfExpr(newIfExpr, msgs);
+ if (msgs != null) {
+ msgs.dispatch();
+ }
+ } else if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, MtlPackage.IF_BLOCK__IF_EXPR, newIfExpr,
+ newIfExpr));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public Block getElse() {
+ return else_;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public NotificationChain basicSetElse(Block newElse, NotificationChain msgs) {
+ Block oldElse = else_;
+ else_ = newElse;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
+ MtlPackage.IF_BLOCK__ELSE, oldElse, newElse);
+ if (msgs == null) {
+ msgs = notification;
+ } else {
+ msgs.add(notification);
+ }
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setElse(Block newElse) {
+ if (newElse != else_) {
+ NotificationChain msgs = null;
+ if (else_ != null) {
+ msgs = ((InternalEObject)else_).eInverseRemove(this, EOPPOSITE_FEATURE_BASE
+ - MtlPackage.IF_BLOCK__ELSE, null, msgs);
+ }
+ if (newElse != null) {
+ msgs = ((InternalEObject)newElse).eInverseAdd(this, EOPPOSITE_FEATURE_BASE
+ - MtlPackage.IF_BLOCK__ELSE, null, msgs);
+ }
+ msgs = basicSetElse(newElse, msgs);
+ if (msgs != null) {
+ msgs.dispatch();
+ }
+ } else if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, MtlPackage.IF_BLOCK__ELSE, newElse, newElse));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EList<IfBlock> getElseIf() {
+ if (elseIf == null) {
+ elseIf = new EObjectContainmentEList<IfBlock>(IfBlock.class, this, MtlPackage.IF_BLOCK__ELSE_IF);
+ }
+ return elseIf;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case MtlPackage.IF_BLOCK__IF_EXPR:
+ return basicSetIfExpr(null, msgs);
+ case MtlPackage.IF_BLOCK__ELSE:
+ return basicSetElse(null, msgs);
+ case MtlPackage.IF_BLOCK__ELSE_IF:
+ return ((InternalEList<?>)getElseIf()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case MtlPackage.IF_BLOCK__IF_EXPR:
+ return getIfExpr();
+ case MtlPackage.IF_BLOCK__ELSE:
+ return getElse();
+ case MtlPackage.IF_BLOCK__ELSE_IF:
+ return getElseIf();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case MtlPackage.IF_BLOCK__IF_EXPR:
+ setIfExpr((OCLExpression)newValue);
+ return;
+ case MtlPackage.IF_BLOCK__ELSE:
+ setElse((Block)newValue);
+ return;
+ case MtlPackage.IF_BLOCK__ELSE_IF:
+ getElseIf().clear();
+ getElseIf().addAll((Collection<? extends IfBlock>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case MtlPackage.IF_BLOCK__IF_EXPR:
+ setIfExpr((OCLExpression)null);
+ return;
+ case MtlPackage.IF_BLOCK__ELSE:
+ setElse((Block)null);
+ return;
+ case MtlPackage.IF_BLOCK__ELSE_IF:
+ getElseIf().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case MtlPackage.IF_BLOCK__IF_EXPR:
+ return ifExpr != null;
+ case MtlPackage.IF_BLOCK__ELSE:
+ return else_ != null;
+ case MtlPackage.IF_BLOCK__ELSE_IF:
+ return elseIf != null && !elseIf.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+} // IfBlockImpl
diff --git a/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/InitSectionImpl.java b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/InitSectionImpl.java
new file mode 100644
index 0000000..d97a7eb
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/InitSectionImpl.java
@@ -0,0 +1,285 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.model.mtl.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.acceleo.model.mtl.InitSection;
+import org.eclipse.acceleo.model.mtl.MtlPackage;
+import org.eclipse.ocl.ecore.Variable;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '<em><b>Init Section</b></em>'. <!--
+ * end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.acceleo.model.mtl.impl.InitSectionImpl#getStartPosition <em>Start Position</em>}</li>
+ * <li>{@link org.eclipse.acceleo.model.mtl.impl.InitSectionImpl#getEndPosition <em>End Position</em>}</li>
+ * <li>{@link org.eclipse.acceleo.model.mtl.impl.InitSectionImpl#getVariable <em>Variable</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class InitSectionImpl extends EObjectImpl implements InitSection {
+ /**
+ * The default value of the '{@link #getStartPosition() <em>Start Position</em>}' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getStartPosition()
+ * @generated
+ * @ordered
+ */
+ protected static final int START_POSITION_EDEFAULT = -1;
+
+ /**
+ * The cached value of the '{@link #getStartPosition() <em>Start Position</em>}' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getStartPosition()
+ * @generated
+ * @ordered
+ */
+ protected int startPosition = START_POSITION_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getEndPosition() <em>End Position</em>}' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getEndPosition()
+ * @generated
+ * @ordered
+ */
+ protected static final int END_POSITION_EDEFAULT = -1;
+
+ /**
+ * The cached value of the '{@link #getEndPosition() <em>End Position</em>}' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getEndPosition()
+ * @generated
+ * @ordered
+ */
+ protected int endPosition = END_POSITION_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getVariable() <em>Variable</em>}' containment reference list. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getVariable()
+ * @generated
+ * @ordered
+ */
+ protected EList<Variable> variable;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected InitSectionImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return MtlPackage.Literals.INIT_SECTION;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EList<Variable> getVariable() {
+ if (variable == null) {
+ variable = new EObjectContainmentEList<Variable>(Variable.class, this,
+ MtlPackage.INIT_SECTION__VARIABLE);
+ }
+ return variable;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public int getStartPosition() {
+ return startPosition;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public int getEndPosition() {
+ return endPosition;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setStartPosition(int newStartPosition) {
+ int oldStartPosition = startPosition;
+ startPosition = newStartPosition;
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, MtlPackage.INIT_SECTION__START_POSITION,
+ oldStartPosition, startPosition));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setEndPosition(int newEndPosition) {
+ int oldEndPosition = endPosition;
+ endPosition = newEndPosition;
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, MtlPackage.INIT_SECTION__END_POSITION,
+ oldEndPosition, endPosition));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case MtlPackage.INIT_SECTION__VARIABLE:
+ return ((InternalEList<?>)getVariable()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case MtlPackage.INIT_SECTION__START_POSITION:
+ return new Integer(getStartPosition());
+ case MtlPackage.INIT_SECTION__END_POSITION:
+ return new Integer(getEndPosition());
+ case MtlPackage.INIT_SECTION__VARIABLE:
+ return getVariable();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case MtlPackage.INIT_SECTION__START_POSITION:
+ setStartPosition(((Integer)newValue).intValue());
+ return;
+ case MtlPackage.INIT_SECTION__END_POSITION:
+ setEndPosition(((Integer)newValue).intValue());
+ return;
+ case MtlPackage.INIT_SECTION__VARIABLE:
+ getVariable().clear();
+ getVariable().addAll((Collection<? extends Variable>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case MtlPackage.INIT_SECTION__START_POSITION:
+ setStartPosition(START_POSITION_EDEFAULT);
+ return;
+ case MtlPackage.INIT_SECTION__END_POSITION:
+ setEndPosition(END_POSITION_EDEFAULT);
+ return;
+ case MtlPackage.INIT_SECTION__VARIABLE:
+ getVariable().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case MtlPackage.INIT_SECTION__START_POSITION:
+ return startPosition != START_POSITION_EDEFAULT;
+ case MtlPackage.INIT_SECTION__END_POSITION:
+ return endPosition != END_POSITION_EDEFAULT;
+ case MtlPackage.INIT_SECTION__VARIABLE:
+ return variable != null && !variable.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) {
+ return super.toString();
+ }
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (startPosition: "); //$NON-NLS-1$
+ result.append(startPosition);
+ result.append(", endPosition: "); //$NON-NLS-1$
+ result.append(endPosition);
+ result.append(')');
+ return result.toString();
+ }
+
+} // InitSectionImpl
diff --git a/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/LetBlockImpl.java b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/LetBlockImpl.java
new file mode 100644
index 0000000..98c1b18
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/LetBlockImpl.java
@@ -0,0 +1,313 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.model.mtl.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.acceleo.model.mtl.Block;
+import org.eclipse.acceleo.model.mtl.LetBlock;
+import org.eclipse.acceleo.model.mtl.MtlPackage;
+import org.eclipse.ocl.ecore.Variable;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object ' <em><b>Let Block</b></em>'. <!--
+ * end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.acceleo.model.mtl.impl.LetBlockImpl#getElseLet <em>Else Let</em>}</li>
+ * <li>{@link org.eclipse.acceleo.model.mtl.impl.LetBlockImpl#getElse <em>Else</em>}</li>
+ * <li>{@link org.eclipse.acceleo.model.mtl.impl.LetBlockImpl#getLetVariable <em>Let Variable</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LetBlockImpl extends BlockImpl implements LetBlock {
+ /**
+ * The cached value of the '{@link #getElseLet() <em>Else Let</em>}' containment reference list. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getElseLet()
+ * @generated
+ * @ordered
+ */
+ protected EList<LetBlock> elseLet;
+
+ /**
+ * The cached value of the '{@link #getElse() <em>Else</em>}' containment reference. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @see #getElse()
+ * @generated
+ * @ordered
+ */
+ protected Block else_;
+
+ /**
+ * The cached value of the '{@link #getLetVariable() <em>Let Variable</em>}' containment reference. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getLetVariable()
+ * @generated
+ * @ordered
+ */
+ protected Variable letVariable;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected LetBlockImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return MtlPackage.Literals.LET_BLOCK;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EList<LetBlock> getElseLet() {
+ if (elseLet == null) {
+ elseLet = new EObjectContainmentEList<LetBlock>(LetBlock.class, this,
+ MtlPackage.LET_BLOCK__ELSE_LET);
+ }
+ return elseLet;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public Block getElse() {
+ return else_;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public NotificationChain basicSetElse(Block newElse, NotificationChain msgs) {
+ Block oldElse = else_;
+ else_ = newElse;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
+ MtlPackage.LET_BLOCK__ELSE, oldElse, newElse);
+ if (msgs == null) {
+ msgs = notification;
+ } else {
+ msgs.add(notification);
+ }
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setElse(Block newElse) {
+ if (newElse != else_) {
+ NotificationChain msgs = null;
+ if (else_ != null) {
+ msgs = ((InternalEObject)else_).eInverseRemove(this, EOPPOSITE_FEATURE_BASE
+ - MtlPackage.LET_BLOCK__ELSE, null, msgs);
+ }
+ if (newElse != null) {
+ msgs = ((InternalEObject)newElse).eInverseAdd(this, EOPPOSITE_FEATURE_BASE
+ - MtlPackage.LET_BLOCK__ELSE, null, msgs);
+ }
+ msgs = basicSetElse(newElse, msgs);
+ if (msgs != null) {
+ msgs.dispatch();
+ }
+ } else if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, MtlPackage.LET_BLOCK__ELSE, newElse,
+ newElse));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public Variable getLetVariable() {
+ return letVariable;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public NotificationChain basicSetLetVariable(Variable newLetVariable, NotificationChain msgs) {
+ Variable oldLetVariable = letVariable;
+ letVariable = newLetVariable;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
+ MtlPackage.LET_BLOCK__LET_VARIABLE, oldLetVariable, newLetVariable);
+ if (msgs == null) {
+ msgs = notification;
+ } else {
+ msgs.add(notification);
+ }
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setLetVariable(Variable newLetVariable) {
+ if (newLetVariable != letVariable) {
+ NotificationChain msgs = null;
+ if (letVariable != null) {
+ msgs = ((InternalEObject)letVariable).eInverseRemove(this, EOPPOSITE_FEATURE_BASE
+ - MtlPackage.LET_BLOCK__LET_VARIABLE, null, msgs);
+ }
+ if (newLetVariable != null) {
+ msgs = ((InternalEObject)newLetVariable).eInverseAdd(this, EOPPOSITE_FEATURE_BASE
+ - MtlPackage.LET_BLOCK__LET_VARIABLE, null, msgs);
+ }
+ msgs = basicSetLetVariable(newLetVariable, msgs);
+ if (msgs != null) {
+ msgs.dispatch();
+ }
+ } else if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, MtlPackage.LET_BLOCK__LET_VARIABLE,
+ newLetVariable, newLetVariable));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case MtlPackage.LET_BLOCK__ELSE_LET:
+ return ((InternalEList<?>)getElseLet()).basicRemove(otherEnd, msgs);
+ case MtlPackage.LET_BLOCK__ELSE:
+ return basicSetElse(null, msgs);
+ case MtlPackage.LET_BLOCK__LET_VARIABLE:
+ return basicSetLetVariable(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case MtlPackage.LET_BLOCK__ELSE_LET:
+ return getElseLet();
+ case MtlPackage.LET_BLOCK__ELSE:
+ return getElse();
+ case MtlPackage.LET_BLOCK__LET_VARIABLE:
+ return getLetVariable();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case MtlPackage.LET_BLOCK__ELSE_LET:
+ getElseLet().clear();
+ getElseLet().addAll((Collection<? extends LetBlock>)newValue);
+ return;
+ case MtlPackage.LET_BLOCK__ELSE:
+ setElse((Block)newValue);
+ return;
+ case MtlPackage.LET_BLOCK__LET_VARIABLE:
+ setLetVariable((Variable)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case MtlPackage.LET_BLOCK__ELSE_LET:
+ getElseLet().clear();
+ return;
+ case MtlPackage.LET_BLOCK__ELSE:
+ setElse((Block)null);
+ return;
+ case MtlPackage.LET_BLOCK__LET_VARIABLE:
+ setLetVariable((Variable)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case MtlPackage.LET_BLOCK__ELSE_LET:
+ return elseLet != null && !elseLet.isEmpty();
+ case MtlPackage.LET_BLOCK__ELSE:
+ return else_ != null;
+ case MtlPackage.LET_BLOCK__LET_VARIABLE:
+ return letVariable != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} // LetBlockImpl
diff --git a/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/MacroImpl.java b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/MacroImpl.java
new file mode 100644
index 0000000..f3f44f4
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/MacroImpl.java
@@ -0,0 +1,333 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.model.mtl.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EClassifier;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.acceleo.model.mtl.Macro;
+import org.eclipse.acceleo.model.mtl.ModuleElement;
+import org.eclipse.acceleo.model.mtl.MtlPackage;
+import org.eclipse.acceleo.model.mtl.VisibilityKind;
+import org.eclipse.ocl.ecore.Variable;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object ' <em><b>Macro</b></em>'. <!-- end-user-doc
+ * -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.acceleo.model.mtl.impl.spec.MacroImpl#getVisibility <em>Visibility</em>}</li>
+ * <li>{@link org.eclipse.acceleo.model.mtl.impl.spec.MacroImpl#getParameter <em>Parameter</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class MacroImpl extends BlockImpl implements Macro {
+ /**
+ * The default value of the '{@link #getVisibility() <em>Visibility</em>}' attribute. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @see #getVisibility()
+ * @generated
+ * @ordered
+ */
+ protected static final VisibilityKind VISIBILITY_EDEFAULT = VisibilityKind.PRIVATE;
+
+ /**
+ * The cached value of the '{@link #getVisibility() <em>Visibility</em>}' attribute. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @see #getVisibility()
+ * @generated
+ * @ordered
+ */
+ protected VisibilityKind visibility = VISIBILITY_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getParameter() <em>Parameter</em>}' containment reference list. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getParameter()
+ * @generated
+ * @ordered
+ */
+ protected EList<Variable> parameter;
+
+ /**
+ * The cached value of the '{@link #getType() <em>Type</em>}' reference. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @see #getType()
+ * @generated
+ * @ordered
+ */
+ protected EClassifier type;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected MacroImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return MtlPackage.Literals.MACRO;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public VisibilityKind getVisibility() {
+ return visibility;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setVisibility(VisibilityKind newVisibility) {
+ VisibilityKind oldVisibility = visibility;
+ visibility = newVisibility == null ? VISIBILITY_EDEFAULT : newVisibility;
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, MtlPackage.MACRO__VISIBILITY,
+ oldVisibility, visibility));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EList<Variable> getParameter() {
+ if (parameter == null) {
+ parameter = new EObjectContainmentEList<Variable>(Variable.class, this,
+ MtlPackage.MACRO__PARAMETER);
+ }
+ return parameter;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public EClassifier getType() {
+ if (type != null && type.eIsProxy()) {
+ InternalEObject oldType = (InternalEObject)type;
+ type = (EClassifier)eResolveProxy(oldType);
+ if (type != oldType) {
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, MtlPackage.MACRO__TYPE,
+ oldType, type));
+ }
+ }
+ }
+ return type;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EClassifier basicGetType() {
+ return type;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void setType(EClassifier newType) {
+ EClassifier oldType = type;
+ type = newType;
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, MtlPackage.MACRO__TYPE, oldType, type));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case MtlPackage.MACRO__PARAMETER:
+ return ((InternalEList<?>)getParameter()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case MtlPackage.MACRO__VISIBILITY:
+ return getVisibility();
+ case MtlPackage.MACRO__PARAMETER:
+ return getParameter();
+ case MtlPackage.MACRO__TYPE:
+ if (resolve) {
+ return getType();
+ }
+ return basicGetType();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case MtlPackage.MACRO__VISIBILITY:
+ setVisibility((VisibilityKind)newValue);
+ return;
+ case MtlPackage.MACRO__PARAMETER:
+ getParameter().clear();
+ getParameter().addAll((Collection<? extends Variable>)newValue);
+ return;
+ case MtlPackage.MACRO__TYPE:
+ setType((EClassifier)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case MtlPackage.MACRO__VISIBILITY:
+ setVisibility(VISIBILITY_EDEFAULT);
+ return;
+ case MtlPackage.MACRO__PARAMETER:
+ getParameter().clear();
+ return;
+ case MtlPackage.MACRO__TYPE:
+ setType((EClassifier)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case MtlPackage.MACRO__VISIBILITY:
+ return visibility != VISIBILITY_EDEFAULT;
+ case MtlPackage.MACRO__PARAMETER:
+ return parameter != null && !parameter.isEmpty();
+ case MtlPackage.MACRO__TYPE:
+ return type != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == ModuleElement.class) {
+ switch (derivedFeatureID) {
+ case MtlPackage.MACRO__VISIBILITY:
+ return MtlPackage.MODULE_ELEMENT__VISIBILITY;
+ default:
+ return -1;
+ }
+ }
+ return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
+ if (baseClass == ModuleElement.class) {
+ switch (baseFeatureID) {
+ case MtlPackage.MODULE_ELEMENT__VISIBILITY:
+ return MtlPackage.MACRO__VISIBILITY;
+ default:
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) {
+ return super.toString();
+ }
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (visibility: "); //$NON-NLS-1$
+ result.append(visibility);
+ result.append(')');
+ return result.toString();
+ }
+
+} // MacroImpl
diff --git a/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/MacroInvocationImpl.java b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/MacroInvocationImpl.java
new file mode 100644
index 0000000..2bff319
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/MacroInvocationImpl.java
@@ -0,0 +1,223 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.model.mtl.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.acceleo.model.mtl.Macro;
+import org.eclipse.acceleo.model.mtl.MacroInvocation;
+import org.eclipse.acceleo.model.mtl.MtlPackage;
+import org.eclipse.ocl.ecore.OCLExpression;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object ' <em><b>Macro Invocation</b></em>'. <!--
+ * end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.acceleo.model.mtl.impl.MacroInvocationImpl#getDefinition <em>Definition</em>}</li>
+ * <li>{@link org.eclipse.acceleo.model.mtl.impl.MacroInvocationImpl#getArgument <em>Argument</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class MacroInvocationImpl extends TemplateExpressionImpl implements MacroInvocation {
+ /**
+ * The cached value of the '{@link #getDefinition() <em>Definition</em>}' reference. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @see #getDefinition()
+ * @generated
+ * @ordered
+ */
+ protected Macro definition;
+
+ /**
+ * The cached value of the '{@link #getArgument() <em>Argument</em>}' containment reference list. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getArgument()
+ * @generated
+ * @ordered
+ */
+ protected EList<OCLExpression> argument;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected MacroInvocationImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return MtlPackage.Literals.MACRO_INVOCATION;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public Macro getDefinition() {
+ if (definition != null && definition.eIsProxy()) {
+ InternalEObject oldDefinition = (InternalEObject)definition;
+ definition = (Macro)eResolveProxy(oldDefinition);
+ if (definition != oldDefinition) {
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE,
+ MtlPackage.MACRO_INVOCATION__DEFINITION, oldDefinition, definition));
+ }
+ }
+ }
+ return definition;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public Macro basicGetDefinition() {
+ return definition;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setDefinition(Macro newDefinition) {
+ Macro oldDefinition = definition;
+ definition = newDefinition;
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, MtlPackage.MACRO_INVOCATION__DEFINITION,
+ oldDefinition, definition));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EList<OCLExpression> getArgument() {
+ if (argument == null) {
+ argument = new EObjectContainmentEList<OCLExpression>(OCLExpression.class, this,
+ MtlPackage.MACRO_INVOCATION__ARGUMENT);
+ }
+ return argument;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case MtlPackage.MACRO_INVOCATION__ARGUMENT:
+ return ((InternalEList<?>)getArgument()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case MtlPackage.MACRO_INVOCATION__DEFINITION:
+ if (resolve) {
+ return getDefinition();
+ }
+ return basicGetDefinition();
+ case MtlPackage.MACRO_INVOCATION__ARGUMENT:
+ return getArgument();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case MtlPackage.MACRO_INVOCATION__DEFINITION:
+ setDefinition((Macro)newValue);
+ return;
+ case MtlPackage.MACRO_INVOCATION__ARGUMENT:
+ getArgument().clear();
+ getArgument().addAll((Collection<? extends OCLExpression>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case MtlPackage.MACRO_INVOCATION__DEFINITION:
+ setDefinition((Macro)null);
+ return;
+ case MtlPackage.MACRO_INVOCATION__ARGUMENT:
+ getArgument().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case MtlPackage.MACRO_INVOCATION__DEFINITION:
+ return definition != null;
+ case MtlPackage.MACRO_INVOCATION__ARGUMENT:
+ return argument != null && !argument.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+} // MacroInvocationImpl
diff --git a/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/ModuleElementImpl.java b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/ModuleElementImpl.java
new file mode 100644
index 0000000..f6513e7
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/ModuleElementImpl.java
@@ -0,0 +1,326 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.model.mtl.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENamedElementImpl;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.acceleo.model.mtl.ModuleElement;
+import org.eclipse.acceleo.model.mtl.MtlPackage;
+import org.eclipse.acceleo.model.mtl.VisibilityKind;
+import org.eclipse.ocl.utilities.ASTNode;
+import org.eclipse.ocl.utilities.UtilitiesPackage;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object ' <em><b>Module Element</b></em>'. <!--
+ * end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.acceleo.model.mtl.impl.ModuleElementImpl#getStartPosition <em>Start Position</em>}</li>
+ * <li>{@link org.eclipse.acceleo.model.mtl.impl.ModuleElementImpl#getEndPosition <em>End Position</em>}</li>
+ * <li>{@link org.eclipse.acceleo.model.mtl.impl.ModuleElementImpl#getVisibility <em>Visibility</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class ModuleElementImpl extends ENamedElementImpl implements ModuleElement {
+ /**
+ * The default value of the '{@link #getStartPosition() <em>Start Position</em>}' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getStartPosition()
+ * @generated
+ * @ordered
+ */
+ protected static final int START_POSITION_EDEFAULT = -1;
+
+ /**
+ * The cached value of the '{@link #getStartPosition() <em>Start Position</em>}' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getStartPosition()
+ * @generated
+ * @ordered
+ */
+ protected int startPosition = START_POSITION_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getEndPosition() <em>End Position</em>}' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getEndPosition()
+ * @generated
+ * @ordered
+ */
+ protected static final int END_POSITION_EDEFAULT = -1;
+
+ /**
+ * The cached value of the '{@link #getEndPosition() <em>End Position</em>}' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getEndPosition()
+ * @generated
+ * @ordered
+ */
+ protected int endPosition = END_POSITION_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getVisibility() <em>Visibility</em>}' attribute. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @see #getVisibility()
+ * @generated
+ * @ordered
+ */
+ protected static final VisibilityKind VISIBILITY_EDEFAULT = VisibilityKind.PRIVATE;
+
+ /**
+ * The cached value of the '{@link #getVisibility() <em>Visibility</em>}' attribute. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @see #getVisibility()
+ * @generated
+ * @ordered
+ */
+ protected VisibilityKind visibility = VISIBILITY_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected ModuleElementImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return MtlPackage.Literals.MODULE_ELEMENT;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public VisibilityKind getVisibility() {
+ return visibility;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setVisibility(VisibilityKind newVisibility) {
+ VisibilityKind oldVisibility = visibility;
+ visibility = newVisibility == null ? VISIBILITY_EDEFAULT : newVisibility;
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, MtlPackage.MODULE_ELEMENT__VISIBILITY,
+ oldVisibility, visibility));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public int getStartPosition() {
+ return startPosition;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public int getEndPosition() {
+ return endPosition;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setStartPosition(int newStartPosition) {
+ int oldStartPosition = startPosition;
+ startPosition = newStartPosition;
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, MtlPackage.MODULE_ELEMENT__START_POSITION,
+ oldStartPosition, startPosition));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setEndPosition(int newEndPosition) {
+ int oldEndPosition = endPosition;
+ endPosition = newEndPosition;
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, MtlPackage.MODULE_ELEMENT__END_POSITION,
+ oldEndPosition, endPosition));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case MtlPackage.MODULE_ELEMENT__START_POSITION:
+ return new Integer(getStartPosition());
+ case MtlPackage.MODULE_ELEMENT__END_POSITION:
+ return new Integer(getEndPosition());
+ case MtlPackage.MODULE_ELEMENT__VISIBILITY:
+ return getVisibility();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case MtlPackage.MODULE_ELEMENT__START_POSITION:
+ setStartPosition(((Integer)newValue).intValue());
+ return;
+ case MtlPackage.MODULE_ELEMENT__END_POSITION:
+ setEndPosition(((Integer)newValue).intValue());
+ return;
+ case MtlPackage.MODULE_ELEMENT__VISIBILITY:
+ setVisibility((VisibilityKind)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case MtlPackage.MODULE_ELEMENT__START_POSITION:
+ setStartPosition(START_POSITION_EDEFAULT);
+ return;
+ case MtlPackage.MODULE_ELEMENT__END_POSITION:
+ setEndPosition(END_POSITION_EDEFAULT);
+ return;
+ case MtlPackage.MODULE_ELEMENT__VISIBILITY:
+ setVisibility(VISIBILITY_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case MtlPackage.MODULE_ELEMENT__START_POSITION:
+ return startPosition != START_POSITION_EDEFAULT;
+ case MtlPackage.MODULE_ELEMENT__END_POSITION:
+ return endPosition != END_POSITION_EDEFAULT;
+ case MtlPackage.MODULE_ELEMENT__VISIBILITY:
+ return visibility != VISIBILITY_EDEFAULT;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == ASTNode.class) {
+ switch (derivedFeatureID) {
+ case MtlPackage.MODULE_ELEMENT__START_POSITION:
+ return UtilitiesPackage.AST_NODE__START_POSITION;
+ case MtlPackage.MODULE_ELEMENT__END_POSITION:
+ return UtilitiesPackage.AST_NODE__END_POSITION;
+ default:
+ return -1;
+ }
+ }
+ return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
+ if (baseClass == ASTNode.class) {
+ switch (baseFeatureID) {
+ case UtilitiesPackage.AST_NODE__START_POSITION:
+ return MtlPackage.MODULE_ELEMENT__START_POSITION;
+ case UtilitiesPackage.AST_NODE__END_POSITION:
+ return MtlPackage.MODULE_ELEMENT__END_POSITION;
+ default:
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) {
+ return super.toString();
+ }
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (startPosition: "); //$NON-NLS-1$
+ result.append(startPosition);
+ result.append(", endPosition: "); //$NON-NLS-1$
+ result.append(endPosition);
+ result.append(", visibility: "); //$NON-NLS-1$
+ result.append(visibility);
+ result.append(')');
+ return result.toString();
+ }
+
+} // ModuleElementImpl
diff --git a/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/ModuleImpl.java b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/ModuleImpl.java
new file mode 100644
index 0000000..02e698e
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/ModuleImpl.java
@@ -0,0 +1,261 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.model.mtl.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.EObjectResolvingEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.acceleo.model.mtl.Module;
+import org.eclipse.acceleo.model.mtl.ModuleElement;
+import org.eclipse.acceleo.model.mtl.MtlPackage;
+import org.eclipse.acceleo.model.mtl.TypedModel;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object ' <em><b>Module</b></em>'. <!-- end-user-doc
+ * -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.acceleo.model.mtl.impl.spec.ModuleImpl#getInput <em>Input</em>}</li>
+ * <li>{@link org.eclipse.acceleo.model.mtl.impl.spec.ModuleImpl#getExtends <em>Extends</em>}</li>
+ * <li>{@link org.eclipse.acceleo.model.mtl.impl.spec.ModuleImpl#getImports <em>Imports</em>}</li>
+ * <li>{@link org.eclipse.acceleo.model.mtl.impl.spec.ModuleImpl#getOwnedModuleElement <em>Owned Module Element</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ModuleImpl extends EPackageImpl implements Module {
+ /**
+ * The cached value of the '{@link #getInput() <em>Input</em>}' containment reference list. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getInput()
+ * @generated
+ * @ordered
+ */
+ protected EList<TypedModel> input;
+
+ /**
+ * The cached value of the '{@link #getExtends() <em>Extends</em>}' reference list. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @see #getExtends()
+ * @generated
+ * @ordered
+ */
+ protected EList<Module> extends_;
+
+ /**
+ * The cached value of the '{@link #getImports() <em>Imports</em>}' reference list. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @see #getImports()
+ * @generated
+ * @ordered
+ */
+ protected EList<Module> imports;
+
+ /**
+ * The cached value of the '{@link #getOwnedModuleElement() <em>Owned Module Element</em>}' containment
+ * reference list. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getOwnedModuleElement()
+ * @generated
+ * @ordered
+ */
+ protected EList<ModuleElement> ownedModuleElement;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected ModuleImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return MtlPackage.Literals.MODULE;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EList<TypedModel> getInput() {
+ if (input == null) {
+ input = new EObjectContainmentEList<TypedModel>(TypedModel.class, this, MtlPackage.MODULE__INPUT);
+ }
+ return input;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EList<Module> getExtends() {
+ if (extends_ == null) {
+ extends_ = new EObjectResolvingEList<Module>(Module.class, this, MtlPackage.MODULE__EXTENDS);
+ }
+ return extends_;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EList<Module> getImports() {
+ if (imports == null) {
+ imports = new EObjectResolvingEList<Module>(Module.class, this, MtlPackage.MODULE__IMPORTS);
+ }
+ return imports;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EList<ModuleElement> getOwnedModuleElement() {
+ if (ownedModuleElement == null) {
+ ownedModuleElement = new EObjectContainmentEList<ModuleElement>(ModuleElement.class, this,
+ MtlPackage.MODULE__OWNED_MODULE_ELEMENT);
+ }
+ return ownedModuleElement;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case MtlPackage.MODULE__INPUT:
+ return ((InternalEList<?>)getInput()).basicRemove(otherEnd, msgs);
+ case MtlPackage.MODULE__OWNED_MODULE_ELEMENT:
+ return ((InternalEList<?>)getOwnedModuleElement()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case MtlPackage.MODULE__INPUT:
+ return getInput();
+ case MtlPackage.MODULE__EXTENDS:
+ return getExtends();
+ case MtlPackage.MODULE__IMPORTS:
+ return getImports();
+ case MtlPackage.MODULE__OWNED_MODULE_ELEMENT:
+ return getOwnedModuleElement();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case MtlPackage.MODULE__INPUT:
+ getInput().clear();
+ getInput().addAll((Collection<? extends TypedModel>)newValue);
+ return;
+ case MtlPackage.MODULE__EXTENDS:
+ getExtends().clear();
+ getExtends().addAll((Collection<? extends Module>)newValue);
+ return;
+ case MtlPackage.MODULE__IMPORTS:
+ getImports().clear();
+ getImports().addAll((Collection<? extends Module>)newValue);
+ return;
+ case MtlPackage.MODULE__OWNED_MODULE_ELEMENT:
+ getOwnedModuleElement().clear();
+ getOwnedModuleElement().addAll((Collection<? extends ModuleElement>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case MtlPackage.MODULE__INPUT:
+ getInput().clear();
+ return;
+ case MtlPackage.MODULE__EXTENDS:
+ getExtends().clear();
+ return;
+ case MtlPackage.MODULE__IMPORTS:
+ getImports().clear();
+ return;
+ case MtlPackage.MODULE__OWNED_MODULE_ELEMENT:
+ getOwnedModuleElement().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case MtlPackage.MODULE__INPUT:
+ return input != null && !input.isEmpty();
+ case MtlPackage.MODULE__EXTENDS:
+ return extends_ != null && !extends_.isEmpty();
+ case MtlPackage.MODULE__IMPORTS:
+ return imports != null && !imports.isEmpty();
+ case MtlPackage.MODULE__OWNED_MODULE_ELEMENT:
+ return ownedModuleElement != null && !ownedModuleElement.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+} // ModuleImpl
diff --git a/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/MtlFactoryImpl.java b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/MtlFactoryImpl.java
new file mode 100644
index 0000000..55910ff
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/MtlFactoryImpl.java
@@ -0,0 +1,396 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.model.mtl.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+import org.eclipse.acceleo.model.mtl.Block;
+import org.eclipse.acceleo.model.mtl.FileBlock;
+import org.eclipse.acceleo.model.mtl.ForBlock;
+import org.eclipse.acceleo.model.mtl.IfBlock;
+import org.eclipse.acceleo.model.mtl.InitSection;
+import org.eclipse.acceleo.model.mtl.LetBlock;
+import org.eclipse.acceleo.model.mtl.Macro;
+import org.eclipse.acceleo.model.mtl.MacroInvocation;
+import org.eclipse.acceleo.model.mtl.Module;
+import org.eclipse.acceleo.model.mtl.MtlFactory;
+import org.eclipse.acceleo.model.mtl.MtlPackage;
+import org.eclipse.acceleo.model.mtl.OpenModeKind;
+import org.eclipse.acceleo.model.mtl.ProtectedAreaBlock;
+import org.eclipse.acceleo.model.mtl.Query;
+import org.eclipse.acceleo.model.mtl.QueryInvocation;
+import org.eclipse.acceleo.model.mtl.Template;
+import org.eclipse.acceleo.model.mtl.TemplateExpression;
+import org.eclipse.acceleo.model.mtl.TemplateInvocation;
+import org.eclipse.acceleo.model.mtl.TraceBlock;
+import org.eclipse.acceleo.model.mtl.TypedModel;
+import org.eclipse.acceleo.model.mtl.VisibilityKind;
+import org.eclipse.acceleo.model.mtl.impl.spec.QueryInvocationSpec;
+import org.eclipse.acceleo.model.mtl.impl.spec.TemplateInvocationSpec;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model <b>Factory</b>. <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class MtlFactoryImpl extends EFactoryImpl implements MtlFactory {
+ /**
+ * Creates the default factory implementation. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public static MtlFactory init() {
+ try {
+ MtlFactory theMtlFactory = (MtlFactory)EPackage.Registry.INSTANCE
+ .getEFactory("http://www.eclipse.org/acceleo/mtl/0.8.0"); //$NON-NLS-1$
+ if (theMtlFactory != null) {
+ return theMtlFactory;
+ }
+ } catch (Exception exception) {
+ EcorePlugin.INSTANCE.log(exception);
+ }
+ return new MtlFactoryImpl();
+ }
+
+ /**
+ * Creates an instance of the factory. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public MtlFactoryImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public EObject create(EClass eClass) {
+ switch (eClass.getClassifierID()) {
+ case MtlPackage.MODULE:
+ return createModule();
+ case MtlPackage.TEMPLATE_EXPRESSION:
+ return createTemplateExpression();
+ case MtlPackage.BLOCK:
+ return createBlock();
+ case MtlPackage.INIT_SECTION:
+ return createInitSection();
+ case MtlPackage.TEMPLATE:
+ return createTemplate();
+ case MtlPackage.TEMPLATE_INVOCATION:
+ return createTemplateInvocation();
+ case MtlPackage.QUERY:
+ return createQuery();
+ case MtlPackage.QUERY_INVOCATION:
+ return createQueryInvocation();
+ case MtlPackage.PROTECTED_AREA_BLOCK:
+ return createProtectedAreaBlock();
+ case MtlPackage.FOR_BLOCK:
+ return createForBlock();
+ case MtlPackage.IF_BLOCK:
+ return createIfBlock();
+ case MtlPackage.LET_BLOCK:
+ return createLetBlock();
+ case MtlPackage.FILE_BLOCK:
+ return createFileBlock();
+ case MtlPackage.TRACE_BLOCK:
+ return createTraceBlock();
+ case MtlPackage.MACRO:
+ return createMacro();
+ case MtlPackage.MACRO_INVOCATION:
+ return createMacroInvocation();
+ case MtlPackage.TYPED_MODEL:
+ return createTypedModel();
+ default:
+ throw new IllegalArgumentException(
+ "The class '" + eClass.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Object createFromString(EDataType eDataType, String initialValue) {
+ switch (eDataType.getClassifierID()) {
+ case MtlPackage.VISIBILITY_KIND:
+ return createVisibilityKindFromString(eDataType, initialValue);
+ case MtlPackage.OPEN_MODE_KIND:
+ return createOpenModeKindFromString(eDataType, initialValue);
+ default:
+ throw new IllegalArgumentException(
+ "The datatype '" + eDataType.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public String convertToString(EDataType eDataType, Object instanceValue) {
+ switch (eDataType.getClassifierID()) {
+ case MtlPackage.VISIBILITY_KIND:
+ return convertVisibilityKindToString(eDataType, instanceValue);
+ case MtlPackage.OPEN_MODE_KIND:
+ return convertOpenModeKindToString(eDataType, instanceValue);
+ default:
+ throw new IllegalArgumentException(
+ "The datatype '" + eDataType.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public Module createModule() {
+ ModuleImpl module = new ModuleImpl();
+ return module;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public TemplateExpression createTemplateExpression() {
+ TemplateExpressionImpl templateExpression = new TemplateExpressionImpl();
+ return templateExpression;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public Block createBlock() {
+ BlockImpl block = new BlockImpl();
+ return block;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public InitSection createInitSection() {
+ InitSectionImpl initSection = new InitSectionImpl();
+ return initSection;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public Template createTemplate() {
+ TemplateImpl template = new TemplateImpl();
+ return template;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ public TemplateInvocation createTemplateInvocation() {
+ TemplateInvocationImpl templateInvocation = new TemplateInvocationSpec();
+ return templateInvocation;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public Query createQuery() {
+ QueryImpl query = new QueryImpl();
+ return query;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ public QueryInvocation createQueryInvocation() {
+ QueryInvocationImpl queryInvocation = new QueryInvocationSpec();
+ return queryInvocation;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public ProtectedAreaBlock createProtectedAreaBlock() {
+ ProtectedAreaBlockImpl protectedAreaBlock = new ProtectedAreaBlockImpl();
+ return protectedAreaBlock;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public ForBlock createForBlock() {
+ ForBlockImpl forBlock = new ForBlockImpl();
+ return forBlock;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public IfBlock createIfBlock() {
+ IfBlockImpl ifBlock = new IfBlockImpl();
+ return ifBlock;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public LetBlock createLetBlock() {
+ LetBlockImpl letBlock = new LetBlockImpl();
+ return letBlock;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public FileBlock createFileBlock() {
+ FileBlockImpl fileBlock = new FileBlockImpl();
+ return fileBlock;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public TraceBlock createTraceBlock() {
+ TraceBlockImpl traceBlock = new TraceBlockImpl();
+ return traceBlock;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public Macro createMacro() {
+ MacroImpl macro = new MacroImpl();
+ return macro;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public MacroInvocation createMacroInvocation() {
+ MacroInvocationImpl macroInvocation = new MacroInvocationImpl();
+ return macroInvocation;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public TypedModel createTypedModel() {
+ TypedModelImpl typedModel = new TypedModelImpl();
+ return typedModel;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public VisibilityKind createVisibilityKindFromString(EDataType eDataType, String initialValue) {
+ VisibilityKind result = VisibilityKind.get(initialValue);
+ if (result == null) {
+ throw new IllegalArgumentException(
+ "The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ }
+ return result;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public String convertVisibilityKindToString(EDataType eDataType, Object instanceValue) {
+ return instanceValue == null ? null : instanceValue.toString();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public OpenModeKind createOpenModeKindFromString(EDataType eDataType, String initialValue) {
+ OpenModeKind result = OpenModeKind.get(initialValue);
+ if (result == null) {
+ throw new IllegalArgumentException(
+ "The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ }
+ return result;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public String convertOpenModeKindToString(EDataType eDataType, Object instanceValue) {
+ return instanceValue == null ? null : instanceValue.toString();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public MtlPackage getMtlPackage() {
+ return (MtlPackage)getEPackage();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @deprecated
+ * @generated
+ */
+ @Deprecated
+ public static MtlPackage getPackage() {
+ return MtlPackage.eINSTANCE;
+ }
+
+} // MtlFactoryImpl
diff --git a/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/MtlPackageImpl.java b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/MtlPackageImpl.java
new file mode 100644
index 0000000..032180b
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/MtlPackageImpl.java
@@ -0,0 +1,1309 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.model.mtl.impl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+import org.eclipse.acceleo.model.mtl.Block;
+import org.eclipse.acceleo.model.mtl.FileBlock;
+import org.eclipse.acceleo.model.mtl.ForBlock;
+import org.eclipse.acceleo.model.mtl.IfBlock;
+import org.eclipse.acceleo.model.mtl.InitSection;
+import org.eclipse.acceleo.model.mtl.LetBlock;
+import org.eclipse.acceleo.model.mtl.Macro;
+import org.eclipse.acceleo.model.mtl.MacroInvocation;
+import org.eclipse.acceleo.model.mtl.Module;
+import org.eclipse.acceleo.model.mtl.ModuleElement;
+import org.eclipse.acceleo.model.mtl.MtlFactory;
+import org.eclipse.acceleo.model.mtl.MtlPackage;
+import org.eclipse.acceleo.model.mtl.OpenModeKind;
+import org.eclipse.acceleo.model.mtl.ProtectedAreaBlock;
+import org.eclipse.acceleo.model.mtl.Query;
+import org.eclipse.acceleo.model.mtl.QueryInvocation;
+import org.eclipse.acceleo.model.mtl.Template;
+import org.eclipse.acceleo.model.mtl.TemplateExpression;
+import org.eclipse.acceleo.model.mtl.TemplateInvocation;
+import org.eclipse.acceleo.model.mtl.TraceBlock;
+import org.eclipse.acceleo.model.mtl.TypedModel;
+import org.eclipse.acceleo.model.mtl.VisibilityKind;
+import org.eclipse.ocl.ecore.EcorePackage;
+import org.eclipse.ocl.utilities.UtilitiesPackage;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model <b>Package</b>. <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class MtlPackageImpl extends EPackageImpl implements MtlPackage {
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private EClass moduleEClass = null;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private EClass moduleElementEClass = null;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private EClass templateExpressionEClass = null;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private EClass blockEClass = null;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private EClass initSectionEClass = null;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private EClass templateEClass = null;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private EClass templateInvocationEClass = null;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private EClass queryEClass = null;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private EClass queryInvocationEClass = null;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private EClass protectedAreaBlockEClass = null;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private EClass forBlockEClass = null;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private EClass ifBlockEClass = null;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private EClass letBlockEClass = null;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private EClass fileBlockEClass = null;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private EClass traceBlockEClass = null;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private EClass macroEClass = null;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private EClass macroInvocationEClass = null;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private EClass typedModelEClass = null;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private EEnum visibilityKindEEnum = null;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private EEnum openModeKindEEnum = null;
+
+ /**
+ * Creates an instance of the model <b>Package</b>, registered with
+ * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package package URI value.
+ * <p>
+ * Note: the correct way to create the package is via the static factory method {@link #init init()},
+ * which also performs initialization of the package, or returns the registered package, if one already
+ * exists. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.emf.ecore.EPackage.Registry
+ * @see org.eclipse.acceleo.model.mtl.MtlPackage#eNS_URI
+ * @see #init()
+ * @generated
+ */
+ private MtlPackageImpl() {
+ super(eNS_URI, MtlFactory.eINSTANCE);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private static boolean isInited = false;
+
+ /**
+ * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it
+ * depends. Simple dependencies are satisfied by calling this method on all dependent packages before
+ * doing anything else. This method drives initialization for interdependent packages directly, in
+ * parallel with this package, itself.
+ * <p>
+ * Of this package and its interdependencies, all packages which have not yet been registered by their URI
+ * values are first created and registered. The packages are then initialized in two steps: meta-model
+ * objects for all of the packages are created before any are initialized, since one package's meta-model
+ * objects may refer to those of another.
+ * <p>
+ * Invocation of this method will not affect any packages that have already been initialized. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #eNS_URI
+ * @see #createPackageContents()
+ * @see #initializePackageContents()
+ * @generated
+ */
+ public static MtlPackage init() {
+ if (isInited) {
+ return (MtlPackage)EPackage.Registry.INSTANCE.getEPackage(MtlPackage.eNS_URI);
+ }
+
+ // Obtain or create and register package
+ MtlPackageImpl theMtlPackage = (MtlPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(eNS_URI) instanceof MtlPackageImpl ? EPackage.Registry.INSTANCE
+ .getEPackage(eNS_URI)
+ : new MtlPackageImpl());
+
+ isInited = true;
+
+ // Initialize simple dependencies
+ EcorePackage.eINSTANCE.eClass();
+
+ // Create package meta-data objects
+ theMtlPackage.createPackageContents();
+
+ // Initialize created meta-data
+ theMtlPackage.initializePackageContents();
+
+ // Mark meta-data to indicate it can't be changed
+ theMtlPackage.freeze();
+
+ return theMtlPackage;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EClass getModule() {
+ return moduleEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getModule_Input() {
+ return (EReference)moduleEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getModule_Extends() {
+ return (EReference)moduleEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getModule_Imports() {
+ return (EReference)moduleEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getModule_OwnedModuleElement() {
+ return (EReference)moduleEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EClass getModuleElement() {
+ return moduleElementEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EAttribute getModuleElement_Visibility() {
+ return (EAttribute)moduleElementEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EClass getTemplateExpression() {
+ return templateExpressionEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EClass getBlock() {
+ return blockEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getBlock_Init() {
+ return (EReference)blockEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getBlock_Body() {
+ return (EReference)blockEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EClass getInitSection() {
+ return initSectionEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getInitSection_Variable() {
+ return (EReference)initSectionEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EClass getTemplate() {
+ return templateEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getTemplate_Overrides() {
+ return (EReference)templateEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getTemplate_Parameter() {
+ return (EReference)templateEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getTemplate_Guard() {
+ return (EReference)templateEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EAttribute getTemplate_Main() {
+ return (EAttribute)templateEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EClass getTemplateInvocation() {
+ return templateInvocationEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getTemplateInvocation_Definition() {
+ return (EReference)templateInvocationEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getTemplateInvocation_Argument() {
+ return (EReference)templateInvocationEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getTemplateInvocation_Before() {
+ return (EReference)templateInvocationEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getTemplateInvocation_After() {
+ return (EReference)templateInvocationEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getTemplateInvocation_Each() {
+ return (EReference)templateInvocationEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EAttribute getTemplateInvocation_Super() {
+ return (EAttribute)templateInvocationEClass.getEStructuralFeatures().get(5);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EClass getQuery() {
+ return queryEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getQuery_Parameter() {
+ return (EReference)queryEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getQuery_Expression() {
+ return (EReference)queryEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getQuery_Type() {
+ return (EReference)queryEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EClass getQueryInvocation() {
+ return queryInvocationEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getQueryInvocation_Definition() {
+ return (EReference)queryInvocationEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getQueryInvocation_Argument() {
+ return (EReference)queryInvocationEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EClass getProtectedAreaBlock() {
+ return protectedAreaBlockEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getProtectedAreaBlock_Marker() {
+ return (EReference)protectedAreaBlockEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EClass getForBlock() {
+ return forBlockEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getForBlock_LoopVariable() {
+ return (EReference)forBlockEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getForBlock_IterSet() {
+ return (EReference)forBlockEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getForBlock_Before() {
+ return (EReference)forBlockEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getForBlock_Each() {
+ return (EReference)forBlockEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getForBlock_After() {
+ return (EReference)forBlockEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getForBlock_Guard() {
+ return (EReference)forBlockEClass.getEStructuralFeatures().get(5);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EClass getIfBlock() {
+ return ifBlockEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getIfBlock_IfExpr() {
+ return (EReference)ifBlockEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getIfBlock_Else() {
+ return (EReference)ifBlockEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getIfBlock_ElseIf() {
+ return (EReference)ifBlockEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EClass getLetBlock() {
+ return letBlockEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getLetBlock_ElseLet() {
+ return (EReference)letBlockEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getLetBlock_Else() {
+ return (EReference)letBlockEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getLetBlock_LetVariable() {
+ return (EReference)letBlockEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EClass getFileBlock() {
+ return fileBlockEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EAttribute getFileBlock_OpenMode() {
+ return (EAttribute)fileBlockEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getFileBlock_FileUrl() {
+ return (EReference)fileBlockEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getFileBlock_UniqId() {
+ return (EReference)fileBlockEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EClass getTraceBlock() {
+ return traceBlockEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getTraceBlock_ModelElement() {
+ return (EReference)traceBlockEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EClass getMacro() {
+ return macroEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getMacro_Parameter() {
+ return (EReference)macroEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getMacro_Type() {
+ return (EReference)macroEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EClass getMacroInvocation() {
+ return macroInvocationEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getMacroInvocation_Definition() {
+ return (EReference)macroInvocationEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getMacroInvocation_Argument() {
+ return (EReference)macroInvocationEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EClass getTypedModel() {
+ return typedModelEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getTypedModel_TakesTypesFrom() {
+ return (EReference)typedModelEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EEnum getVisibilityKind() {
+ return visibilityKindEEnum;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EEnum getOpenModeKind() {
+ return openModeKindEEnum;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public MtlFactory getMtlFactory() {
+ return (MtlFactory)getEFactoryInstance();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private boolean isCreated = false;
+
+ /**
+ * Creates the meta-model objects for the package. This method is guarded to have no affect on any
+ * invocation but its first. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void createPackageContents() {
+ if (isCreated) {
+ return;
+ }
+ isCreated = true;
+
+ // Create classes and their features
+ moduleEClass = createEClass(MODULE);
+ createEReference(moduleEClass, MODULE__INPUT);
+ createEReference(moduleEClass, MODULE__EXTENDS);
+ createEReference(moduleEClass, MODULE__IMPORTS);
+ createEReference(moduleEClass, MODULE__OWNED_MODULE_ELEMENT);
+
+ moduleElementEClass = createEClass(MODULE_ELEMENT);
+ createEAttribute(moduleElementEClass, MODULE_ELEMENT__VISIBILITY);
+
+ templateExpressionEClass = createEClass(TEMPLATE_EXPRESSION);
+
+ blockEClass = createEClass(BLOCK);
+ createEReference(blockEClass, BLOCK__INIT);
+ createEReference(blockEClass, BLOCK__BODY);
+
+ initSectionEClass = createEClass(INIT_SECTION);
+ createEReference(initSectionEClass, INIT_SECTION__VARIABLE);
+
+ templateEClass = createEClass(TEMPLATE);
+ createEReference(templateEClass, TEMPLATE__OVERRIDES);
+ createEReference(templateEClass, TEMPLATE__PARAMETER);
+ createEReference(templateEClass, TEMPLATE__GUARD);
+ createEAttribute(templateEClass, TEMPLATE__MAIN);
+
+ templateInvocationEClass = createEClass(TEMPLATE_INVOCATION);
+ createEReference(templateInvocationEClass, TEMPLATE_INVOCATION__DEFINITION);
+ createEReference(templateInvocationEClass, TEMPLATE_INVOCATION__ARGUMENT);
+ createEReference(templateInvocationEClass, TEMPLATE_INVOCATION__BEFORE);
+ createEReference(templateInvocationEClass, TEMPLATE_INVOCATION__AFTER);
+ createEReference(templateInvocationEClass, TEMPLATE_INVOCATION__EACH);
+ createEAttribute(templateInvocationEClass, TEMPLATE_INVOCATION__SUPER);
+
+ queryEClass = createEClass(QUERY);
+ createEReference(queryEClass, QUERY__PARAMETER);
+ createEReference(queryEClass, QUERY__EXPRESSION);
+ createEReference(queryEClass, QUERY__TYPE);
+
+ queryInvocationEClass = createEClass(QUERY_INVOCATION);
+ createEReference(queryInvocationEClass, QUERY_INVOCATION__DEFINITION);
+ createEReference(queryInvocationEClass, QUERY_INVOCATION__ARGUMENT);
+
+ protectedAreaBlockEClass = createEClass(PROTECTED_AREA_BLOCK);
+ createEReference(protectedAreaBlockEClass, PROTECTED_AREA_BLOCK__MARKER);
+
+ forBlockEClass = createEClass(FOR_BLOCK);
+ createEReference(forBlockEClass, FOR_BLOCK__LOOP_VARIABLE);
+ createEReference(forBlockEClass, FOR_BLOCK__ITER_SET);
+ createEReference(forBlockEClass, FOR_BLOCK__BEFORE);
+ createEReference(forBlockEClass, FOR_BLOCK__EACH);
+ createEReference(forBlockEClass, FOR_BLOCK__AFTER);
+ createEReference(forBlockEClass, FOR_BLOCK__GUARD);
+
+ ifBlockEClass = createEClass(IF_BLOCK);
+ createEReference(ifBlockEClass, IF_BLOCK__IF_EXPR);
+ createEReference(ifBlockEClass, IF_BLOCK__ELSE);
+ createEReference(ifBlockEClass, IF_BLOCK__ELSE_IF);
+
+ letBlockEClass = createEClass(LET_BLOCK);
+ createEReference(letBlockEClass, LET_BLOCK__ELSE_LET);
+ createEReference(letBlockEClass, LET_BLOCK__ELSE);
+ createEReference(letBlockEClass, LET_BLOCK__LET_VARIABLE);
+
+ fileBlockEClass = createEClass(FILE_BLOCK);
+ createEAttribute(fileBlockEClass, FILE_BLOCK__OPEN_MODE);
+ createEReference(fileBlockEClass, FILE_BLOCK__FILE_URL);
+ createEReference(fileBlockEClass, FILE_BLOCK__UNIQ_ID);
+
+ traceBlockEClass = createEClass(TRACE_BLOCK);
+ createEReference(traceBlockEClass, TRACE_BLOCK__MODEL_ELEMENT);
+
+ macroEClass = createEClass(MACRO);
+ createEReference(macroEClass, MACRO__PARAMETER);
+ createEReference(macroEClass, MACRO__TYPE);
+
+ macroInvocationEClass = createEClass(MACRO_INVOCATION);
+ createEReference(macroInvocationEClass, MACRO_INVOCATION__DEFINITION);
+ createEReference(macroInvocationEClass, MACRO_INVOCATION__ARGUMENT);
+
+ typedModelEClass = createEClass(TYPED_MODEL);
+ createEReference(typedModelEClass, TYPED_MODEL__TAKES_TYPES_FROM);
+
+ // Create enums
+ visibilityKindEEnum = createEEnum(VISIBILITY_KIND);
+ openModeKindEEnum = createEEnum(OPEN_MODE_KIND);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private boolean isInitialized = false;
+
+ /**
+ * Complete the initialization of the package and its meta-model. This method is guarded to have no affect
+ * on any invocation but its first. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void initializePackageContents() {
+ if (isInitialized) {
+ return;
+ }
+ isInitialized = true;
+
+ // Initialize package
+ setName(eNAME);
+ setNsPrefix(eNS_PREFIX);
+ setNsURI(eNS_URI);
+
+ // Obtain other dependent packages
+ org.eclipse.emf.ecore.EcorePackage theEcorePackage_1 = (org.eclipse.emf.ecore.EcorePackage)EPackage.Registry.INSTANCE
+ .getEPackage(org.eclipse.emf.ecore.EcorePackage.eNS_URI);
+ UtilitiesPackage theUtilitiesPackage = (UtilitiesPackage)EPackage.Registry.INSTANCE
+ .getEPackage(UtilitiesPackage.eNS_URI);
+ EcorePackage theEcorePackage = (EcorePackage)EPackage.Registry.INSTANCE
+ .getEPackage(EcorePackage.eNS_URI);
+
+ // Create type parameters
+
+ // Set bounds for type parameters
+
+ // Add supertypes to classes
+ moduleEClass.getESuperTypes().add(theEcorePackage_1.getEPackage());
+ moduleElementEClass.getESuperTypes().add(theEcorePackage_1.getENamedElement());
+ moduleElementEClass.getESuperTypes().add(theUtilitiesPackage.getASTNode());
+ templateExpressionEClass.getESuperTypes().add(theEcorePackage.getOCLExpression());
+ templateExpressionEClass.getESuperTypes().add(theUtilitiesPackage.getASTNode());
+ blockEClass.getESuperTypes().add(this.getTemplateExpression());
+ initSectionEClass.getESuperTypes().add(theUtilitiesPackage.getASTNode());
+ templateEClass.getESuperTypes().add(this.getBlock());
+ templateEClass.getESuperTypes().add(this.getModuleElement());
+ templateInvocationEClass.getESuperTypes().add(this.getTemplateExpression());
+ queryEClass.getESuperTypes().add(this.getModuleElement());
+ queryInvocationEClass.getESuperTypes().add(this.getTemplateExpression());
+ protectedAreaBlockEClass.getESuperTypes().add(this.getBlock());
+ forBlockEClass.getESuperTypes().add(this.getBlock());
+ ifBlockEClass.getESuperTypes().add(this.getBlock());
+ letBlockEClass.getESuperTypes().add(this.getBlock());
+ fileBlockEClass.getESuperTypes().add(this.getBlock());
+ traceBlockEClass.getESuperTypes().add(this.getBlock());
+ macroEClass.getESuperTypes().add(this.getBlock());
+ macroEClass.getESuperTypes().add(this.getModuleElement());
+ macroInvocationEClass.getESuperTypes().add(this.getTemplateExpression());
+
+ // Initialize classes and features; add operations and parameters
+ initEClass(moduleEClass, Module.class,
+ "Module", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEReference(
+ getModule_Input(),
+ this.getTypedModel(),
+ null,
+ "input", null, 1, -1, Module.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(
+ getModule_Extends(),
+ this.getModule(),
+ null,
+ "extends", null, 0, -1, Module.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(
+ getModule_Imports(),
+ this.getModule(),
+ null,
+ "imports", null, 0, -1, Module.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(
+ getModule_OwnedModuleElement(),
+ this.getModuleElement(),
+ null,
+ "ownedModuleElement", null, 1, -1, Module.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(moduleElementEClass, ModuleElement.class,
+ "ModuleElement", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEAttribute(
+ getModuleElement_Visibility(),
+ this.getVisibilityKind(),
+ "visibility", null, 1, 1, ModuleElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(templateExpressionEClass, TemplateExpression.class,
+ "TemplateExpression", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+ initEClass(blockEClass, Block.class,
+ "Block", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEReference(
+ getBlock_Init(),
+ this.getInitSection(),
+ null,
+ "init", null, 0, 1, Block.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(
+ getBlock_Body(),
+ theEcorePackage.getOCLExpression(),
+ null,
+ "body", null, 0, -1, Block.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(initSectionEClass, InitSection.class,
+ "InitSection", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEReference(
+ getInitSection_Variable(),
+ theEcorePackage.getVariable(),
+ null,
+ "variable", null, 1, -1, InitSection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(templateEClass, Template.class,
+ "Template", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEReference(
+ getTemplate_Overrides(),
+ this.getTemplate(),
+ null,
+ "overrides", null, 0, -1, Template.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(
+ getTemplate_Parameter(),
+ theEcorePackage.getVariable(),
+ null,
+ "parameter", null, 0, -1, Template.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(
+ getTemplate_Guard(),
+ theEcorePackage.getOCLExpression(),
+ null,
+ "guard", null, 0, 1, Template.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEAttribute(
+ getTemplate_Main(),
+ ecorePackage.getEBoolean(),
+ "main", "false", 0, 1, Template.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$ //$NON-NLS-2$
+
+ initEClass(templateInvocationEClass, TemplateInvocation.class,
+ "TemplateInvocation", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEReference(
+ getTemplateInvocation_Definition(),
+ this.getTemplate(),
+ null,
+ "definition", null, 1, 1, TemplateInvocation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(
+ getTemplateInvocation_Argument(),
+ theEcorePackage.getOCLExpression(),
+ null,
+ "argument", null, 0, -1, TemplateInvocation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(
+ getTemplateInvocation_Before(),
+ theEcorePackage.getOCLExpression(),
+ null,
+ "before", null, 0, 1, TemplateInvocation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(
+ getTemplateInvocation_After(),
+ theEcorePackage.getOCLExpression(),
+ null,
+ "after", null, 0, 1, TemplateInvocation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(
+ getTemplateInvocation_Each(),
+ theEcorePackage.getOCLExpression(),
+ null,
+ "each", null, 0, 1, TemplateInvocation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEAttribute(
+ getTemplateInvocation_Super(),
+ theEcorePackage_1.getEBoolean(),
+ "super", "false", 0, 1, TemplateInvocation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$ //$NON-NLS-2$
+
+ initEClass(queryEClass, Query.class,
+ "Query", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEReference(
+ getQuery_Parameter(),
+ theEcorePackage.getVariable(),
+ null,
+ "parameter", null, 0, -1, Query.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(
+ getQuery_Expression(),
+ theEcorePackage.getOCLExpression(),
+ null,
+ "expression", null, 1, 1, Query.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(
+ getQuery_Type(),
+ theEcorePackage_1.getEClassifier(),
+ null,
+ "type", null, 1, 1, Query.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(queryInvocationEClass, QueryInvocation.class,
+ "QueryInvocation", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEReference(
+ getQueryInvocation_Definition(),
+ this.getQuery(),
+ null,
+ "definition", null, 1, 1, QueryInvocation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(
+ getQueryInvocation_Argument(),
+ theEcorePackage.getOCLExpression(),
+ null,
+ "argument", null, 0, -1, QueryInvocation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(protectedAreaBlockEClass, ProtectedAreaBlock.class,
+ "ProtectedAreaBlock", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEReference(
+ getProtectedAreaBlock_Marker(),
+ theEcorePackage.getOCLExpression(),
+ null,
+ "marker", null, 1, 1, ProtectedAreaBlock.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(forBlockEClass, ForBlock.class,
+ "ForBlock", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEReference(
+ getForBlock_LoopVariable(),
+ theEcorePackage.getVariable(),
+ null,
+ "loopVariable", null, 1, 1, ForBlock.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(
+ getForBlock_IterSet(),
+ theEcorePackage.getOCLExpression(),
+ null,
+ "iterSet", null, 1, 1, ForBlock.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(
+ getForBlock_Before(),
+ theEcorePackage.getOCLExpression(),
+ null,
+ "before", null, 0, 1, ForBlock.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(
+ getForBlock_Each(),
+ theEcorePackage.getOCLExpression(),
+ null,
+ "each", null, 0, 1, ForBlock.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(
+ getForBlock_After(),
+ theEcorePackage.getOCLExpression(),
+ null,
+ "after", null, 0, 1, ForBlock.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(
+ getForBlock_Guard(),
+ theEcorePackage.getOCLExpression(),
+ null,
+ "guard", null, 0, 1, ForBlock.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(ifBlockEClass, IfBlock.class,
+ "IfBlock", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEReference(
+ getIfBlock_IfExpr(),
+ theEcorePackage.getOCLExpression(),
+ null,
+ "ifExpr", null, 1, 1, IfBlock.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(
+ getIfBlock_Else(),
+ this.getBlock(),
+ null,
+ "else", null, 0, 1, IfBlock.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(
+ getIfBlock_ElseIf(),
+ this.getIfBlock(),
+ null,
+ "elseIf", null, 0, -1, IfBlock.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(letBlockEClass, LetBlock.class,
+ "LetBlock", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEReference(
+ getLetBlock_ElseLet(),
+ this.getLetBlock(),
+ null,
+ "elseLet", null, 0, -1, LetBlock.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(
+ getLetBlock_Else(),
+ this.getBlock(),
+ null,
+ "else", null, 0, 1, LetBlock.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(
+ getLetBlock_LetVariable(),
+ theEcorePackage.getVariable(),
+ null,
+ "letVariable", null, 1, 1, LetBlock.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(fileBlockEClass, FileBlock.class,
+ "FileBlock", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEAttribute(
+ getFileBlock_OpenMode(),
+ this.getOpenModeKind(),
+ "openMode", null, 1, 1, FileBlock.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(
+ getFileBlock_FileUrl(),
+ theEcorePackage.getOCLExpression(),
+ null,
+ "fileUrl", null, 1, 1, FileBlock.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(
+ getFileBlock_UniqId(),
+ theEcorePackage.getOCLExpression(),
+ null,
+ "uniqId", null, 0, 1, FileBlock.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(traceBlockEClass, TraceBlock.class,
+ "TraceBlock", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEReference(
+ getTraceBlock_ModelElement(),
+ theEcorePackage.getOCLExpression(),
+ null,
+ "modelElement", null, 1, 1, TraceBlock.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(macroEClass, Macro.class,
+ "Macro", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEReference(
+ getMacro_Parameter(),
+ theEcorePackage.getVariable(),
+ null,
+ "parameter", null, 0, -1, Macro.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(
+ getMacro_Type(),
+ theEcorePackage_1.getEClassifier(),
+ null,
+ "type", null, 1, 1, Macro.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(macroInvocationEClass, MacroInvocation.class,
+ "MacroInvocation", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEReference(
+ getMacroInvocation_Definition(),
+ this.getMacro(),
+ null,
+ "definition", null, 1, 1, MacroInvocation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(
+ getMacroInvocation_Argument(),
+ theEcorePackage.getOCLExpression(),
+ null,
+ "argument", null, 0, -1, MacroInvocation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(typedModelEClass, TypedModel.class,
+ "TypedModel", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEReference(
+ getTypedModel_TakesTypesFrom(),
+ theEcorePackage_1.getEPackage(),
+ null,
+ "takesTypesFrom", null, 1, -1, TypedModel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ // Initialize enums and add enum literals
+ initEEnum(visibilityKindEEnum, VisibilityKind.class, "VisibilityKind"); //$NON-NLS-1$
+ addEEnumLiteral(visibilityKindEEnum, VisibilityKind.PRIVATE);
+ addEEnumLiteral(visibilityKindEEnum, VisibilityKind.PROTECTED);
+ addEEnumLiteral(visibilityKindEEnum, VisibilityKind.PUBLIC);
+
+ initEEnum(openModeKindEEnum, OpenModeKind.class, "OpenModeKind"); //$NON-NLS-1$
+ addEEnumLiteral(openModeKindEEnum, OpenModeKind.APPEND);
+ addEEnumLiteral(openModeKindEEnum, OpenModeKind.OVER_WRITE);
+
+ // Create resource
+ createResource(eNS_URI);
+ }
+
+} // MtlPackageImpl
diff --git a/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/ProtectedAreaBlockImpl.java b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/ProtectedAreaBlockImpl.java
new file mode 100644
index 0000000..fcea3c2
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/ProtectedAreaBlockImpl.java
@@ -0,0 +1,191 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.model.mtl.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.acceleo.model.mtl.MtlPackage;
+import org.eclipse.acceleo.model.mtl.ProtectedAreaBlock;
+import org.eclipse.ocl.ecore.OCLExpression;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object ' <em><b>Protected Area Block</b></em>'. <!--
+ * end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.acceleo.model.mtl.impl.ProtectedAreaBlockImpl#getMarker <em>Marker</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ProtectedAreaBlockImpl extends BlockImpl implements ProtectedAreaBlock {
+ /**
+ * The cached value of the '{@link #getMarker() <em>Marker</em>}' containment reference. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getMarker()
+ * @generated
+ * @ordered
+ */
+ protected OCLExpression marker;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected ProtectedAreaBlockImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return MtlPackage.Literals.PROTECTED_AREA_BLOCK;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public OCLExpression getMarker() {
+ return marker;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public NotificationChain basicSetMarker(OCLExpression newMarker, NotificationChain msgs) {
+ OCLExpression oldMarker = marker;
+ marker = newMarker;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
+ MtlPackage.PROTECTED_AREA_BLOCK__MARKER, oldMarker, newMarker);
+ if (msgs == null) {
+ msgs = notification;
+ } else {
+ msgs.add(notification);
+ }
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setMarker(OCLExpression newMarker) {
+ if (newMarker != marker) {
+ NotificationChain msgs = null;
+ if (marker != null) {
+ msgs = ((InternalEObject)marker).eInverseRemove(this, EOPPOSITE_FEATURE_BASE
+ - MtlPackage.PROTECTED_AREA_BLOCK__MARKER, null, msgs);
+ }
+ if (newMarker != null) {
+ msgs = ((InternalEObject)newMarker).eInverseAdd(this, EOPPOSITE_FEATURE_BASE
+ - MtlPackage.PROTECTED_AREA_BLOCK__MARKER, null, msgs);
+ }
+ msgs = basicSetMarker(newMarker, msgs);
+ if (msgs != null) {
+ msgs.dispatch();
+ }
+ } else if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, MtlPackage.PROTECTED_AREA_BLOCK__MARKER,
+ newMarker, newMarker));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case MtlPackage.PROTECTED_AREA_BLOCK__MARKER:
+ return basicSetMarker(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case MtlPackage.PROTECTED_AREA_BLOCK__MARKER:
+ return getMarker();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case MtlPackage.PROTECTED_AREA_BLOCK__MARKER:
+ setMarker((OCLExpression)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case MtlPackage.PROTECTED_AREA_BLOCK__MARKER:
+ setMarker((OCLExpression)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case MtlPackage.PROTECTED_AREA_BLOCK__MARKER:
+ return marker != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} // ProtectedAreaBlockImpl
diff --git a/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/QueryImpl.java b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/QueryImpl.java
new file mode 100644
index 0000000..8b66f1a
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/QueryImpl.java
@@ -0,0 +1,301 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.model.mtl.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EClassifier;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.acceleo.model.mtl.MtlPackage;
+import org.eclipse.acceleo.model.mtl.Query;
+import org.eclipse.ocl.ecore.OCLExpression;
+import org.eclipse.ocl.ecore.Variable;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '<em><b>Query</b></em>'. <!-- end-user-doc
+ * -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.acceleo.model.mtl.impl.QueryImpl#getParameter <em>Parameter</em>}</li>
+ * <li>{@link org.eclipse.acceleo.model.mtl.impl.QueryImpl#getExpression <em>Expression</em>}</li>
+ * <li>{@link org.eclipse.acceleo.model.mtl.impl.QueryImpl#getType <em>Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class QueryImpl extends ModuleElementImpl implements Query {
+ /**
+ * The cached value of the '{@link #getParameter() <em>Parameter</em>}' containment reference list. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getParameter()
+ * @generated
+ * @ordered
+ */
+ protected EList<Variable> parameter;
+
+ /**
+ * The cached value of the '{@link #getExpression() <em>Expression</em>}' containment reference. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getExpression()
+ * @generated
+ * @ordered
+ */
+ protected OCLExpression expression;
+
+ /**
+ * The cached value of the '{@link #getType() <em>Type</em>}' reference. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @see #getType()
+ * @generated
+ * @ordered
+ */
+ protected EClassifier type;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected QueryImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return MtlPackage.Literals.QUERY;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EList<Variable> getParameter() {
+ if (parameter == null) {
+ parameter = new EObjectContainmentEList<Variable>(Variable.class, this,
+ MtlPackage.QUERY__PARAMETER);
+ }
+ return parameter;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public OCLExpression getExpression() {
+ return expression;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public NotificationChain basicSetExpression(OCLExpression newExpression, NotificationChain msgs) {
+ OCLExpression oldExpression = expression;
+ expression = newExpression;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
+ MtlPackage.QUERY__EXPRESSION, oldExpression, newExpression);
+ if (msgs == null) {
+ msgs = notification;
+ } else {
+ msgs.add(notification);
+ }
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setExpression(OCLExpression newExpression) {
+ if (newExpression != expression) {
+ NotificationChain msgs = null;
+ if (expression != null) {
+ msgs = ((InternalEObject)expression).eInverseRemove(this, EOPPOSITE_FEATURE_BASE
+ - MtlPackage.QUERY__EXPRESSION, null, msgs);
+ }
+ if (newExpression != null) {
+ msgs = ((InternalEObject)newExpression).eInverseAdd(this, EOPPOSITE_FEATURE_BASE
+ - MtlPackage.QUERY__EXPRESSION, null, msgs);
+ }
+ msgs = basicSetExpression(newExpression, msgs);
+ if (msgs != null) {
+ msgs.dispatch();
+ }
+ } else if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, MtlPackage.QUERY__EXPRESSION,
+ newExpression, newExpression));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EClassifier getType() {
+ if (type != null && type.eIsProxy()) {
+ InternalEObject oldType = (InternalEObject)type;
+ type = (EClassifier)eResolveProxy(oldType);
+ if (type != oldType) {
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, MtlPackage.QUERY__TYPE,
+ oldType, type));
+ }
+ }
+ }
+ return type;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EClassifier basicGetType() {
+ return type;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setType(EClassifier newType) {
+ EClassifier oldType = type;
+ type = newType;
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, MtlPackage.QUERY__TYPE, oldType, type));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case MtlPackage.QUERY__PARAMETER:
+ return ((InternalEList<?>)getParameter()).basicRemove(otherEnd, msgs);
+ case MtlPackage.QUERY__EXPRESSION:
+ return basicSetExpression(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case MtlPackage.QUERY__PARAMETER:
+ return getParameter();
+ case MtlPackage.QUERY__EXPRESSION:
+ return getExpression();
+ case MtlPackage.QUERY__TYPE:
+ if (resolve) {
+ return getType();
+ }
+ return basicGetType();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case MtlPackage.QUERY__PARAMETER:
+ getParameter().clear();
+ getParameter().addAll((Collection<? extends Variable>)newValue);
+ return;
+ case MtlPackage.QUERY__EXPRESSION:
+ setExpression((OCLExpression)newValue);
+ return;
+ case MtlPackage.QUERY__TYPE:
+ setType((EClassifier)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case MtlPackage.QUERY__PARAMETER:
+ getParameter().clear();
+ return;
+ case MtlPackage.QUERY__EXPRESSION:
+ setExpression((OCLExpression)null);
+ return;
+ case MtlPackage.QUERY__TYPE:
+ setType((EClassifier)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case MtlPackage.QUERY__PARAMETER:
+ return parameter != null && !parameter.isEmpty();
+ case MtlPackage.QUERY__EXPRESSION:
+ return expression != null;
+ case MtlPackage.QUERY__TYPE:
+ return type != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} // QueryImpl
diff --git a/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/QueryInvocationImpl.java b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/QueryInvocationImpl.java
new file mode 100644
index 0000000..752338b
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/QueryInvocationImpl.java
@@ -0,0 +1,223 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.model.mtl.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.acceleo.model.mtl.MtlPackage;
+import org.eclipse.acceleo.model.mtl.Query;
+import org.eclipse.acceleo.model.mtl.QueryInvocation;
+import org.eclipse.ocl.ecore.OCLExpression;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object ' <em><b>Query Invocation</b></em>'. <!--
+ * end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.acceleo.model.mtl.impl.QueryInvocationImpl#getDefinition <em>Definition</em>}</li>
+ * <li>{@link org.eclipse.acceleo.model.mtl.impl.QueryInvocationImpl#getArgument <em>Argument</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class QueryInvocationImpl extends TemplateExpressionImpl implements QueryInvocation {
+ /**
+ * The cached value of the '{@link #getDefinition() <em>Definition</em>}' reference. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @see #getDefinition()
+ * @generated
+ * @ordered
+ */
+ protected Query definition;
+
+ /**
+ * The cached value of the '{@link #getArgument() <em>Argument</em>}' containment reference list. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getArgument()
+ * @generated
+ * @ordered
+ */
+ protected EList<OCLExpression> argument;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected QueryInvocationImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return MtlPackage.Literals.QUERY_INVOCATION;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public Query getDefinition() {
+ if (definition != null && definition.eIsProxy()) {
+ InternalEObject oldDefinition = (InternalEObject)definition;
+ definition = (Query)eResolveProxy(oldDefinition);
+ if (definition != oldDefinition) {
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE,
+ MtlPackage.QUERY_INVOCATION__DEFINITION, oldDefinition, definition));
+ }
+ }
+ }
+ return definition;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public Query basicGetDefinition() {
+ return definition;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setDefinition(Query newDefinition) {
+ Query oldDefinition = definition;
+ definition = newDefinition;
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, MtlPackage.QUERY_INVOCATION__DEFINITION,
+ oldDefinition, definition));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EList<OCLExpression> getArgument() {
+ if (argument == null) {
+ argument = new EObjectContainmentEList<OCLExpression>(OCLExpression.class, this,
+ MtlPackage.QUERY_INVOCATION__ARGUMENT);
+ }
+ return argument;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case MtlPackage.QUERY_INVOCATION__ARGUMENT:
+ return ((InternalEList<?>)getArgument()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case MtlPackage.QUERY_INVOCATION__DEFINITION:
+ if (resolve) {
+ return getDefinition();
+ }
+ return basicGetDefinition();
+ case MtlPackage.QUERY_INVOCATION__ARGUMENT:
+ return getArgument();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case MtlPackage.QUERY_INVOCATION__DEFINITION:
+ setDefinition((Query)newValue);
+ return;
+ case MtlPackage.QUERY_INVOCATION__ARGUMENT:
+ getArgument().clear();
+ getArgument().addAll((Collection<? extends OCLExpression>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case MtlPackage.QUERY_INVOCATION__DEFINITION:
+ setDefinition((Query)null);
+ return;
+ case MtlPackage.QUERY_INVOCATION__ARGUMENT:
+ getArgument().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case MtlPackage.QUERY_INVOCATION__DEFINITION:
+ return definition != null;
+ case MtlPackage.QUERY_INVOCATION__ARGUMENT:
+ return argument != null && !argument.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+} // QueryInvocationImpl
diff --git a/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/TemplateExpressionImpl.java b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/TemplateExpressionImpl.java
new file mode 100644
index 0000000..96fbec9
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/TemplateExpressionImpl.java
@@ -0,0 +1,46 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.model.mtl.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.acceleo.model.mtl.MtlPackage;
+import org.eclipse.acceleo.model.mtl.TemplateExpression;
+import org.eclipse.ocl.ecore.impl.OCLExpressionImpl;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object ' <em><b>Template Expression</b></em>'. <!--
+ * end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class TemplateExpressionImpl extends OCLExpressionImpl implements TemplateExpression {
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected TemplateExpressionImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return MtlPackage.Literals.TEMPLATE_EXPRESSION;
+ }
+
+} // TemplateExpressionImpl
diff --git a/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/TemplateImpl.java b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/TemplateImpl.java
new file mode 100644
index 0000000..0a71ec2
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/TemplateImpl.java
@@ -0,0 +1,453 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.model.mtl.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.EObjectResolvingEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.acceleo.model.mtl.ModuleElement;
+import org.eclipse.acceleo.model.mtl.MtlPackage;
+import org.eclipse.acceleo.model.mtl.Template;
+import org.eclipse.acceleo.model.mtl.VisibilityKind;
+import org.eclipse.ocl.ecore.OCLExpression;
+import org.eclipse.ocl.ecore.Variable;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object ' <em><b>Template</b></em>'. <!--
+ * end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.acceleo.model.mtl.impl.TemplateImpl#getVisibility <em>Visibility</em>}</li>
+ * <li>{@link org.eclipse.acceleo.model.mtl.impl.TemplateImpl#getOverrides <em>Overrides</em>}</li>
+ * <li>{@link org.eclipse.acceleo.model.mtl.impl.TemplateImpl#getParameter <em>Parameter</em>}</li>
+ * <li>{@link org.eclipse.acceleo.model.mtl.impl.TemplateImpl#getGuard <em>Guard</em>}</li>
+ * <li>{@link org.eclipse.acceleo.model.mtl.impl.TemplateImpl#isMain <em>Main</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class TemplateImpl extends BlockImpl implements Template {
+ /**
+ * The default value of the '{@link #getVisibility() <em>Visibility</em>}' attribute. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @see #getVisibility()
+ * @generated
+ * @ordered
+ */
+ protected static final VisibilityKind VISIBILITY_EDEFAULT = VisibilityKind.PRIVATE;
+
+ /**
+ * The cached value of the '{@link #getVisibility() <em>Visibility</em>}' attribute. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @see #getVisibility()
+ * @generated
+ * @ordered
+ */
+ protected VisibilityKind visibility = VISIBILITY_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getOverrides() <em>Overrides</em>}' reference list. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getOverrides()
+ * @generated
+ * @ordered
+ */
+ protected EList<Template> overrides;
+
+ /**
+ * The cached value of the '{@link #getParameter() <em>Parameter</em>}' containment reference list. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getParameter()
+ * @generated
+ * @ordered
+ */
+ protected EList<Variable> parameter;
+
+ /**
+ * The cached value of the '{@link #getGuard() <em>Guard</em>}' containment reference. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @see #getGuard()
+ * @generated
+ * @ordered
+ */
+ protected OCLExpression guard;
+
+ /**
+ * The default value of the '{@link #isMain() <em>Main</em>}' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @see #isMain()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean MAIN_EDEFAULT = false;
+
+ /**
+ * The cached value of the '{@link #isMain() <em>Main</em>}' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @see #isMain()
+ * @generated
+ * @ordered
+ */
+ protected boolean main = MAIN_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected TemplateImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return MtlPackage.Literals.TEMPLATE;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public VisibilityKind getVisibility() {
+ return visibility;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setVisibility(VisibilityKind newVisibility) {
+ VisibilityKind oldVisibility = visibility;
+ visibility = newVisibility == null ? VISIBILITY_EDEFAULT : newVisibility;
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, MtlPackage.TEMPLATE__VISIBILITY,
+ oldVisibility, visibility));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EList<Template> getOverrides() {
+ if (overrides == null) {
+ overrides = new EObjectResolvingEList<Template>(Template.class, this,
+ MtlPackage.TEMPLATE__OVERRIDES);
+ }
+ return overrides;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EList<Variable> getParameter() {
+ if (parameter == null) {
+ parameter = new EObjectContainmentEList<Variable>(Variable.class, this,
+ MtlPackage.TEMPLATE__PARAMETER);
+ }
+ return parameter;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public OCLExpression getGuard() {
+ return guard;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public NotificationChain basicSetGuard(OCLExpression newGuard, NotificationChain msgs) {
+ OCLExpression oldGuard = guard;
+ guard = newGuard;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
+ MtlPackage.TEMPLATE__GUARD, oldGuard, newGuard);
+ if (msgs == null) {
+ msgs = notification;
+ } else {
+ msgs.add(notification);
+ }
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setGuard(OCLExpression newGuard) {
+ if (newGuard != guard) {
+ NotificationChain msgs = null;
+ if (guard != null) {
+ msgs = ((InternalEObject)guard).eInverseRemove(this, EOPPOSITE_FEATURE_BASE
+ - MtlPackage.TEMPLATE__GUARD, null, msgs);
+ }
+ if (newGuard != null) {
+ msgs = ((InternalEObject)newGuard).eInverseAdd(this, EOPPOSITE_FEATURE_BASE
+ - MtlPackage.TEMPLATE__GUARD, null, msgs);
+ }
+ msgs = basicSetGuard(newGuard, msgs);
+ if (msgs != null) {
+ msgs.dispatch();
+ }
+ } else if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, MtlPackage.TEMPLATE__GUARD, newGuard,
+ newGuard));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public boolean isMain() {
+ return main;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setMain(boolean newMain) {
+ boolean oldMain = main;
+ main = newMain;
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, MtlPackage.TEMPLATE__MAIN, oldMain, main));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case MtlPackage.TEMPLATE__PARAMETER:
+ return ((InternalEList<?>)getParameter()).basicRemove(otherEnd, msgs);
+ case MtlPackage.TEMPLATE__GUARD:
+ return basicSetGuard(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case MtlPackage.TEMPLATE__VISIBILITY:
+ return getVisibility();
+ case MtlPackage.TEMPLATE__OVERRIDES:
+ return getOverrides();
+ case MtlPackage.TEMPLATE__PARAMETER:
+ return getParameter();
+ case MtlPackage.TEMPLATE__GUARD:
+ return getGuard();
+ case MtlPackage.TEMPLATE__MAIN:
+ return isMain() ? Boolean.TRUE : Boolean.FALSE;
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case MtlPackage.TEMPLATE__VISIBILITY:
+ setVisibility((VisibilityKind)newValue);
+ return;
+ case MtlPackage.TEMPLATE__OVERRIDES:
+ getOverrides().clear();
+ getOverrides().addAll((Collection<? extends Template>)newValue);
+ return;
+ case MtlPackage.TEMPLATE__PARAMETER:
+ getParameter().clear();
+ getParameter().addAll((Collection<? extends Variable>)newValue);
+ return;
+ case MtlPackage.TEMPLATE__GUARD:
+ setGuard((OCLExpression)newValue);
+ return;
+ case MtlPackage.TEMPLATE__MAIN:
+ setMain(((Boolean)newValue).booleanValue());
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case MtlPackage.TEMPLATE__VISIBILITY:
+ setVisibility(VISIBILITY_EDEFAULT);
+ return;
+ case MtlPackage.TEMPLATE__OVERRIDES:
+ getOverrides().clear();
+ return;
+ case MtlPackage.TEMPLATE__PARAMETER:
+ getParameter().clear();
+ return;
+ case MtlPackage.TEMPLATE__GUARD:
+ setGuard((OCLExpression)null);
+ return;
+ case MtlPackage.TEMPLATE__MAIN:
+ setMain(MAIN_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case MtlPackage.TEMPLATE__VISIBILITY:
+ return visibility != VISIBILITY_EDEFAULT;
+ case MtlPackage.TEMPLATE__OVERRIDES:
+ return overrides != null && !overrides.isEmpty();
+ case MtlPackage.TEMPLATE__PARAMETER:
+ return parameter != null && !parameter.isEmpty();
+ case MtlPackage.TEMPLATE__GUARD:
+ return guard != null;
+ case MtlPackage.TEMPLATE__MAIN:
+ return main != MAIN_EDEFAULT;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == ModuleElement.class) {
+ switch (derivedFeatureID) {
+ case MtlPackage.TEMPLATE__VISIBILITY:
+ return MtlPackage.MODULE_ELEMENT__VISIBILITY;
+ default:
+ return -1;
+ }
+ }
+ return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
+ if (baseClass == ModuleElement.class) {
+ switch (baseFeatureID) {
+ case MtlPackage.MODULE_ELEMENT__VISIBILITY:
+ return MtlPackage.TEMPLATE__VISIBILITY;
+ default:
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) {
+ return super.toString();
+ }
+
+ final StringBuffer result = new StringBuffer(/* super.toString() */);
+ // result.append(" (visibility: ");
+ // result.append(visibility);
+ // result.append(')');
+ result.append(getVisibility());
+ result.append(' ').append(getName());
+ result.append('(');
+ for (final Variable var : getParameter()) {
+ result.append(var.getType().getName());
+ if (var != getParameter().get(getParameter().size() - 1)) {
+ result.append(", "); //$NON-NLS-1$
+ }
+ }
+ result.append(')');
+ if (getOverrides().size() > 0) {
+ result.append(' ').append("overrides").append(' '); //$NON-NLS-1$
+ for (final Template overriden : getOverrides()) {
+ result.append(overriden.getName());
+ if (overriden != getOverrides().get(getOverrides().size() - 1)) {
+ result.append(", "); //$NON-NLS-1$
+ }
+ }
+ }
+ return result.toString();
+ }
+
+} // TemplateImpl
diff --git a/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/TemplateInvocationImpl.java b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/TemplateInvocationImpl.java
new file mode 100644
index 0000000..91e9ead
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/TemplateInvocationImpl.java
@@ -0,0 +1,529 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.model.mtl.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.acceleo.model.mtl.MtlPackage;
+import org.eclipse.acceleo.model.mtl.Template;
+import org.eclipse.acceleo.model.mtl.TemplateInvocation;
+import org.eclipse.ocl.ecore.OCLExpression;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object ' <em><b>Template Invocation</b></em>'. <!--
+ * end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.acceleo.model.mtl.impl.TemplateInvocationImpl#getDefinition <em>Definition</em>}</li>
+ * <li>{@link org.eclipse.acceleo.model.mtl.impl.TemplateInvocationImpl#getArgument <em>Argument</em>}</li>
+ * <li>{@link org.eclipse.acceleo.model.mtl.impl.TemplateInvocationImpl#getBefore <em>Before</em>}</li>
+ * <li>{@link org.eclipse.acceleo.model.mtl.impl.TemplateInvocationImpl#getAfter <em>After</em>}</li>
+ * <li>{@link org.eclipse.acceleo.model.mtl.impl.TemplateInvocationImpl#getEach <em>Each</em>}</li>
+ * <li>{@link org.eclipse.acceleo.model.mtl.impl.TemplateInvocationImpl#isSuper <em>Super</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class TemplateInvocationImpl extends TemplateExpressionImpl implements TemplateInvocation {
+ /**
+ * The cached value of the '{@link #getDefinition() <em>Definition</em>}' reference. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @see #getDefinition()
+ * @generated
+ * @ordered
+ */
+ protected Template definition;
+
+ /**
+ * The cached value of the '{@link #getArgument() <em>Argument</em>}' containment reference list. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getArgument()
+ * @generated
+ * @ordered
+ */
+ protected EList<OCLExpression> argument;
+
+ /**
+ * The cached value of the '{@link #getBefore() <em>Before</em>}' containment reference. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getBefore()
+ * @generated
+ * @ordered
+ */
+ protected OCLExpression before;
+
+ /**
+ * The cached value of the '{@link #getAfter() <em>After</em>}' containment reference. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @see #getAfter()
+ * @generated
+ * @ordered
+ */
+ protected OCLExpression after;
+
+ /**
+ * The cached value of the '{@link #getEach() <em>Each</em>}' containment reference. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @see #getEach()
+ * @generated
+ * @ordered
+ */
+ protected OCLExpression each;
+
+ /**
+ * The default value of the '{@link #isSuper() <em>Super</em>}' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @see #isSuper()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean SUPER_EDEFAULT = false;
+
+ /**
+ * The cached value of the '{@link #isSuper() <em>Super</em>}' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @see #isSuper()
+ * @generated
+ * @ordered
+ */
+ protected boolean super_ = SUPER_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected TemplateInvocationImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return MtlPackage.Literals.TEMPLATE_INVOCATION;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public Template getDefinition() {
+ if (definition != null && definition.eIsProxy()) {
+ InternalEObject oldDefinition = (InternalEObject)definition;
+ definition = (Template)eResolveProxy(oldDefinition);
+ if (definition != oldDefinition) {
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE,
+ MtlPackage.TEMPLATE_INVOCATION__DEFINITION, oldDefinition, definition));
+ }
+ }
+ }
+ return definition;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public Template basicGetDefinition() {
+ return definition;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setDefinition(Template newDefinition) {
+ Template oldDefinition = definition;
+ definition = newDefinition;
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, MtlPackage.TEMPLATE_INVOCATION__DEFINITION,
+ oldDefinition, definition));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EList<OCLExpression> getArgument() {
+ if (argument == null) {
+ argument = new EObjectContainmentEList<OCLExpression>(OCLExpression.class, this,
+ MtlPackage.TEMPLATE_INVOCATION__ARGUMENT);
+ }
+ return argument;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public OCLExpression getBefore() {
+ return before;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public NotificationChain basicSetBefore(OCLExpression newBefore, NotificationChain msgs) {
+ OCLExpression oldBefore = before;
+ before = newBefore;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
+ MtlPackage.TEMPLATE_INVOCATION__BEFORE, oldBefore, newBefore);
+ if (msgs == null) {
+ msgs = notification;
+ } else {
+ msgs.add(notification);
+ }
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setBefore(OCLExpression newBefore) {
+ if (newBefore != before) {
+ NotificationChain msgs = null;
+ if (before != null) {
+ msgs = ((InternalEObject)before).eInverseRemove(this, EOPPOSITE_FEATURE_BASE
+ - MtlPackage.TEMPLATE_INVOCATION__BEFORE, null, msgs);
+ }
+ if (newBefore != null) {
+ msgs = ((InternalEObject)newBefore).eInverseAdd(this, EOPPOSITE_FEATURE_BASE
+ - MtlPackage.TEMPLATE_INVOCATION__BEFORE, null, msgs);
+ }
+ msgs = basicSetBefore(newBefore, msgs);
+ if (msgs != null) {
+ msgs.dispatch();
+ }
+ } else if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, MtlPackage.TEMPLATE_INVOCATION__BEFORE,
+ newBefore, newBefore));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public OCLExpression getAfter() {
+ return after;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public NotificationChain basicSetAfter(OCLExpression newAfter, NotificationChain msgs) {
+ OCLExpression oldAfter = after;
+ after = newAfter;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
+ MtlPackage.TEMPLATE_INVOCATION__AFTER, oldAfter, newAfter);
+ if (msgs == null) {
+ msgs = notification;
+ } else {
+ msgs.add(notification);
+ }
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setAfter(OCLExpression newAfter) {
+ if (newAfter != after) {
+ NotificationChain msgs = null;
+ if (after != null) {
+ msgs = ((InternalEObject)after).eInverseRemove(this, EOPPOSITE_FEATURE_BASE
+ - MtlPackage.TEMPLATE_INVOCATION__AFTER, null, msgs);
+ }
+ if (newAfter != null) {
+ msgs = ((InternalEObject)newAfter).eInverseAdd(this, EOPPOSITE_FEATURE_BASE
+ - MtlPackage.TEMPLATE_INVOCATION__AFTER, null, msgs);
+ }
+ msgs = basicSetAfter(newAfter, msgs);
+ if (msgs != null) {
+ msgs.dispatch();
+ }
+ } else if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, MtlPackage.TEMPLATE_INVOCATION__AFTER,
+ newAfter, newAfter));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public OCLExpression getEach() {
+ return each;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public NotificationChain basicSetEach(OCLExpression newEach, NotificationChain msgs) {
+ OCLExpression oldEach = each;
+ each = newEach;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
+ MtlPackage.TEMPLATE_INVOCATION__EACH, oldEach, newEach);
+ if (msgs == null) {
+ msgs = notification;
+ } else {
+ msgs.add(notification);
+ }
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setEach(OCLExpression newEach) {
+ if (newEach != each) {
+ NotificationChain msgs = null;
+ if (each != null) {
+ msgs = ((InternalEObject)each).eInverseRemove(this, EOPPOSITE_FEATURE_BASE
+ - MtlPackage.TEMPLATE_INVOCATION__EACH, null, msgs);
+ }
+ if (newEach != null) {
+ msgs = ((InternalEObject)newEach).eInverseAdd(this, EOPPOSITE_FEATURE_BASE
+ - MtlPackage.TEMPLATE_INVOCATION__EACH, null, msgs);
+ }
+ msgs = basicSetEach(newEach, msgs);
+ if (msgs != null) {
+ msgs.dispatch();
+ }
+ } else if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, MtlPackage.TEMPLATE_INVOCATION__EACH,
+ newEach, newEach));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public boolean isSuper() {
+ return super_;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setSuper(boolean newSuper) {
+ boolean oldSuper = super_;
+ super_ = newSuper;
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, MtlPackage.TEMPLATE_INVOCATION__SUPER,
+ oldSuper, super_));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case MtlPackage.TEMPLATE_INVOCATION__ARGUMENT:
+ return ((InternalEList<?>)getArgument()).basicRemove(otherEnd, msgs);
+ case MtlPackage.TEMPLATE_INVOCATION__BEFORE:
+ return basicSetBefore(null, msgs);
+ case MtlPackage.TEMPLATE_INVOCATION__AFTER:
+ return basicSetAfter(null, msgs);
+ case MtlPackage.TEMPLATE_INVOCATION__EACH:
+ return basicSetEach(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case MtlPackage.TEMPLATE_INVOCATION__DEFINITION:
+ if (resolve) {
+ return getDefinition();
+ }
+ return basicGetDefinition();
+ case MtlPackage.TEMPLATE_INVOCATION__ARGUMENT:
+ return getArgument();
+ case MtlPackage.TEMPLATE_INVOCATION__BEFORE:
+ return getBefore();
+ case MtlPackage.TEMPLATE_INVOCATION__AFTER:
+ return getAfter();
+ case MtlPackage.TEMPLATE_INVOCATION__EACH:
+ return getEach();
+ case MtlPackage.TEMPLATE_INVOCATION__SUPER:
+ return isSuper() ? Boolean.TRUE : Boolean.FALSE;
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case MtlPackage.TEMPLATE_INVOCATION__DEFINITION:
+ setDefinition((Template)newValue);
+ return;
+ case MtlPackage.TEMPLATE_INVOCATION__ARGUMENT:
+ getArgument().clear();
+ getArgument().addAll((Collection<? extends OCLExpression>)newValue);
+ return;
+ case MtlPackage.TEMPLATE_INVOCATION__BEFORE:
+ setBefore((OCLExpression)newValue);
+ return;
+ case MtlPackage.TEMPLATE_INVOCATION__AFTER:
+ setAfter((OCLExpression)newValue);
+ return;
+ case MtlPackage.TEMPLATE_INVOCATION__EACH:
+ setEach((OCLExpression)newValue);
+ return;
+ case MtlPackage.TEMPLATE_INVOCATION__SUPER:
+ setSuper(((Boolean)newValue).booleanValue());
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case MtlPackage.TEMPLATE_INVOCATION__DEFINITION:
+ setDefinition((Template)null);
+ return;
+ case MtlPackage.TEMPLATE_INVOCATION__ARGUMENT:
+ getArgument().clear();
+ return;
+ case MtlPackage.TEMPLATE_INVOCATION__BEFORE:
+ setBefore((OCLExpression)null);
+ return;
+ case MtlPackage.TEMPLATE_INVOCATION__AFTER:
+ setAfter((OCLExpression)null);
+ return;
+ case MtlPackage.TEMPLATE_INVOCATION__EACH:
+ setEach((OCLExpression)null);
+ return;
+ case MtlPackage.TEMPLATE_INVOCATION__SUPER:
+ setSuper(SUPER_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case MtlPackage.TEMPLATE_INVOCATION__DEFINITION:
+ return definition != null;
+ case MtlPackage.TEMPLATE_INVOCATION__ARGUMENT:
+ return argument != null && !argument.isEmpty();
+ case MtlPackage.TEMPLATE_INVOCATION__BEFORE:
+ return before != null;
+ case MtlPackage.TEMPLATE_INVOCATION__AFTER:
+ return after != null;
+ case MtlPackage.TEMPLATE_INVOCATION__EACH:
+ return each != null;
+ case MtlPackage.TEMPLATE_INVOCATION__SUPER:
+ return super_ != SUPER_EDEFAULT;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) {
+ return super.toString();
+ }
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (super: "); //$NON-NLS-1$
+ result.append(super_);
+ result.append(')');
+ return result.toString();
+ }
+
+} // TemplateInvocationImpl
diff --git a/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/TraceBlockImpl.java b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/TraceBlockImpl.java
new file mode 100644
index 0000000..af36714
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/TraceBlockImpl.java
@@ -0,0 +1,191 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.model.mtl.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.acceleo.model.mtl.MtlPackage;
+import org.eclipse.acceleo.model.mtl.TraceBlock;
+import org.eclipse.ocl.ecore.OCLExpression;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object ' <em><b>Trace Block</b></em>'. <!--
+ * end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.acceleo.model.mtl.impl.TraceBlockImpl#getModelElement <em>Model Element</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class TraceBlockImpl extends BlockImpl implements TraceBlock {
+ /**
+ * The cached value of the '{@link #getModelElement() <em>Model Element</em>}' containment reference. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getModelElement()
+ * @generated
+ * @ordered
+ */
+ protected OCLExpression modelElement;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected TraceBlockImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return MtlPackage.Literals.TRACE_BLOCK;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public OCLExpression getModelElement() {
+ return modelElement;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public NotificationChain basicSetModelElement(OCLExpression newModelElement, NotificationChain msgs) {
+ OCLExpression oldModelElement = modelElement;
+ modelElement = newModelElement;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
+ MtlPackage.TRACE_BLOCK__MODEL_ELEMENT, oldModelElement, newModelElement);
+ if (msgs == null) {
+ msgs = notification;
+ } else {
+ msgs.add(notification);
+ }
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setModelElement(OCLExpression newModelElement) {
+ if (newModelElement != modelElement) {
+ NotificationChain msgs = null;
+ if (modelElement != null) {
+ msgs = ((InternalEObject)modelElement).eInverseRemove(this, EOPPOSITE_FEATURE_BASE
+ - MtlPackage.TRACE_BLOCK__MODEL_ELEMENT, null, msgs);
+ }
+ if (newModelElement != null) {
+ msgs = ((InternalEObject)newModelElement).eInverseAdd(this, EOPPOSITE_FEATURE_BASE
+ - MtlPackage.TRACE_BLOCK__MODEL_ELEMENT, null, msgs);
+ }
+ msgs = basicSetModelElement(newModelElement, msgs);
+ if (msgs != null) {
+ msgs.dispatch();
+ }
+ } else if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, MtlPackage.TRACE_BLOCK__MODEL_ELEMENT,
+ newModelElement, newModelElement));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case MtlPackage.TRACE_BLOCK__MODEL_ELEMENT:
+ return basicSetModelElement(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case MtlPackage.TRACE_BLOCK__MODEL_ELEMENT:
+ return getModelElement();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case MtlPackage.TRACE_BLOCK__MODEL_ELEMENT:
+ setModelElement((OCLExpression)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case MtlPackage.TRACE_BLOCK__MODEL_ELEMENT:
+ setModelElement((OCLExpression)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case MtlPackage.TRACE_BLOCK__MODEL_ELEMENT:
+ return modelElement != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} // TraceBlockImpl
diff --git a/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/TypedModelImpl.java b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/TypedModelImpl.java
new file mode 100644
index 0000000..bf48829
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/impl/TypedModelImpl.java
@@ -0,0 +1,138 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.model.mtl.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+import org.eclipse.emf.ecore.util.EObjectResolvingEList;
+import org.eclipse.acceleo.model.mtl.MtlPackage;
+import org.eclipse.acceleo.model.mtl.TypedModel;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object ' <em><b>Typed Model</b></em>'. <!--
+ * end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.acceleo.model.mtl.impl.TypedModelImpl#getTakesTypesFrom <em>Takes Types From</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class TypedModelImpl extends EObjectImpl implements TypedModel {
+ /**
+ * The cached value of the '{@link #getTakesTypesFrom() <em>Takes Types From</em>}' reference list. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getTakesTypesFrom()
+ * @generated
+ * @ordered
+ */
+ protected EList<EPackage> takesTypesFrom;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected TypedModelImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return MtlPackage.Literals.TYPED_MODEL;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EList<EPackage> getTakesTypesFrom() {
+ if (takesTypesFrom == null) {
+ takesTypesFrom = new EObjectResolvingEList<EPackage>(EPackage.class, this,
+ MtlPackage.TYPED_MODEL__TAKES_TYPES_FROM);
+ }
+ return takesTypesFrom;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case MtlPackage.TYPED_MODEL__TAKES_TYPES_FROM:
+ return getTakesTypesFrom();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case MtlPackage.TYPED_MODEL__TAKES_TYPES_FROM:
+ getTakesTypesFrom().clear();
+ getTakesTypesFrom().addAll((Collection<? extends EPackage>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case MtlPackage.TYPED_MODEL__TAKES_TYPES_FROM:
+ getTakesTypesFrom().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case MtlPackage.TYPED_MODEL__TAKES_TYPES_FROM:
+ return takesTypesFrom != null && !takesTypesFrom.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+} // TypedModelImpl
diff --git a/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/util/MtlAdapterFactory.java b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/util/MtlAdapterFactory.java
new file mode 100644
index 0000000..e404079
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/util/MtlAdapterFactory.java
@@ -0,0 +1,627 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.model.mtl.util;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+import org.eclipse.emf.ecore.EModelElement;
+import org.eclipse.emf.ecore.ENamedElement;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.ETypedElement;
+import org.eclipse.acceleo.model.mtl.Block;
+import org.eclipse.acceleo.model.mtl.FileBlock;
+import org.eclipse.acceleo.model.mtl.ForBlock;
+import org.eclipse.acceleo.model.mtl.IfBlock;
+import org.eclipse.acceleo.model.mtl.InitSection;
+import org.eclipse.acceleo.model.mtl.LetBlock;
+import org.eclipse.acceleo.model.mtl.Macro;
+import org.eclipse.acceleo.model.mtl.MacroInvocation;
+import org.eclipse.acceleo.model.mtl.Module;
+import org.eclipse.acceleo.model.mtl.ModuleElement;
+import org.eclipse.acceleo.model.mtl.MtlPackage;
+import org.eclipse.acceleo.model.mtl.ProtectedAreaBlock;
+import org.eclipse.acceleo.model.mtl.Query;
+import org.eclipse.acceleo.model.mtl.QueryInvocation;
+import org.eclipse.acceleo.model.mtl.Template;
+import org.eclipse.acceleo.model.mtl.TemplateExpression;
+import org.eclipse.acceleo.model.mtl.TemplateInvocation;
+import org.eclipse.acceleo.model.mtl.TraceBlock;
+import org.eclipse.acceleo.model.mtl.TypedModel;
+import org.eclipse.ocl.expressions.OCLExpression;
+import org.eclipse.ocl.utilities.ASTNode;
+import org.eclipse.ocl.utilities.TypedElement;
+import org.eclipse.ocl.utilities.Visitable;
+
+/**
+ * <!-- begin-user-doc --> The <b>Adapter Factory</b> for the model. It provides an adapter
+ * <code>createXXX</code> method for each class of the model. <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.model.mtl.MtlPackage
+ * @generated
+ */
+public class MtlAdapterFactory extends AdapterFactoryImpl {
+ /**
+ * The cached model package. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected static MtlPackage modelPackage;
+
+ /**
+ * Creates an instance of the adapter factory. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public MtlAdapterFactory() {
+ if (modelPackage == null) {
+ modelPackage = MtlPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Returns whether this factory is applicable for the type of the object. <!-- begin-user-doc --> This
+ * implementation returns <code>true</code> if the object is either the model's package or is an instance
+ * object of the model. <!-- end-user-doc -->
+ *
+ * @return whether this factory is applicable for the type of the object.
+ * @generated
+ */
+ @Override
+ public boolean isFactoryForType(Object object) {
+ if (object == modelPackage) {
+ return true;
+ }
+ if (object instanceof EObject) {
+ return ((EObject)object).eClass().getEPackage() == modelPackage;
+ }
+ return false;
+ }
+
+ /**
+ * The switch that delegates to the <code>createXXX</code> methods. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ */
+ protected MtlSwitch<Adapter> modelSwitch = new MtlSwitch<Adapter>() {
+ @Override
+ public Adapter caseModule(Module object) {
+ return createModuleAdapter();
+ }
+
+ @Override
+ public Adapter caseModuleElement(ModuleElement object) {
+ return createModuleElementAdapter();
+ }
+
+ @Override
+ public Adapter caseTemplateExpression(TemplateExpression object) {
+ return createTemplateExpressionAdapter();
+ }
+
+ @Override
+ public Adapter caseBlock(Block object) {
+ return createBlockAdapter();
+ }
+
+ @Override
+ public Adapter caseInitSection(InitSection object) {
+ return createInitSectionAdapter();
+ }
+
+ @Override
+ public Adapter caseTemplate(Template object) {
+ return createTemplateAdapter();
+ }
+
+ @Override
+ public Adapter caseTemplateInvocation(TemplateInvocation object) {
+ return createTemplateInvocationAdapter();
+ }
+
+ @Override
+ public Adapter caseQuery(Query object) {
+ return createQueryAdapter();
+ }
+
+ @Override
+ public Adapter caseQueryInvocation(QueryInvocation object) {
+ return createQueryInvocationAdapter();
+ }
+
+ @Override
+ public Adapter caseProtectedAreaBlock(ProtectedAreaBlock object) {
+ return createProtectedAreaBlockAdapter();
+ }
+
+ @Override
+ public Adapter caseForBlock(ForBlock object) {
+ return createForBlockAdapter();
+ }
+
+ @Override
+ public Adapter caseIfBlock(IfBlock object) {
+ return createIfBlockAdapter();
+ }
+
+ @Override
+ public Adapter caseLetBlock(LetBlock object) {
+ return createLetBlockAdapter();
+ }
+
+ @Override
+ public Adapter caseFileBlock(FileBlock object) {
+ return createFileBlockAdapter();
+ }
+
+ @Override
+ public Adapter caseTraceBlock(TraceBlock object) {
+ return createTraceBlockAdapter();
+ }
+
+ @Override
+ public Adapter caseMacro(Macro object) {
+ return createMacroAdapter();
+ }
+
+ @Override
+ public Adapter caseMacroInvocation(MacroInvocation object) {
+ return createMacroInvocationAdapter();
+ }
+
+ @Override
+ public Adapter caseTypedModel(TypedModel object) {
+ return createTypedModelAdapter();
+ }
+
+ @Override
+ public Adapter caseEModelElement(EModelElement object) {
+ return createEModelElementAdapter();
+ }
+
+ @Override
+ public Adapter caseENamedElement(ENamedElement object) {
+ return createENamedElementAdapter();
+ }
+
+ @Override
+ public Adapter caseEPackage(EPackage object) {
+ return createEPackageAdapter();
+ }
+
+ @Override
+ public Adapter caseASTNode(ASTNode object) {
+ return createASTNodeAdapter();
+ }
+
+ @Override
+ public Adapter caseETypedElement(ETypedElement object) {
+ return createETypedElementAdapter();
+ }
+
+ @Override
+ public <C> Adapter caseTypedElement(TypedElement<C> object) {
+ return createTypedElementAdapter();
+ }
+
+ @Override
+ public Adapter caseVisitable(Visitable object) {
+ return createVisitableAdapter();
+ }
+
+ @Override
+ public <C> Adapter caseOCLExpression(OCLExpression<C> object) {
+ return createOCLExpressionAdapter();
+ }
+
+ @Override
+ public Adapter caseOCLExpression_1(org.eclipse.ocl.ecore.OCLExpression object) {
+ return createOCLExpression_1Adapter();
+ }
+
+ @Override
+ public Adapter defaultCase(EObject object) {
+ return createEObjectAdapter();
+ }
+ };
+
+ /**
+ * Creates an adapter for the <code>target</code>. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @param target
+ * the object to adapt.
+ * @return the adapter for the <code>target</code>.
+ * @generated
+ */
+ @Override
+ public Adapter createAdapter(Notifier target) {
+ return modelSwitch.doSwitch((EObject)target);
+ }
+
+ /**
+ * Creates a new adapter for an object of class ' {@link org.eclipse.acceleo.model.mtl.Module <em>Module</em>}'. <!--
+ * begin-user-doc --> This default implementation returns null so that we can easily ignore cases; it's
+ * useful to ignore a case when inheritance will catch all the cases anyway. <!-- end-user-doc -->
+ *
+ * @return the new adapter.
+ * @see org.eclipse.acceleo.model.mtl.Module
+ * @generated
+ */
+ public Adapter createModuleAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.acceleo.model.mtl.ModuleElement
+ * <em>Module Element</em>}'. <!-- begin-user-doc --> This default implementation returns null so that we
+ * can easily ignore cases; it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ *
+ * @return the new adapter.
+ * @see org.eclipse.acceleo.model.mtl.ModuleElement
+ * @generated
+ */
+ public Adapter createModuleElementAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.acceleo.model.mtl.TemplateExpression
+ * <em>Template Expression</em>}'. <!-- begin-user-doc --> This default implementation returns null so
+ * that we can easily ignore cases; it's useful to ignore a case when inheritance will catch all the cases
+ * anyway. <!-- end-user-doc -->
+ *
+ * @return the new adapter.
+ * @see org.eclipse.acceleo.model.mtl.TemplateExpression
+ * @generated
+ */
+ public Adapter createTemplateExpressionAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class ' {@link org.eclipse.acceleo.model.mtl.Block <em>Block</em>}'. <!--
+ * begin-user-doc --> This default implementation returns null so that we can easily ignore cases; it's
+ * useful to ignore a case when inheritance will catch all the cases anyway. <!-- end-user-doc -->
+ *
+ * @return the new adapter.
+ * @see org.eclipse.acceleo.model.mtl.Block
+ * @generated
+ */
+ public Adapter createBlockAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.acceleo.model.mtl.InitSection <em>Init Section</em>}
+ * '. <!-- begin-user-doc --> This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway. <!-- end-user-doc -->
+ *
+ * @return the new adapter.
+ * @see org.eclipse.acceleo.model.mtl.InitSection
+ * @generated
+ */
+ public Adapter createInitSectionAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.acceleo.model.mtl.Template <em>Template</em>}'. <!--
+ * begin-user-doc --> This default implementation returns null so that we can easily ignore cases; it's
+ * useful to ignore a case when inheritance will catch all the cases anyway. <!-- end-user-doc -->
+ *
+ * @return the new adapter.
+ * @see org.eclipse.acceleo.model.mtl.Template
+ * @generated
+ */
+ public Adapter createTemplateAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.acceleo.model.mtl.TemplateInvocation
+ * <em>Template Invocation</em>}'. <!-- begin-user-doc --> This default implementation returns null so
+ * that we can easily ignore cases; it's useful to ignore a case when inheritance will catch all the cases
+ * anyway. <!-- end-user-doc -->
+ *
+ * @return the new adapter.
+ * @see org.eclipse.acceleo.model.mtl.TemplateInvocation
+ * @generated
+ */
+ public Adapter createTemplateInvocationAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class ' {@link org.eclipse.acceleo.model.mtl.Query <em>Query</em>}'. <!--
+ * begin-user-doc --> This default implementation returns null so that we can easily ignore cases; it's
+ * useful to ignore a case when inheritance will catch all the cases anyway. <!-- end-user-doc -->
+ *
+ * @return the new adapter.
+ * @see org.eclipse.acceleo.model.mtl.Query
+ * @generated
+ */
+ public Adapter createQueryAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.acceleo.model.mtl.QueryInvocation
+ * <em>Query Invocation</em>}'. <!-- begin-user-doc --> This default implementation returns null so that
+ * we can easily ignore cases; it's useful to ignore a case when inheritance will catch all the cases
+ * anyway. <!-- end-user-doc -->
+ *
+ * @return the new adapter.
+ * @see org.eclipse.acceleo.model.mtl.QueryInvocation
+ * @generated
+ */
+ public Adapter createQueryInvocationAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.acceleo.model.mtl.ProtectedAreaBlock
+ * <em>Protected Area Block</em>}'. <!-- begin-user-doc --> This default implementation returns null so
+ * that we can easily ignore cases; it's useful to ignore a case when inheritance will catch all the cases
+ * anyway. <!-- end-user-doc -->
+ *
+ * @return the new adapter.
+ * @see org.eclipse.acceleo.model.mtl.ProtectedAreaBlock
+ * @generated
+ */
+ public Adapter createProtectedAreaBlockAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.acceleo.model.mtl.ForBlock <em>For Block</em>}'.
+ * <!-- begin-user-doc --> This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway. <!-- end-user-doc -->
+ *
+ * @return the new adapter.
+ * @see org.eclipse.acceleo.model.mtl.ForBlock
+ * @generated
+ */
+ public Adapter createForBlockAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class ' {@link org.eclipse.acceleo.model.mtl.IfBlock <em>If Block</em>}'. <!--
+ * begin-user-doc --> This default implementation returns null so that we can easily ignore cases; it's
+ * useful to ignore a case when inheritance will catch all the cases anyway. <!-- end-user-doc -->
+ *
+ * @return the new adapter.
+ * @see org.eclipse.acceleo.model.mtl.IfBlock
+ * @generated
+ */
+ public Adapter createIfBlockAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.acceleo.model.mtl.LetBlock <em>Let Block</em>}'.
+ * <!-- begin-user-doc --> This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway. <!-- end-user-doc -->
+ *
+ * @return the new adapter.
+ * @see org.eclipse.acceleo.model.mtl.LetBlock
+ * @generated
+ */
+ public Adapter createLetBlockAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.acceleo.model.mtl.FileBlock <em>File Block</em>}'.
+ * <!-- begin-user-doc --> This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway. <!-- end-user-doc -->
+ *
+ * @return the new adapter.
+ * @see org.eclipse.acceleo.model.mtl.FileBlock
+ * @generated
+ */
+ public Adapter createFileBlockAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.acceleo.model.mtl.TraceBlock <em>Trace Block</em>}'.
+ * <!-- begin-user-doc --> This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway. <!-- end-user-doc -->
+ *
+ * @return the new adapter.
+ * @see org.eclipse.acceleo.model.mtl.TraceBlock
+ * @generated
+ */
+ public Adapter createTraceBlockAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class ' {@link org.eclipse.acceleo.model.mtl.Macro <em>Macro</em>}'. <!--
+ * begin-user-doc --> This default implementation returns null so that we can easily ignore cases; it's
+ * useful to ignore a case when inheritance will catch all the cases anyway. <!-- end-user-doc -->
+ *
+ * @return the new adapter.
+ * @see org.eclipse.acceleo.model.mtl.Macro
+ * @generated
+ */
+ public Adapter createMacroAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.acceleo.model.mtl.MacroInvocation
+ * <em>Macro Invocation</em>}'. <!-- begin-user-doc --> This default implementation returns null so that
+ * we can easily ignore cases; it's useful to ignore a case when inheritance will catch all the cases
+ * anyway. <!-- end-user-doc -->
+ *
+ * @return the new adapter.
+ * @see org.eclipse.acceleo.model.mtl.MacroInvocation
+ * @generated
+ */
+ public Adapter createMacroInvocationAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.acceleo.model.mtl.TypedModel <em>Typed Model</em>}'.
+ * <!-- begin-user-doc --> This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway. <!-- end-user-doc -->
+ *
+ * @return the new adapter.
+ * @see org.eclipse.acceleo.model.mtl.TypedModel
+ * @generated
+ */
+ public Adapter createTypedModelAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.emf.ecore.EModelElement
+ * <em>EModel Element</em>}'. <!-- begin-user-doc --> This default implementation returns null so that we
+ * can easily ignore cases; it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ *
+ * @return the new adapter.
+ * @see org.eclipse.emf.ecore.EModelElement
+ * @generated
+ */
+ public Adapter createEModelElementAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.emf.ecore.ENamedElement
+ * <em>ENamed Element</em>}'. <!-- begin-user-doc --> This default implementation returns null so that we
+ * can easily ignore cases; it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ *
+ * @return the new adapter.
+ * @see org.eclipse.emf.ecore.ENamedElement
+ * @generated
+ */
+ public Adapter createENamedElementAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.emf.ecore.EPackage <em>EPackage</em>}
+ * '. <!-- begin-user-doc --> This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway. <!-- end-user-doc -->
+ *
+ * @return the new adapter.
+ * @see org.eclipse.emf.ecore.EPackage
+ * @generated
+ */
+ public Adapter createEPackageAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.ocl.utilities.ASTNode
+ * <em>AST Node</em>}'. <!-- begin-user-doc --> This default implementation returns null so that we can
+ * easily ignore cases; it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ *
+ * @return the new adapter.
+ * @see org.eclipse.ocl.utilities.ASTNode
+ * @generated
+ */
+ public Adapter createASTNodeAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.emf.ecore.ETypedElement
+ * <em>ETyped Element</em>}'. <!-- begin-user-doc --> This default implementation returns null so that we
+ * can easily ignore cases; it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ *
+ * @return the new adapter.
+ * @see org.eclipse.emf.ecore.ETypedElement
+ * @generated
+ */
+ public Adapter createETypedElementAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.ocl.utilities.TypedElement
+ * <em>Typed Element</em>}'. <!-- begin-user-doc --> This default implementation returns null so that we
+ * can easily ignore cases; it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ *
+ * @return the new adapter.
+ * @see org.eclipse.ocl.utilities.TypedElement
+ * @generated
+ */
+ public Adapter createTypedElementAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.ocl.utilities.Visitable
+ * <em>Visitable</em>}'. <!-- begin-user-doc --> This default implementation returns null so that we can
+ * easily ignore cases; it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ *
+ * @return the new adapter.
+ * @see org.eclipse.ocl.utilities.Visitable
+ * @generated
+ */
+ public Adapter createVisitableAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.ocl.expressions.OCLExpression
+ * <em>OCL Expression</em>}'. <!-- begin-user-doc --> This default implementation returns null so that we
+ * can easily ignore cases; it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ *
+ * @return the new adapter.
+ * @see org.eclipse.ocl.expressions.OCLExpression
+ * @generated
+ */
+ public Adapter createOCLExpressionAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.ocl.ecore.OCLExpression
+ * <em>OCL Expression</em>}'. <!-- begin-user-doc --> This default implementation returns null so that we
+ * can easily ignore cases; it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ *
+ * @return the new adapter.
+ * @see org.eclipse.ocl.ecore.OCLExpression
+ * @generated
+ */
+ public Adapter createOCLExpression_1Adapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for the default case. <!-- begin-user-doc --> This default implementation returns
+ * null. <!-- end-user-doc -->
+ *
+ * @return the new adapter.
+ * @generated
+ */
+ public Adapter createEObjectAdapter() {
+ return null;
+ }
+
+} // MtlAdapterFactory
diff --git a/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/util/MtlResourceFactoryImpl.java b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/util/MtlResourceFactoryImpl.java
new file mode 100644
index 0000000..2dfb3b2
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/util/MtlResourceFactoryImpl.java
@@ -0,0 +1,54 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.model.mtl.util;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.impl.ResourceFactoryImpl;
+import org.eclipse.emf.ecore.xmi.XMLResource;
+
+/**
+ * <!-- begin-user-doc --> The <b>Resource Factory</b> associated with the package. <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.model.mtl.util.MtlResourceImpl
+ * @generated
+ */
+public class MtlResourceFactoryImpl extends ResourceFactoryImpl {
+ /**
+ * Creates an instance of the resource factory. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public MtlResourceFactoryImpl() {
+ super();
+ }
+
+ /**
+ * Creates an instance of the resource. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Resource createResource(URI uri) {
+ XMLResource result = new MtlResourceImpl(uri);
+ result.getDefaultSaveOptions().put(XMLResource.OPTION_EXTENDED_META_DATA, Boolean.TRUE);
+ result.getDefaultLoadOptions().put(XMLResource.OPTION_EXTENDED_META_DATA, Boolean.TRUE);
+
+ result.getDefaultSaveOptions().put(XMLResource.OPTION_SCHEMA_LOCATION, Boolean.TRUE);
+
+ result.getDefaultLoadOptions().put(XMLResource.OPTION_USE_ENCODED_ATTRIBUTE_STYLE, Boolean.TRUE);
+ result.getDefaultSaveOptions().put(XMLResource.OPTION_USE_ENCODED_ATTRIBUTE_STYLE, Boolean.TRUE);
+
+ result.getDefaultLoadOptions().put(XMLResource.OPTION_USE_LEXICAL_HANDLER, Boolean.TRUE);
+ return result;
+ }
+
+} // MtlResourceFactoryImpl
diff --git a/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/util/MtlResourceImpl.java b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/util/MtlResourceImpl.java
new file mode 100644
index 0000000..ac95032
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/util/MtlResourceImpl.java
@@ -0,0 +1,34 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.model.mtl.util;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl;
+
+/**
+ * <!-- begin-user-doc --> The <b>Resource </b> associated with the package. <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.model.mtl.util.MtlResourceFactoryImpl
+ * @generated
+ */
+public class MtlResourceImpl extends XMLResourceImpl {
+ /**
+ * Creates an instance of the resource. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @param uri
+ * the URI of the new resource.
+ * @generated
+ */
+ public MtlResourceImpl(URI uri) {
+ super(uri);
+ }
+
+} // MtlResourceImpl
diff --git a/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/util/MtlSwitch.java b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/util/MtlSwitch.java
new file mode 100644
index 0000000..8f09051
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/util/MtlSwitch.java
@@ -0,0 +1,1089 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.model.mtl.util;
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EModelElement;
+import org.eclipse.emf.ecore.ENamedElement;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.ETypedElement;
+import org.eclipse.acceleo.model.mtl.Block;
+import org.eclipse.acceleo.model.mtl.FileBlock;
+import org.eclipse.acceleo.model.mtl.ForBlock;
+import org.eclipse.acceleo.model.mtl.IfBlock;
+import org.eclipse.acceleo.model.mtl.InitSection;
+import org.eclipse.acceleo.model.mtl.LetBlock;
+import org.eclipse.acceleo.model.mtl.Macro;
+import org.eclipse.acceleo.model.mtl.MacroInvocation;
+import org.eclipse.acceleo.model.mtl.Module;
+import org.eclipse.acceleo.model.mtl.ModuleElement;
+import org.eclipse.acceleo.model.mtl.MtlPackage;
+import org.eclipse.acceleo.model.mtl.ProtectedAreaBlock;
+import org.eclipse.acceleo.model.mtl.Query;
+import org.eclipse.acceleo.model.mtl.QueryInvocation;
+import org.eclipse.acceleo.model.mtl.Template;
+import org.eclipse.acceleo.model.mtl.TemplateExpression;
+import org.eclipse.acceleo.model.mtl.TemplateInvocation;
+import org.eclipse.acceleo.model.mtl.TraceBlock;
+import org.eclipse.acceleo.model.mtl.TypedModel;
+import org.eclipse.ocl.expressions.OCLExpression;
+import org.eclipse.ocl.utilities.ASTNode;
+import org.eclipse.ocl.utilities.TypedElement;
+import org.eclipse.ocl.utilities.Visitable;
+
+/**
+ * <!-- begin-user-doc --> The <b>Switch</b> for the model's inheritance hierarchy. It supports the call
+ * {@link #doSwitch(EObject) doSwitch(object)} to invoke the <code>caseXXX</code> method for each class of the
+ * model, starting with the actual class of the object and proceeding up the inheritance hierarchy until a
+ * non-null result is returned, which is the result of the switch. <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.model.mtl.MtlPackage
+ * @generated
+ */
+public class MtlSwitch<T> {
+ /**
+ * The cached model package <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected static MtlPackage modelPackage;
+
+ /**
+ * Creates an instance of the switch. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public MtlSwitch() {
+ if (modelPackage == null) {
+ modelPackage = MtlPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields
+ * that result. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the first non-null result returned by a <code>caseXXX</code> call.
+ * @generated
+ */
+ public T doSwitch(EObject theEObject) {
+ return doSwitch(theEObject.eClass(), theEObject);
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields
+ * that result. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the first non-null result returned by a <code>caseXXX</code> call.
+ * @generated
+ */
+ protected T doSwitch(EClass theEClass, EObject theEObject) {
+ if (theEClass.eContainer() == modelPackage) {
+ return doSwitch(theEClass.getClassifierID(), theEObject);
+ } else {
+ List<EClass> eSuperTypes = theEClass.getESuperTypes();
+ return eSuperTypes.isEmpty() ? defaultCase(theEObject) : doSwitch(eSuperTypes.get(0), theEObject);
+ }
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields
+ * that result. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the first non-null result returned by a <code>caseXXX</code> call.
+ * @generated
+ */
+ protected T doSwitch(int classifierID, EObject theEObject) {
+ switch (classifierID) {
+ case MtlPackage.MODULE: {
+ Module module = (Module)theEObject;
+ T result = caseModule(module);
+ if (result == null) {
+ result = caseEPackage(module);
+ }
+ if (result == null) {
+ result = caseENamedElement(module);
+ }
+ if (result == null) {
+ result = caseEModelElement(module);
+ }
+ if (result == null) {
+ result = defaultCase(theEObject);
+ }
+ return result;
+ }
+ case MtlPackage.MODULE_ELEMENT: {
+ ModuleElement moduleElement = (ModuleElement)theEObject;
+ T result = caseModuleElement(moduleElement);
+ if (result == null) {
+ result = caseENamedElement(moduleElement);
+ }
+ if (result == null) {
+ result = caseASTNode(moduleElement);
+ }
+ if (result == null) {
+ result = caseEModelElement(moduleElement);
+ }
+ if (result == null) {
+ result = defaultCase(theEObject);
+ }
+ return result;
+ }
+ case MtlPackage.TEMPLATE_EXPRESSION: {
+ TemplateExpression templateExpression = (TemplateExpression)theEObject;
+ T result = caseTemplateExpression(templateExpression);
+ if (result == null) {
+ result = caseOCLExpression_1(templateExpression);
+ }
+ if (result == null) {
+ result = caseASTNode(templateExpression);
+ }
+ if (result == null) {
+ result = caseETypedElement(templateExpression);
+ }
+ if (result == null) {
+ result = caseOCLExpression(templateExpression);
+ }
+ if (result == null) {
+ result = caseENamedElement(templateExpression);
+ }
+ if (result == null) {
+ result = caseTypedElement(templateExpression);
+ }
+ if (result == null) {
+ result = caseVisitable(templateExpression);
+ }
+ if (result == null) {
+ result = caseEModelElement(templateExpression);
+ }
+ if (result == null) {
+ result = defaultCase(theEObject);
+ }
+ return result;
+ }
+ case MtlPackage.BLOCK: {
+ Block block = (Block)theEObject;
+ T result = caseBlock(block);
+ if (result == null) {
+ result = caseTemplateExpression(block);
+ }
+ if (result == null) {
+ result = caseOCLExpression_1(block);
+ }
+ if (result == null) {
+ result = caseASTNode(block);
+ }
+ if (result == null) {
+ result = caseETypedElement(block);
+ }
+ if (result == null) {
+ result = caseOCLExpression(block);
+ }
+ if (result == null) {
+ result = caseENamedElement(block);
+ }
+ if (result == null) {
+ result = caseTypedElement(block);
+ }
+ if (result == null) {
+ result = caseVisitable(block);
+ }
+ if (result == null) {
+ result = caseEModelElement(block);
+ }
+ if (result == null) {
+ result = defaultCase(theEObject);
+ }
+ return result;
+ }
+ case MtlPackage.INIT_SECTION: {
+ InitSection initSection = (InitSection)theEObject;
+ T result = caseInitSection(initSection);
+ if (result == null) {
+ result = caseASTNode(initSection);
+ }
+ if (result == null) {
+ result = defaultCase(theEObject);
+ }
+ return result;
+ }
+ case MtlPackage.TEMPLATE: {
+ Template template = (Template)theEObject;
+ T result = caseTemplate(template);
+ if (result == null) {
+ result = caseBlock(template);
+ }
+ if (result == null) {
+ result = caseModuleElement(template);
+ }
+ if (result == null) {
+ result = caseTemplateExpression(template);
+ }
+ if (result == null) {
+ result = caseENamedElement(template);
+ }
+ if (result == null) {
+ result = caseASTNode(template);
+ }
+ if (result == null) {
+ result = caseOCLExpression_1(template);
+ }
+ if (result == null) {
+ result = caseEModelElement(template);
+ }
+ if (result == null) {
+ result = caseETypedElement(template);
+ }
+ if (result == null) {
+ result = caseOCLExpression(template);
+ }
+ if (result == null) {
+ result = caseTypedElement(template);
+ }
+ if (result == null) {
+ result = caseVisitable(template);
+ }
+ if (result == null) {
+ result = defaultCase(theEObject);
+ }
+ return result;
+ }
+ case MtlPackage.TEMPLATE_INVOCATION: {
+ TemplateInvocation templateInvocation = (TemplateInvocation)theEObject;
+ T result = caseTemplateInvocation(templateInvocation);
+ if (result == null) {
+ result = caseTemplateExpression(templateInvocation);
+ }
+ if (result == null) {
+ result = caseOCLExpression_1(templateInvocation);
+ }
+ if (result == null) {
+ result = caseASTNode(templateInvocation);
+ }
+ if (result == null) {
+ result = caseETypedElement(templateInvocation);
+ }
+ if (result == null) {
+ result = caseOCLExpression(templateInvocation);
+ }
+ if (result == null) {
+ result = caseENamedElement(templateInvocation);
+ }
+ if (result == null) {
+ result = caseTypedElement(templateInvocation);
+ }
+ if (result == null) {
+ result = caseVisitable(templateInvocation);
+ }
+ if (result == null) {
+ result = caseEModelElement(templateInvocation);
+ }
+ if (result == null) {
+ result = defaultCase(theEObject);
+ }
+ return result;
+ }
+ case MtlPackage.QUERY: {
+ Query query = (Query)theEObject;
+ T result = caseQuery(query);
+ if (result == null) {
+ result = caseModuleElement(query);
+ }
+ if (result == null) {
+ result = caseENamedElement(query);
+ }
+ if (result == null) {
+ result = caseASTNode(query);
+ }
+ if (result == null) {
+ result = caseEModelElement(query);
+ }
+ if (result == null) {
+ result = defaultCase(theEObject);
+ }
+ return result;
+ }
+ case MtlPackage.QUERY_INVOCATION: {
+ QueryInvocation queryInvocation = (QueryInvocation)theEObject;
+ T result = caseQueryInvocation(queryInvocation);
+ if (result == null) {
+ result = caseTemplateExpression(queryInvocation);
+ }
+ if (result == null) {
+ result = caseOCLExpression_1(queryInvocation);
+ }
+ if (result == null) {
+ result = caseASTNode(queryInvocation);
+ }
+ if (result == null) {
+ result = caseETypedElement(queryInvocation);
+ }
+ if (result == null) {
+ result = caseOCLExpression(queryInvocation);
+ }
+ if (result == null) {
+ result = caseENamedElement(queryInvocation);
+ }
+ if (result == null) {
+ result = caseTypedElement(queryInvocation);
+ }
+ if (result == null) {
+ result = caseVisitable(queryInvocation);
+ }
+ if (result == null) {
+ result = caseEModelElement(queryInvocation);
+ }
+ if (result == null) {
+ result = defaultCase(theEObject);
+ }
+ return result;
+ }
+ case MtlPackage.PROTECTED_AREA_BLOCK: {
+ ProtectedAreaBlock protectedAreaBlock = (ProtectedAreaBlock)theEObject;
+ T result = caseProtectedAreaBlock(protectedAreaBlock);
+ if (result == null) {
+ result = caseBlock(protectedAreaBlock);
+ }
+ if (result == null) {
+ result = caseTemplateExpression(protectedAreaBlock);
+ }
+ if (result == null) {
+ result = caseOCLExpression_1(protectedAreaBlock);
+ }
+ if (result == null) {
+ result = caseASTNode(protectedAreaBlock);
+ }
+ if (result == null) {
+ result = caseETypedElement(protectedAreaBlock);
+ }
+ if (result == null) {
+ result = caseOCLExpression(protectedAreaBlock);
+ }
+ if (result == null) {
+ result = caseENamedElement(protectedAreaBlock);
+ }
+ if (result == null) {
+ result = caseTypedElement(protectedAreaBlock);
+ }
+ if (result == null) {
+ result = caseVisitable(protectedAreaBlock);
+ }
+ if (result == null) {
+ result = caseEModelElement(protectedAreaBlock);
+ }
+ if (result == null) {
+ result = defaultCase(theEObject);
+ }
+ return result;
+ }
+ case MtlPackage.FOR_BLOCK: {
+ ForBlock forBlock = (ForBlock)theEObject;
+ T result = caseForBlock(forBlock);
+ if (result == null) {
+ result = caseBlock(forBlock);
+ }
+ if (result == null) {
+ result = caseTemplateExpression(forBlock);
+ }
+ if (result == null) {
+ result = caseOCLExpression_1(forBlock);
+ }
+ if (result == null) {
+ result = caseASTNode(forBlock);
+ }
+ if (result == null) {
+ result = caseETypedElement(forBlock);
+ }
+ if (result == null) {
+ result = caseOCLExpression(forBlock);
+ }
+ if (result == null) {
+ result = caseENamedElement(forBlock);
+ }
+ if (result == null) {
+ result = caseTypedElement(forBlock);
+ }
+ if (result == null) {
+ result = caseVisitable(forBlock);
+ }
+ if (result == null) {
+ result = caseEModelElement(forBlock);
+ }
+ if (result == null) {
+ result = defaultCase(theEObject);
+ }
+ return result;
+ }
+ case MtlPackage.IF_BLOCK: {
+ IfBlock ifBlock = (IfBlock)theEObject;
+ T result = caseIfBlock(ifBlock);
+ if (result == null) {
+ result = caseBlock(ifBlock);
+ }
+ if (result == null) {
+ result = caseTemplateExpression(ifBlock);
+ }
+ if (result == null) {
+ result = caseOCLExpression_1(ifBlock);
+ }
+ if (result == null) {
+ result = caseASTNode(ifBlock);
+ }
+ if (result == null) {
+ result = caseETypedElement(ifBlock);
+ }
+ if (result == null) {
+ result = caseOCLExpression(ifBlock);
+ }
+ if (result == null) {
+ result = caseENamedElement(ifBlock);
+ }
+ if (result == null) {
+ result = caseTypedElement(ifBlock);
+ }
+ if (result == null) {
+ result = caseVisitable(ifBlock);
+ }
+ if (result == null) {
+ result = caseEModelElement(ifBlock);
+ }
+ if (result == null) {
+ result = defaultCase(theEObject);
+ }
+ return result;
+ }
+ case MtlPackage.LET_BLOCK: {
+ LetBlock letBlock = (LetBlock)theEObject;
+ T result = caseLetBlock(letBlock);
+ if (result == null) {
+ result = caseBlock(letBlock);
+ }
+ if (result == null) {
+ result = caseTemplateExpression(letBlock);
+ }
+ if (result == null) {
+ result = caseOCLExpression_1(letBlock);
+ }
+ if (result == null) {
+ result = caseASTNode(letBlock);
+ }
+ if (result == null) {
+ result = caseETypedElement(letBlock);
+ }
+ if (result == null) {
+ result = caseOCLExpression(letBlock);
+ }
+ if (result == null) {
+ result = caseENamedElement(letBlock);
+ }
+ if (result == null) {
+ result = caseTypedElement(letBlock);
+ }
+ if (result == null) {
+ result = caseVisitable(letBlock);
+ }
+ if (result == null) {
+ result = caseEModelElement(letBlock);
+ }
+ if (result == null) {
+ result = defaultCase(theEObject);
+ }
+ return result;
+ }
+ case MtlPackage.FILE_BLOCK: {
+ FileBlock fileBlock = (FileBlock)theEObject;
+ T result = caseFileBlock(fileBlock);
+ if (result == null) {
+ result = caseBlock(fileBlock);
+ }
+ if (result == null) {
+ result = caseTemplateExpression(fileBlock);
+ }
+ if (result == null) {
+ result = caseOCLExpression_1(fileBlock);
+ }
+ if (result == null) {
+ result = caseASTNode(fileBlock);
+ }
+ if (result == null) {
+ result = caseETypedElement(fileBlock);
+ }
+ if (result == null) {
+ result = caseOCLExpression(fileBlock);
+ }
+ if (result == null) {
+ result = caseENamedElement(fileBlock);
+ }
+ if (result == null) {
+ result = caseTypedElement(fileBlock);
+ }
+ if (result == null) {
+ result = caseVisitable(fileBlock);
+ }
+ if (result == null) {
+ result = caseEModelElement(fileBlock);
+ }
+ if (result == null) {
+ result = defaultCase(theEObject);
+ }
+ return result;
+ }
+ case MtlPackage.TRACE_BLOCK: {
+ TraceBlock traceBlock = (TraceBlock)theEObject;
+ T result = caseTraceBlock(traceBlock);
+ if (result == null) {
+ result = caseBlock(traceBlock);
+ }
+ if (result == null) {
+ result = caseTemplateExpression(traceBlock);
+ }
+ if (result == null) {
+ result = caseOCLExpression_1(traceBlock);
+ }
+ if (result == null) {
+ result = caseASTNode(traceBlock);
+ }
+ if (result == null) {
+ result = caseETypedElement(traceBlock);
+ }
+ if (result == null) {
+ result = caseOCLExpression(traceBlock);
+ }
+ if (result == null) {
+ result = caseENamedElement(traceBlock);
+ }
+ if (result == null) {
+ result = caseTypedElement(traceBlock);
+ }
+ if (result == null) {
+ result = caseVisitable(traceBlock);
+ }
+ if (result == null) {
+ result = caseEModelElement(traceBlock);
+ }
+ if (result == null) {
+ result = defaultCase(theEObject);
+ }
+ return result;
+ }
+ case MtlPackage.MACRO: {
+ Macro macro = (Macro)theEObject;
+ T result = caseMacro(macro);
+ if (result == null) {
+ result = caseBlock(macro);
+ }
+ if (result == null) {
+ result = caseModuleElement(macro);
+ }
+ if (result == null) {
+ result = caseTemplateExpression(macro);
+ }
+ if (result == null) {
+ result = caseENamedElement(macro);
+ }
+ if (result == null) {
+ result = caseASTNode(macro);
+ }
+ if (result == null) {
+ result = caseOCLExpression_1(macro);
+ }
+ if (result == null) {
+ result = caseEModelElement(macro);
+ }
+ if (result == null) {
+ result = caseETypedElement(macro);
+ }
+ if (result == null) {
+ result = caseOCLExpression(macro);
+ }
+ if (result == null) {
+ result = caseTypedElement(macro);
+ }
+ if (result == null) {
+ result = caseVisitable(macro);
+ }
+ if (result == null) {
+ result = defaultCase(theEObject);
+ }
+ return result;
+ }
+ case MtlPackage.MACRO_INVOCATION: {
+ MacroInvocation macroInvocation = (MacroInvocation)theEObject;
+ T result = caseMacroInvocation(macroInvocation);
+ if (result == null) {
+ result = caseTemplateExpression(macroInvocation);
+ }
+ if (result == null) {
+ result = caseOCLExpression_1(macroInvocation);
+ }
+ if (result == null) {
+ result = caseASTNode(macroInvocation);
+ }
+ if (result == null) {
+ result = caseETypedElement(macroInvocation);
+ }
+ if (result == null) {
+ result = caseOCLExpression(macroInvocation);
+ }
+ if (result == null) {
+ result = caseENamedElement(macroInvocation);
+ }
+ if (result == null) {
+ result = caseTypedElement(macroInvocation);
+ }
+ if (result == null) {
+ result = caseVisitable(macroInvocation);
+ }
+ if (result == null) {
+ result = caseEModelElement(macroInvocation);
+ }
+ if (result == null) {
+ result = defaultCase(theEObject);
+ }
+ return result;
+ }
+ case MtlPackage.TYPED_MODEL: {
+ TypedModel typedModel = (TypedModel)theEObject;
+ T result = caseTypedModel(typedModel);
+ if (result == null) {
+ result = defaultCase(theEObject);
+ }
+ return result;
+ }
+ default:
+ return defaultCase(theEObject);
+ }
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Module</em>'. <!-- begin-user-doc
+ * --> This implementation returns null; returning a non-null result will terminate the switch. <!--
+ * end-user-doc -->
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Module</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseModule(Module object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of ' <em>Module Element</em>'. <!--
+ * begin-user-doc --> This implementation returns null; returning a non-null result will terminate the
+ * switch. <!-- end-user-doc -->
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of ' <em>Module Element</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseModuleElement(ModuleElement object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of ' <em>Template Expression</em>'. <!--
+ * begin-user-doc --> This implementation returns null; returning a non-null result will terminate the
+ * switch. <!-- end-user-doc -->
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of ' <em>Template Expression</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseTemplateExpression(TemplateExpression object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Block</em>'. <!-- begin-user-doc
+ * --> This implementation returns null; returning a non-null result will terminate the switch. <!--
+ * end-user-doc -->
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Block</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseBlock(Block object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of ' <em>Init Section</em>'. <!--
+ * begin-user-doc --> This implementation returns null; returning a non-null result will terminate the
+ * switch. <!-- end-user-doc -->
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of ' <em>Init Section</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseInitSection(InitSection object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of ' <em>Template</em>'. <!--
+ * begin-user-doc --> This implementation returns null; returning a non-null result will terminate the
+ * switch. <!-- end-user-doc -->
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of ' <em>Template</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseTemplate(Template object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of ' <em>Template Invocation</em>'. <!--
+ * begin-user-doc --> This implementation returns null; returning a non-null result will terminate the
+ * switch. <!-- end-user-doc -->
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of ' <em>Template Invocation</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseTemplateInvocation(TemplateInvocation object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Query</em>'. <!-- begin-user-doc
+ * --> This implementation returns null; returning a non-null result will terminate the switch. <!--
+ * end-user-doc -->
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Query</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseQuery(Query object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of ' <em>Query Invocation</em>'. <!--
+ * begin-user-doc --> This implementation returns null; returning a non-null result will terminate the
+ * switch. <!-- end-user-doc -->
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of ' <em>Query Invocation</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseQueryInvocation(QueryInvocation object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of ' <em>Protected Area Block</em>'. <!--
+ * begin-user-doc --> This implementation returns null; returning a non-null result will terminate the
+ * switch. <!-- end-user-doc -->
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of ' <em>Protected Area Block</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseProtectedAreaBlock(ProtectedAreaBlock object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of ' <em>For Block</em>'. <!--
+ * begin-user-doc --> This implementation returns null; returning a non-null result will terminate the
+ * switch. <!-- end-user-doc -->
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of ' <em>For Block</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseForBlock(ForBlock object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of ' <em>If Block</em>'. <!--
+ * begin-user-doc --> This implementation returns null; returning a non-null result will terminate the
+ * switch. <!-- end-user-doc -->
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of ' <em>If Block</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIfBlock(IfBlock object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of ' <em>Let Block</em>'. <!--
+ * begin-user-doc --> This implementation returns null; returning a non-null result will terminate the
+ * switch. <!-- end-user-doc -->
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of ' <em>Let Block</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseLetBlock(LetBlock object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of ' <em>File Block</em>'. <!--
+ * begin-user-doc --> This implementation returns null; returning a non-null result will terminate the
+ * switch. <!-- end-user-doc -->
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of ' <em>File Block</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseFileBlock(FileBlock object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of ' <em>Trace Block</em>'. <!--
+ * begin-user-doc --> This implementation returns null; returning a non-null result will terminate the
+ * switch. <!-- end-user-doc -->
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of ' <em>Trace Block</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseTraceBlock(TraceBlock object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Macro</em>'. <!-- begin-user-doc
+ * --> This implementation returns null; returning a non-null result will terminate the switch. <!--
+ * end-user-doc -->
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Macro</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseMacro(Macro object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of ' <em>Macro Invocation</em>'. <!--
+ * begin-user-doc --> This implementation returns null; returning a non-null result will terminate the
+ * switch. <!-- end-user-doc -->
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of ' <em>Macro Invocation</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseMacroInvocation(MacroInvocation object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of ' <em>Typed Model</em>'. <!--
+ * begin-user-doc --> This implementation returns null; returning a non-null result will terminate the
+ * switch. <!-- end-user-doc -->
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of ' <em>Typed Model</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseTypedModel(TypedModel object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of ' <em>EModel Element</em>'. <!--
+ * begin-user-doc --> This implementation returns null; returning a non-null result will terminate the
+ * switch. <!-- end-user-doc -->
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of ' <em>EModel Element</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseEModelElement(EModelElement object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of ' <em>ENamed Element</em>'. <!--
+ * begin-user-doc --> This implementation returns null; returning a non-null result will terminate the
+ * switch. <!-- end-user-doc -->
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of ' <em>ENamed Element</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseENamedElement(ENamedElement object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of ' <em>EPackage</em>'. <!--
+ * begin-user-doc --> This implementation returns null; returning a non-null result will terminate the
+ * switch. <!-- end-user-doc -->
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of ' <em>EPackage</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseEPackage(EPackage object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of ' <em>AST Node</em>'. <!--
+ * begin-user-doc --> This implementation returns null; returning a non-null result will terminate the
+ * switch. <!-- end-user-doc -->
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of ' <em>AST Node</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseASTNode(ASTNode object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of ' <em>ETyped Element</em>'. <!--
+ * begin-user-doc --> This implementation returns null; returning a non-null result will terminate the
+ * switch. <!-- end-user-doc -->
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of ' <em>ETyped Element</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseETypedElement(ETypedElement object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of ' <em>Typed Element</em>'. <!--
+ * begin-user-doc --> This implementation returns null; returning a non-null result will terminate the
+ * switch. <!-- end-user-doc -->
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of ' <em>Typed Element</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public <C> T caseTypedElement(TypedElement<C> object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of ' <em>Visitable</em>'. <!--
+ * begin-user-doc --> This implementation returns null; returning a non-null result will terminate the
+ * switch. <!-- end-user-doc -->
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of ' <em>Visitable</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseVisitable(Visitable object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of ' <em>OCL Expression</em>'. <!--
+ * begin-user-doc --> This implementation returns null; returning a non-null result will terminate the
+ * switch. <!-- end-user-doc -->
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of ' <em>OCL Expression</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public <C> T caseOCLExpression(OCLExpression<C> object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of ' <em>OCL Expression</em>'. <!--
+ * begin-user-doc --> This implementation returns null; returning a non-null result will terminate the
+ * switch. <!-- end-user-doc -->
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of ' <em>OCL Expression</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseOCLExpression_1(org.eclipse.ocl.ecore.OCLExpression object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of ' <em>EObject</em>'. <!--
+ * begin-user-doc --> This implementation returns null; returning a non-null result will terminate the
+ * switch, but this is the last case anyway. <!-- end-user-doc -->
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of ' <em>EObject</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+ * @generated
+ */
+ public T defaultCase(EObject object) {
+ return null;
+ }
+
+} // MtlSwitch
diff --git a/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/util/MtlXMLProcessor.java b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/util/MtlXMLProcessor.java
new file mode 100644
index 0000000..1d9da51
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.model/src-gen/org/eclipse/acceleo/model/mtl/util/MtlXMLProcessor.java
@@ -0,0 +1,54 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.model.mtl.util;
+
+import java.util.Map;
+
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.xmi.util.XMLProcessor;
+import org.eclipse.acceleo.model.mtl.MtlPackage;
+
+/**
+ * This class contains helper methods to serialize and deserialize XML documents <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ */
+public class MtlXMLProcessor extends XMLProcessor {
+
+ /**
+ * Public constructor to instantiate the helper. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public MtlXMLProcessor() {
+ super((EPackage.Registry.INSTANCE));
+ MtlPackage.eINSTANCE.eClass();
+ }
+
+ /**
+ * Register for "*" and "xml" file extensions the MtlResourceFactoryImpl factory. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected Map<String, Resource.Factory> getRegistrations() {
+ if (registrations == null) {
+ super.getRegistrations();
+ registrations.put(XML_EXTENSION, new MtlResourceFactoryImpl());
+ registrations.put(STAR_EXTENSION, new MtlResourceFactoryImpl());
+ }
+ return registrations;
+ }
+
+} // MtlXMLProcessor
diff --git a/plugins/org.eclipse.acceleo.model/src/org/eclipse/acceleo/model/mtl/impl/spec/QueryInvocationSpec.java b/plugins/org.eclipse.acceleo.model/src/org/eclipse/acceleo/model/mtl/impl/spec/QueryInvocationSpec.java
new file mode 100644
index 0000000..6993f2c
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.model/src/org/eclipse/acceleo/model/mtl/impl/spec/QueryInvocationSpec.java
@@ -0,0 +1,44 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.model.mtl.impl.spec;
+
+import org.eclipse.acceleo.model.mtl.impl.QueryInvocationImpl;
+import org.eclipse.ocl.EvaluationVisitorDecorator;
+import org.eclipse.ocl.utilities.Visitor;
+
+/**
+ * Specializes the implementation of the QueryInvocation so that its accept() method delegates the evaluation
+ * to our visitor.
+ *
+ * @author <a href="mailto:laurent.goubet@obeo.fr">Laurent Goubet</a>
+ */
+public class QueryInvocationSpec extends QueryInvocationImpl {
+ /**
+ * We know the visitor will be a decorator if the MTLEvaluationVisitor is in use (expected behavior of the
+ * MTL evaluation engine). This ensures we delegate the call to this decorator.
+ *
+ * @param v
+ * The current evaluation visitor.
+ * @param <T>
+ * see {@link OCLExpression#accept(Visitor)}.
+ * @param <U>
+ * see {@link OCLExpression#accept(Visitor)}.
+ * @return Result of this QueryInvocation evaluation.
+ */
+ @Override
+ @SuppressWarnings("unchecked")
+ public <T, U extends Visitor<T, ?, ?, ?, ?, ?, ?, ?, ?, ?>> T accept(U v) {
+ if (v instanceof EvaluationVisitorDecorator) {
+ return (T)((EvaluationVisitorDecorator)v).visitExpression(this);
+ }
+ throw new UnsupportedOperationException();
+ }
+}
diff --git a/plugins/org.eclipse.acceleo.model/src/org/eclipse/acceleo/model/mtl/impl/spec/TemplateInvocationSpec.java b/plugins/org.eclipse.acceleo.model/src/org/eclipse/acceleo/model/mtl/impl/spec/TemplateInvocationSpec.java
new file mode 100644
index 0000000..b12e5d0
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.model/src/org/eclipse/acceleo/model/mtl/impl/spec/TemplateInvocationSpec.java
@@ -0,0 +1,44 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.model.mtl.impl.spec;
+
+import org.eclipse.acceleo.model.mtl.impl.TemplateInvocationImpl;
+import org.eclipse.ocl.EvaluationVisitorDecorator;
+import org.eclipse.ocl.utilities.Visitor;
+
+/**
+ * Specializes the implementation of the TemplateInvocation so that its accept() method delegates the
+ * evaluation to our visitor.
+ *
+ * @author <a href="mailto:laurent.goubet@obeo.fr">Laurent Goubet</a>
+ */
+public class TemplateInvocationSpec extends TemplateInvocationImpl {
+ /**
+ * We know the visitor will be a decorator if the MTLEvaluationVisitor is in use (expected behavior of the
+ * MTL evaluation engine). This ensures we delegate the call to this decorator.
+ *
+ * @param v
+ * The current evaluation visitor.
+ * @param <T>
+ * see {@link OCLExpression#accept(Visitor)}.
+ * @param <U>
+ * see {@link OCLExpression#accept(Visitor)}.
+ * @return Result of this TemplateInvocation evaluation.
+ */
+ @Override
+ @SuppressWarnings("unchecked")
+ public <T, U extends Visitor<T, ?, ?, ?, ?, ?, ?, ?, ?, ?>> T accept(U v) {
+ if (v instanceof EvaluationVisitorDecorator) {
+ return (T)((EvaluationVisitorDecorator)v).visitExpression(this);
+ }
+ throw new UnsupportedOperationException();
+ }
+}
diff --git a/plugins/org.eclipse.acceleo.model/src/org/eclipse/acceleo/model/mtl/resource/EMtlResourceFactoryImpl.java b/plugins/org.eclipse.acceleo.model/src/org/eclipse/acceleo/model/mtl/resource/EMtlResourceFactoryImpl.java
new file mode 100644
index 0000000..7855fdc
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.model/src/org/eclipse/acceleo/model/mtl/resource/EMtlResourceFactoryImpl.java
@@ -0,0 +1,33 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.model.mtl.resource;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
+
+/**
+ * EMTL/XMI Resource factory. It is used to create specific EMF resources for the EMTL models (AST).
+ *
+ * @author <a href="mailto:jonathan.musset@obeo.fr">Jonathan Musset</a>
+ */
+public class EMtlResourceFactoryImpl extends XMIResourceFactoryImpl {
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl#createResource(org.eclipse.emf.common.util.URI)
+ */
+ public Resource createResource(URI uri) {
+ return new EMtlResourceImpl(uri);
+ }
+
+}
diff --git a/plugins/org.eclipse.acceleo.model/src/org/eclipse/acceleo/model/mtl/resource/EMtlResourceImpl.java b/plugins/org.eclipse.acceleo.model/src/org/eclipse/acceleo/model/mtl/resource/EMtlResourceImpl.java
new file mode 100644
index 0000000..2416e3e
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.model/src/org/eclipse/acceleo/model/mtl/resource/EMtlResourceImpl.java
@@ -0,0 +1,176 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.model.mtl.resource;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.Iterator;
+import java.util.Map;
+
+import org.eclipse.acceleo.model.mtl.Module;
+import org.eclipse.emf.common.util.TreeIterator;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EAnnotation;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EcoreFactory;
+import org.eclipse.emf.ecore.xmi.impl.XMIResourceImpl;
+import org.eclipse.ocl.utilities.ASTNode;
+
+/**
+ * EMTL/XMI Resource. The position of each AST node is serialized in a specific annotation. We compute the
+ * specific annotation content before saving the resource. We visit the annotation content after loading the
+ * resource to set the transient positions of every AST nodes.
+ *
+ * @author <a href="mailto:jonathan.musset@obeo.fr">Jonathan Musset</a>
+ */
+public class EMtlResourceImpl extends XMIResourceImpl {
+
+ /**
+ * The specific annotation used to store the positions of the AST nodes.
+ */
+ private static final String POSITIONS_ANNOTATION_NAME = "positions"; //$NON-NLS-1$
+
+ /**
+ * Constructor.
+ *
+ * @param uri
+ * is the URI of the resource
+ */
+ public EMtlResourceImpl(URI uri) {
+ super(uri);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl#doLoad(java.io.InputStream, java.util.Map)
+ */
+ public void doLoad(InputStream inputStream, Map<?, ?> options) throws IOException {
+ super.doLoad(inputStream, options);
+ EAnnotation positions = getPositions(false);
+ if (positions != null) {
+ restorePositions(positions);
+ getContents().remove(positions);
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl#doSave(java.io.OutputStream, java.util.Map)
+ */
+ public void doSave(OutputStream outputStream, Map<?, ?> options) throws IOException {
+ EAnnotation positions = getPositions(true);
+ savePositions(positions);
+ try {
+ super.doSave(outputStream, options);
+ } finally {
+ getContents().remove(positions);
+ }
+ }
+
+ /**
+ * Computes the specific annotation content before saving the resource. It will store every AST nodes
+ * positions.
+ *
+ * @param positions
+ * is the annotation root element where to store the positions
+ */
+ private void savePositions(EAnnotation positions) {
+ Iterator<EObject> contents = getContents().iterator();
+ while (contents.hasNext()) {
+ EObject content = contents.next();
+ if (content instanceof Module) {
+ Module eModule = (Module)content;
+ TreeIterator<EObject> eAllContents = eModule.eAllContents();
+ while (eAllContents.hasNext()) {
+ EObject eObject = eAllContents.next();
+ if (eObject instanceof ASTNode) {
+ int start = ((ASTNode)eObject).getStartPosition();
+ int end = ((ASTNode)eObject).getEndPosition();
+ savePosition(positions, (ASTNode)eObject, start, end);
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * Computes the specific annotation content before saving the resource. It will store the given AST node
+ * position.
+ *
+ * @param positions
+ * is the annotation root element where to store the positions
+ * @param node
+ * the node to store
+ * @param start
+ * the real offset of the AST node
+ * @param end
+ * the last character position of the AST node
+ */
+ private void savePosition(EAnnotation positions, ASTNode node, int start, int end) {
+ EAnnotation position = EcoreFactory.eINSTANCE.createEAnnotation();
+ position.setSource(POSITIONS_ANNOTATION_NAME + "." + positions.getEAnnotations().size()); //$NON-NLS-1$
+ position.getReferences().add(node);
+ position.getDetails().put("start", String.valueOf(start)); //$NON-NLS-1$
+ position.getDetails().put("end", String.valueOf(end)); //$NON-NLS-1$
+ positions.getEAnnotations().add(position);
+ }
+
+ /**
+ * Visitor on the specific annotation content after loading the resource to set the transient positions of
+ * every AST nodes.
+ *
+ * @param positions
+ * is the annotation root element where to read the positions
+ */
+ private void restorePositions(EAnnotation positions) {
+ Iterator<EAnnotation> positionsIt = positions.getEAnnotations().iterator();
+ while (positionsIt.hasNext()) {
+ EAnnotation position = positionsIt.next();
+ ASTNode node = (ASTNode)position.getReferences().get(0);
+ if (node.getStartPosition() == -1 && node.getEndPosition() == -1) {
+ int start = Integer.parseInt(position.getDetails().get("start")); //$NON-NLS-1$
+ int end = Integer.parseInt(position.getDetails().get("end")); //$NON-NLS-1$
+ node.setStartPosition(start);
+ node.setEndPosition(end);
+ }
+ }
+ }
+
+ /**
+ * Gets or creates the specific annotation used to store the positions of the AST nodes.
+ *
+ * @param create
+ * indicates if the annotation must be created
+ * @return the specific annotation
+ */
+ private EAnnotation getPositions(boolean create) {
+ EAnnotation positions = null;
+ Iterator<EObject> contents = getContents().iterator();
+ while (positions == null && contents.hasNext()) {
+ EObject content = contents.next();
+ if (content instanceof EAnnotation) {
+ if (POSITIONS_ANNOTATION_NAME.equals(((EAnnotation)content).getSource())) {
+ positions = (EAnnotation)content;
+ }
+ }
+ }
+ if (positions == null && create) {
+ positions = EcoreFactory.eINSTANCE.createEAnnotation();
+ positions.setSource(POSITIONS_ANNOTATION_NAME);
+ getContents().add(positions);
+ }
+ return positions;
+ }
+
+}