summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsefftinge2008-02-27 08:21:06 (EST)
committer sefftinge2008-02-27 08:21:06 (EST)
commitad6b4d7fde27a63e4741ec96a1423ce9def94e11 (patch)
tree582131bea8567263db94140009be5ba58c980283
parent3d19cb96a636f0b35b90b90147416ff99c6890e0 (diff)
downloadorg.eclipse.xpand-ad6b4d7fde27a63e4741ec96a1423ce9def94e11.zip
org.eclipse.xpand-ad6b4d7fde27a63e4741ec96a1423ce9def94e11.tar.gz
org.eclipse.xpand-ad6b4d7fde27a63e4741ec96a1423ce9def94e11.tar.bz2
parse tree added (Node)
-rw-r--r--plugins/org.eclipse.xpand3/.classpath1
-rw-r--r--plugins/org.eclipse.xpand3/META-INF/MANIFEST.MF28
-rw-r--r--plugins/org.eclipse.xpand3/build.properties16
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/ComposedIdentifier.java44
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/DeclaredParameter.java80
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/File.java63
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/Identifier.java21
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/ImportStatement.java80
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/SimpleIdentifier.java53
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/SyntaxElement.java135
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/Xpand3Factory.java82
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/Xpand3Package.java912
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/AbstractAspect.java102
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/AbstractDeclaration.java131
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/AbstractNamedDeclaration.java54
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/Advice.java21
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/Check.java135
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/CreateExtensionStatement.java54
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/DeclarationFactory.java109
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/DeclarationPackage.java1834
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/Definition.java46
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/DefinitionAspect.java46
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/Extension.java53
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/ExtensionAspect.java54
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/JavaExtensionStatement.java100
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/impl/AbstractAspectImpl.java295
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/impl/AbstractDeclarationImpl.java363
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/impl/AbstractNamedDeclarationImpl.java180
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/impl/AdviceImpl.java43
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/impl/CheckImpl.java368
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/impl/CreateExtensionStatementImpl.java180
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/impl/DeclarationFactoryImpl.java176
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/impl/DeclarationPackageImpl.java644
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/impl/DefinitionAspectImpl.java155
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/impl/DefinitionImpl.java155
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/impl/ExtensionAspectImpl.java180
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/impl/ExtensionImpl.java166
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/impl/JavaExtensionStatementImpl.java290
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/util/DeclarationAdapterFactory.java324
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/util/DeclarationSwitch.java383
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/AbstractExpression.java22
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/BooleanLiteral.java21
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/BooleanOperation.java108
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/Case.java81
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/Cast.java81
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/ChainExpression.java80
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/CollectionExpression.java81
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/ConstructorCallExpression.java54
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/ExpressionFactory.java208
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/ExpressionPackage.java2546
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/FeatureCall.java81
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/GlobalVarExpression.java54
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/IfExpression.java107
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/IntegerLiteral.java21
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/LetExpression.java108
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/ListLiteral.java44
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/Literal.java54
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/NullLiteral.java21
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/OperationCall.java44
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/RealLiteral.java21
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/StringLiteral.java21
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/SwitchExpression.java98
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/TypeSelectExpression.java54
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/impl/AbstractExpressionImpl.java45
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/impl/BooleanLiteralImpl.java43
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/impl/BooleanOperationImpl.java313
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/impl/CaseImpl.java247
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/impl/CastImpl.java247
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/impl/ChainExpressionImpl.java245
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/impl/CollectionExpressionImpl.java247
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/impl/ConstructorCallExpressionImpl.java180
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/impl/ExpressionFactoryImpl.java297
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/impl/ExpressionPackageImpl.java949
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/impl/FeatureCallImpl.java247
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/impl/GlobalVarExpressionImpl.java180
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/impl/IfExpressionImpl.java311
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/impl/IntegerLiteralImpl.java43
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/impl/LetExpressionImpl.java313
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/impl/ListLiteralImpl.java154
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/impl/LiteralImpl.java180
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/impl/NullLiteralImpl.java43
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/impl/OperationCallImpl.java154
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/impl/RealLiteralImpl.java43
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/impl/StringLiteralImpl.java43
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/impl/SwitchExpressionImpl.java290
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/impl/TypeSelectExpressionImpl.java180
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/util/ExpressionAdapterFactory.java504
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/util/ExpressionSwitch.java615
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/impl/ComposedIdentifierImpl.java154
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/impl/DeclaredParameterImpl.java245
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/impl/FileImpl.java192
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/impl/IdentifierImpl.java43
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/impl/ImportStatementImpl.java247
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/impl/SimpleIdentifierImpl.java166
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/impl/SyntaxElementImpl.java329
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/impl/Xpand3FactoryImpl.java143
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/impl/Xpand3PackageImpl.java475
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/node/CompositeNode.java103
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/node/LeafNode.java85
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/node/LexedToken.java189
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/node/Node.java86
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/node/NodeFactory.java73
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/node/NodePackage.java541
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/node/impl/CompositeNodeImpl.java261
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/node/impl/LeafNodeImpl.java215
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/node/impl/LexedTokenImpl.java437
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/node/impl/NodeFactoryImpl.java132
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/node/impl/NodeImpl.java211
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/node/impl/NodePackageImpl.java377
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/node/util/NodeAdapterFactory.java178
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/node/util/NodeSwitch.java195
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/statement/AbstractStatement.java22
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/statement/AbstractStatementWithBody.java44
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/statement/ErrorStatement.java54
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/statement/ExpandStatement.java156
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/statement/ExpressionStatement.java54
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/statement/FileStatement.java83
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/statement/ForEachStatement.java137
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/statement/IfStatement.java108
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/statement/LetStatement.java83
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/statement/ProtectStatement.java135
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/statement/StatementFactory.java118
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/statement/StatementPackage.java1659
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/statement/TextStatement.java80
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/statement/impl/AbstractStatementImpl.java45
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/statement/impl/AbstractStatementWithBodyImpl.java154
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/statement/impl/ErrorStatementImpl.java180
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/statement/impl/ExpandStatementImpl.java426
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/statement/impl/ExpressionStatementImpl.java180
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/statement/impl/FileStatementImpl.java248
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/statement/impl/ForEachStatementImpl.java380
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/statement/impl/IfStatementImpl.java306
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/statement/impl/LetStatementImpl.java248
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/statement/impl/ProtectStatementImpl.java380
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/statement/impl/StatementFactoryImpl.java187
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/statement/impl/StatementPackageImpl.java698
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/statement/impl/TextStatementImpl.java220
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/statement/util/StatementAdapterFactory.java324
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/statement/util/StatementSwitch.java383
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/util/Xpand3AdapterFactory.java232
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/util/Xpand3Switch.java264
-rw-r--r--plugins/org.eclipse.xpand3/plugin.properties20
-rw-r--r--plugins/org.eclipse.xpand3/plugin.xml41
-rw-r--r--plugins/org.eclipse.xpand3/src/node.ecore70
-rw-r--r--plugins/org.eclipse.xpand3/src/node.genmodel41
-rw-r--r--plugins/org.eclipse.xpand3/src/org/eclipse/xpand3/node/NodeUtil.java93
-rw-r--r--plugins/org.eclipse.xpand3/src/org/eclipse/xpand3/parser/AbstractXpand3NodeParser.java70
-rw-r--r--plugins/org.eclipse.xpand3/src/org/eclipse/xpand3/parser/Xpand3.g319
-rw-r--r--plugins/org.eclipse.xpand3/src/org/eclipse/xpand3/parser/Xpand3.tokens77
-rw-r--r--plugins/org.eclipse.xpand3/src/org/eclipse/xpand3/parser/Xpand3Lexer.java4032
-rw-r--r--plugins/org.eclipse.xpand3/src/org/eclipse/xpand3/parser/Xpand3NodeParser.java452
-rw-r--r--plugins/org.eclipse.xpand3/src/org/eclipse/xpand3/parser/Xpand3Parser.java3502
-rw-r--r--plugins/org.eclipse.xpand3/src/org/eclipse/xpand3/parser/Xpand3__.g166
-rw-r--r--plugins/org.eclipse.xpand3/src/xpand3.ecore265
-rw-r--r--plugins/org.eclipse.xpand3/src/xpand3.genmodel194
155 files changed, 40280 insertions, 6 deletions
diff --git a/plugins/org.eclipse.xpand3/.classpath b/plugins/org.eclipse.xpand3/.classpath
index 304e861..7f01813 100644
--- a/plugins/org.eclipse.xpand3/.classpath
+++ b/plugins/org.eclipse.xpand3/.classpath
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
+ <classpathentry kind="src" path="emf-gen"/>
<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"/>
diff --git a/plugins/org.eclipse.xpand3/META-INF/MANIFEST.MF b/plugins/org.eclipse.xpand3/META-INF/MANIFEST.MF
index 2784fd7..dabb7a6 100644
--- a/plugins/org.eclipse.xpand3/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.xpand3/META-INF/MANIFEST.MF
@@ -1,7 +1,29 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
-Bundle-Name: Xpand3 Plug-in
-Bundle-SymbolicName: org.eclipse.xpand3
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.xpand3; singleton:=true
Bundle-Version: 0.9
-Bundle-Vendor: www.eclipse.org
+Bundle-ClassPath: .
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.emf.ecore;visibility:=reexport,
+ org.antlr;bundle-version="3.0.0",
+ org.junit
+Export-Package: org.eclipse.xpand3,
+ org.eclipse.xpand3.declaration,
+ org.eclipse.xpand3.declaration.impl,
+ org.eclipse.xpand3.declaration.util,
+ org.eclipse.xpand3.expression,
+ org.eclipse.xpand3.expression.impl,
+ org.eclipse.xpand3.expression.util,
+ org.eclipse.xpand3.impl,
+ org.eclipse.xpand3.node,
+ org.eclipse.xpand3.node.impl,
+ org.eclipse.xpand3.node.util,
+ org.eclipse.xpand3.parser,
+ org.eclipse.xpand3.statement,
+ org.eclipse.xpand3.statement.impl,
+ org.eclipse.xpand3.statement.util,
+ org.eclipse.xpand3.util
diff --git a/plugins/org.eclipse.xpand3/build.properties b/plugins/org.eclipse.xpand3/build.properties
index 34d2e4d..4389ab1 100644
--- a/plugins/org.eclipse.xpand3/build.properties
+++ b/plugins/org.eclipse.xpand3/build.properties
@@ -1,4 +1,14 @@
-source.. = src/
+
+# <copyright>
+# </copyright>
+#
+# $Id: build.properties,v 1.2 2008/02/27 13:21:09 sefftinge Exp $
+
+bin.includes = .,\
+ META-INF/,\
+ plugin.xml,\
+ plugin.properties
+jars.compile.order = .
+source.. = src/,\
+ emf-gen/
output.. = bin/
-bin.includes = META-INF/,\
- .
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/ComposedIdentifier.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/ComposedIdentifier.java
new file mode 100644
index 0000000..195b588
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/ComposedIdentifier.java
@@ -0,0 +1,44 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: ComposedIdentifier.java,v 1.1 2008/02/27 13:21:08 sefftinge Exp $
+ */
+package org.eclipse.xpand3;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Composed Identifier</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.xpand3.ComposedIdentifier#getIdentifiers <em>Identifiers</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.xpand3.Xpand3Package#getComposedIdentifier()
+ * @model
+ * @generated
+ */
+public interface ComposedIdentifier extends Identifier {
+ /**
+ * Returns the value of the '<em><b>Identifiers</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.xpand3.Identifier}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Identifiers</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>Identifiers</em>' containment reference list.
+ * @see org.eclipse.xpand3.Xpand3Package#getComposedIdentifier_Identifiers()
+ * @model containment="true" required="true"
+ * @generated
+ */
+ EList<Identifier> getIdentifiers();
+
+} // ComposedIdentifier
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/DeclaredParameter.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/DeclaredParameter.java
new file mode 100644
index 0000000..2810566
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/DeclaredParameter.java
@@ -0,0 +1,80 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: DeclaredParameter.java,v 1.1 2008/02/27 13:21:08 sefftinge Exp $
+ */
+package org.eclipse.xpand3;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Declared Parameter</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.xpand3.DeclaredParameter#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.xpand3.DeclaredParameter#getType <em>Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.xpand3.Xpand3Package#getDeclaredParameter()
+ * @model
+ * @generated
+ */
+public interface DeclaredParameter extends SyntaxElement {
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</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>Name</em>' containment reference.
+ * @see #setName(Identifier)
+ * @see org.eclipse.xpand3.Xpand3Package#getDeclaredParameter_Name()
+ * @model containment="true"
+ * @generated
+ */
+ Identifier getName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xpand3.DeclaredParameter#getName <em>Name</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Name</em>' containment reference.
+ * @see #getName()
+ * @generated
+ */
+ void setName(Identifier value);
+
+ /**
+ * Returns the value of the '<em><b>Type</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Type</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>Type</em>' containment reference.
+ * @see #setType(Identifier)
+ * @see org.eclipse.xpand3.Xpand3Package#getDeclaredParameter_Type()
+ * @model containment="true"
+ * @generated
+ */
+ Identifier getType();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xpand3.DeclaredParameter#getType <em>Type</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Type</em>' containment reference.
+ * @see #getType()
+ * @generated
+ */
+ void setType(Identifier value);
+
+} // DeclaredParameter
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/File.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/File.java
new file mode 100644
index 0000000..bcc53ad
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/File.java
@@ -0,0 +1,63 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: File.java,v 1.1 2008/02/27 13:21:08 sefftinge Exp $
+ */
+package org.eclipse.xpand3;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.xpand3.declaration.AbstractDeclaration;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>File</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.xpand3.File#getImports <em>Imports</em>}</li>
+ * <li>{@link org.eclipse.xpand3.File#getDeclarations <em>Declarations</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.xpand3.Xpand3Package#getFile()
+ * @model
+ * @generated
+ */
+public interface File extends SyntaxElement {
+ /**
+ * Returns the value of the '<em><b>Imports</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.xpand3.ImportStatement}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Imports</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>Imports</em>' containment reference list.
+ * @see org.eclipse.xpand3.Xpand3Package#getFile_Imports()
+ * @model containment="true"
+ * @generated
+ */
+ EList<ImportStatement> getImports();
+
+ /**
+ * Returns the value of the '<em><b>Declarations</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.xpand3.declaration.AbstractDeclaration}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Declarations</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>Declarations</em>' containment reference list.
+ * @see org.eclipse.xpand3.Xpand3Package#getFile_Declarations()
+ * @model containment="true" required="true"
+ * @generated
+ */
+ EList<AbstractDeclaration> getDeclarations();
+
+} // File
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/Identifier.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/Identifier.java
new file mode 100644
index 0000000..fa8d23b
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/Identifier.java
@@ -0,0 +1,21 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: Identifier.java,v 1.1 2008/02/27 13:21:08 sefftinge Exp $
+ */
+package org.eclipse.xpand3;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Identifier</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.xpand3.Xpand3Package#getIdentifier()
+ * @model abstract="true"
+ * @generated
+ */
+public interface Identifier extends SyntaxElement {
+} // Identifier
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/ImportStatement.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/ImportStatement.java
new file mode 100644
index 0000000..2f6db4d
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/ImportStatement.java
@@ -0,0 +1,80 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: ImportStatement.java,v 1.1 2008/02/27 13:21:08 sefftinge Exp $
+ */
+package org.eclipse.xpand3;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Import Statement</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.xpand3.ImportStatement#getImportedId <em>Imported Id</em>}</li>
+ * <li>{@link org.eclipse.xpand3.ImportStatement#isExported <em>Exported</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.xpand3.Xpand3Package#getImportStatement()
+ * @model
+ * @generated
+ */
+public interface ImportStatement extends SyntaxElement {
+ /**
+ * Returns the value of the '<em><b>Imported Id</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Imported 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>Imported Id</em>' containment reference.
+ * @see #setImportedId(Identifier)
+ * @see org.eclipse.xpand3.Xpand3Package#getImportStatement_ImportedId()
+ * @model containment="true"
+ * @generated
+ */
+ Identifier getImportedId();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xpand3.ImportStatement#getImportedId <em>Imported Id</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Imported Id</em>' containment reference.
+ * @see #getImportedId()
+ * @generated
+ */
+ void setImportedId(Identifier value);
+
+ /**
+ * Returns the value of the '<em><b>Exported</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Exported</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Exported</em>' attribute.
+ * @see #setExported(boolean)
+ * @see org.eclipse.xpand3.Xpand3Package#getImportStatement_Exported()
+ * @model
+ * @generated
+ */
+ boolean isExported();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xpand3.ImportStatement#isExported <em>Exported</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Exported</em>' attribute.
+ * @see #isExported()
+ * @generated
+ */
+ void setExported(boolean value);
+
+} // ImportStatement
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/SimpleIdentifier.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/SimpleIdentifier.java
new file mode 100644
index 0000000..08fa24d
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/SimpleIdentifier.java
@@ -0,0 +1,53 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: SimpleIdentifier.java,v 1.1 2008/02/27 13:21:08 sefftinge Exp $
+ */
+package org.eclipse.xpand3;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Simple Identifier</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.xpand3.SimpleIdentifier#getValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.xpand3.Xpand3Package#getSimpleIdentifier()
+ * @model
+ * @generated
+ */
+public interface SimpleIdentifier extends Identifier {
+ /**
+ * Returns the value of the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Value</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Value</em>' attribute.
+ * @see #setValue(String)
+ * @see org.eclipse.xpand3.Xpand3Package#getSimpleIdentifier_Value()
+ * @model
+ * @generated
+ */
+ String getValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xpand3.SimpleIdentifier#getValue <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Value</em>' attribute.
+ * @see #getValue()
+ * @generated
+ */
+ void setValue(String value);
+
+} // SimpleIdentifier
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/SyntaxElement.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/SyntaxElement.java
new file mode 100644
index 0000000..51b3e9a
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/SyntaxElement.java
@@ -0,0 +1,135 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: SyntaxElement.java,v 1.1 2008/02/27 13:21:08 sefftinge Exp $
+ */
+package org.eclipse.xpand3;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Syntax Element</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.xpand3.SyntaxElement#getLine <em>Line</em>}</li>
+ * <li>{@link org.eclipse.xpand3.SyntaxElement#getStart <em>Start</em>}</li>
+ * <li>{@link org.eclipse.xpand3.SyntaxElement#getEnd <em>End</em>}</li>
+ * <li>{@link org.eclipse.xpand3.SyntaxElement#getFileName <em>File Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.xpand3.Xpand3Package#getSyntaxElement()
+ * @model abstract="true"
+ * @generated
+ */
+public interface SyntaxElement extends EObject {
+ /**
+ * Returns the value of the '<em><b>Line</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Line</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Line</em>' attribute.
+ * @see #setLine(int)
+ * @see org.eclipse.xpand3.Xpand3Package#getSyntaxElement_Line()
+ * @model
+ * @generated
+ */
+ int getLine();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xpand3.SyntaxElement#getLine <em>Line</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Line</em>' attribute.
+ * @see #getLine()
+ * @generated
+ */
+ void setLine(int value);
+
+ /**
+ * Returns the value of the '<em><b>Start</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Start</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Start</em>' attribute.
+ * @see #setStart(int)
+ * @see org.eclipse.xpand3.Xpand3Package#getSyntaxElement_Start()
+ * @model
+ * @generated
+ */
+ int getStart();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xpand3.SyntaxElement#getStart <em>Start</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Start</em>' attribute.
+ * @see #getStart()
+ * @generated
+ */
+ void setStart(int value);
+
+ /**
+ * Returns the value of the '<em><b>End</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>End</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>End</em>' attribute.
+ * @see #setEnd(int)
+ * @see org.eclipse.xpand3.Xpand3Package#getSyntaxElement_End()
+ * @model
+ * @generated
+ */
+ int getEnd();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xpand3.SyntaxElement#getEnd <em>End</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>End</em>' attribute.
+ * @see #getEnd()
+ * @generated
+ */
+ void setEnd(int value);
+
+ /**
+ * Returns the value of the '<em><b>File Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>File Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>File Name</em>' attribute.
+ * @see #setFileName(String)
+ * @see org.eclipse.xpand3.Xpand3Package#getSyntaxElement_FileName()
+ * @model
+ * @generated
+ */
+ String getFileName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xpand3.SyntaxElement#getFileName <em>File Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>File Name</em>' attribute.
+ * @see #getFileName()
+ * @generated
+ */
+ void setFileName(String value);
+
+} // SyntaxElement
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/Xpand3Factory.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/Xpand3Factory.java
new file mode 100644
index 0000000..84856a6
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/Xpand3Factory.java
@@ -0,0 +1,82 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: Xpand3Factory.java,v 1.1 2008/02/27 13:21:08 sefftinge Exp $
+ */
+package org.eclipse.xpand3;
+
+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.xpand3.Xpand3Package
+ * @generated
+ */
+public interface Xpand3Factory extends EFactory {
+ /**
+ * The singleton instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ Xpand3Factory eINSTANCE = org.eclipse.xpand3.impl.Xpand3FactoryImpl.init();
+
+ /**
+ * Returns a new object of class '<em>File</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>File</em>'.
+ * @generated
+ */
+ File createFile();
+
+ /**
+ * Returns a new object of class '<em>Import Statement</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Import Statement</em>'.
+ * @generated
+ */
+ ImportStatement createImportStatement();
+
+ /**
+ * Returns a new object of class '<em>Simple Identifier</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Simple Identifier</em>'.
+ * @generated
+ */
+ SimpleIdentifier createSimpleIdentifier();
+
+ /**
+ * Returns a new object of class '<em>Composed Identifier</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Composed Identifier</em>'.
+ * @generated
+ */
+ ComposedIdentifier createComposedIdentifier();
+
+ /**
+ * Returns a new object of class '<em>Declared Parameter</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Declared Parameter</em>'.
+ * @generated
+ */
+ DeclaredParameter createDeclaredParameter();
+
+ /**
+ * Returns the package supported by this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the package supported by this factory.
+ * @generated
+ */
+ Xpand3Package getXpand3Package();
+
+} //Xpand3Factory
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/Xpand3Package.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/Xpand3Package.java
new file mode 100644
index 0000000..e88a7ae
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/Xpand3Package.java
@@ -0,0 +1,912 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: Xpand3Package.java,v 1.1 2008/02/27 13:21:08 sefftinge Exp $
+ */
+package org.eclipse.xpand3;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+/**
+ * <!-- 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.xpand3.Xpand3Factory
+ * @model kind="package"
+ * @generated
+ */
+public interface Xpand3Package extends EPackage {
+ /**
+ * The package name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNAME = "xpand3";
+
+ /**
+ * The package namespace URI.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_URI = "http://www.eclipse.org/m2t/xpand/xpand3";
+
+ /**
+ * The package namespace name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_PREFIX = "xpand3";
+
+ /**
+ * The singleton instance of the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ Xpand3Package eINSTANCE = org.eclipse.xpand3.impl.Xpand3PackageImpl.init();
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xpand3.impl.SyntaxElementImpl <em>Syntax Element</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.impl.SyntaxElementImpl
+ * @see org.eclipse.xpand3.impl.Xpand3PackageImpl#getSyntaxElement()
+ * @generated
+ */
+ int SYNTAX_ELEMENT = 0;
+
+ /**
+ * The feature id for the '<em><b>Line</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SYNTAX_ELEMENT__LINE = 0;
+
+ /**
+ * The feature id for the '<em><b>Start</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SYNTAX_ELEMENT__START = 1;
+
+ /**
+ * The feature id for the '<em><b>End</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SYNTAX_ELEMENT__END = 2;
+
+ /**
+ * The feature id for the '<em><b>File Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SYNTAX_ELEMENT__FILE_NAME = 3;
+
+ /**
+ * The number of structural features of the '<em>Syntax Element</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SYNTAX_ELEMENT_FEATURE_COUNT = 4;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xpand3.impl.FileImpl <em>File</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.impl.FileImpl
+ * @see org.eclipse.xpand3.impl.Xpand3PackageImpl#getFile()
+ * @generated
+ */
+ int FILE = 1;
+
+ /**
+ * The feature id for the '<em><b>Line</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FILE__LINE = SYNTAX_ELEMENT__LINE;
+
+ /**
+ * The feature id for the '<em><b>Start</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FILE__START = SYNTAX_ELEMENT__START;
+
+ /**
+ * The feature id for the '<em><b>End</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FILE__END = SYNTAX_ELEMENT__END;
+
+ /**
+ * The feature id for the '<em><b>File Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FILE__FILE_NAME = SYNTAX_ELEMENT__FILE_NAME;
+
+ /**
+ * The feature id for the '<em><b>Imports</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FILE__IMPORTS = SYNTAX_ELEMENT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Declarations</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FILE__DECLARATIONS = SYNTAX_ELEMENT_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>File</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FILE_FEATURE_COUNT = SYNTAX_ELEMENT_FEATURE_COUNT + 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xpand3.impl.ImportStatementImpl <em>Import Statement</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.impl.ImportStatementImpl
+ * @see org.eclipse.xpand3.impl.Xpand3PackageImpl#getImportStatement()
+ * @generated
+ */
+ int IMPORT_STATEMENT = 2;
+
+ /**
+ * The feature id for the '<em><b>Line</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IMPORT_STATEMENT__LINE = SYNTAX_ELEMENT__LINE;
+
+ /**
+ * The feature id for the '<em><b>Start</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IMPORT_STATEMENT__START = SYNTAX_ELEMENT__START;
+
+ /**
+ * The feature id for the '<em><b>End</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IMPORT_STATEMENT__END = SYNTAX_ELEMENT__END;
+
+ /**
+ * The feature id for the '<em><b>File Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IMPORT_STATEMENT__FILE_NAME = SYNTAX_ELEMENT__FILE_NAME;
+
+ /**
+ * The feature id for the '<em><b>Imported Id</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IMPORT_STATEMENT__IMPORTED_ID = SYNTAX_ELEMENT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Exported</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IMPORT_STATEMENT__EXPORTED = SYNTAX_ELEMENT_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Import Statement</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IMPORT_STATEMENT_FEATURE_COUNT = SYNTAX_ELEMENT_FEATURE_COUNT + 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xpand3.impl.IdentifierImpl <em>Identifier</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.impl.IdentifierImpl
+ * @see org.eclipse.xpand3.impl.Xpand3PackageImpl#getIdentifier()
+ * @generated
+ */
+ int IDENTIFIER = 3;
+
+ /**
+ * The feature id for the '<em><b>Line</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IDENTIFIER__LINE = SYNTAX_ELEMENT__LINE;
+
+ /**
+ * The feature id for the '<em><b>Start</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IDENTIFIER__START = SYNTAX_ELEMENT__START;
+
+ /**
+ * The feature id for the '<em><b>End</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IDENTIFIER__END = SYNTAX_ELEMENT__END;
+
+ /**
+ * The feature id for the '<em><b>File Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IDENTIFIER__FILE_NAME = SYNTAX_ELEMENT__FILE_NAME;
+
+ /**
+ * The number of structural features of the '<em>Identifier</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IDENTIFIER_FEATURE_COUNT = SYNTAX_ELEMENT_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xpand3.impl.SimpleIdentifierImpl <em>Simple Identifier</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.impl.SimpleIdentifierImpl
+ * @see org.eclipse.xpand3.impl.Xpand3PackageImpl#getSimpleIdentifier()
+ * @generated
+ */
+ int SIMPLE_IDENTIFIER = 4;
+
+ /**
+ * The feature id for the '<em><b>Line</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SIMPLE_IDENTIFIER__LINE = IDENTIFIER__LINE;
+
+ /**
+ * The feature id for the '<em><b>Start</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SIMPLE_IDENTIFIER__START = IDENTIFIER__START;
+
+ /**
+ * The feature id for the '<em><b>End</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SIMPLE_IDENTIFIER__END = IDENTIFIER__END;
+
+ /**
+ * The feature id for the '<em><b>File Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SIMPLE_IDENTIFIER__FILE_NAME = IDENTIFIER__FILE_NAME;
+
+ /**
+ * The feature id for the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SIMPLE_IDENTIFIER__VALUE = IDENTIFIER_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Simple Identifier</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SIMPLE_IDENTIFIER_FEATURE_COUNT = IDENTIFIER_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xpand3.impl.ComposedIdentifierImpl <em>Composed Identifier</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.impl.ComposedIdentifierImpl
+ * @see org.eclipse.xpand3.impl.Xpand3PackageImpl#getComposedIdentifier()
+ * @generated
+ */
+ int COMPOSED_IDENTIFIER = 5;
+
+ /**
+ * The feature id for the '<em><b>Line</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int COMPOSED_IDENTIFIER__LINE = IDENTIFIER__LINE;
+
+ /**
+ * The feature id for the '<em><b>Start</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int COMPOSED_IDENTIFIER__START = IDENTIFIER__START;
+
+ /**
+ * The feature id for the '<em><b>End</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int COMPOSED_IDENTIFIER__END = IDENTIFIER__END;
+
+ /**
+ * The feature id for the '<em><b>File Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int COMPOSED_IDENTIFIER__FILE_NAME = IDENTIFIER__FILE_NAME;
+
+ /**
+ * The feature id for the '<em><b>Identifiers</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int COMPOSED_IDENTIFIER__IDENTIFIERS = IDENTIFIER_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Composed Identifier</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int COMPOSED_IDENTIFIER_FEATURE_COUNT = IDENTIFIER_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xpand3.impl.DeclaredParameterImpl <em>Declared Parameter</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.impl.DeclaredParameterImpl
+ * @see org.eclipse.xpand3.impl.Xpand3PackageImpl#getDeclaredParameter()
+ * @generated
+ */
+ int DECLARED_PARAMETER = 6;
+
+ /**
+ * The feature id for the '<em><b>Line</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DECLARED_PARAMETER__LINE = SYNTAX_ELEMENT__LINE;
+
+ /**
+ * The feature id for the '<em><b>Start</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DECLARED_PARAMETER__START = SYNTAX_ELEMENT__START;
+
+ /**
+ * The feature id for the '<em><b>End</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DECLARED_PARAMETER__END = SYNTAX_ELEMENT__END;
+
+ /**
+ * The feature id for the '<em><b>File Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DECLARED_PARAMETER__FILE_NAME = SYNTAX_ELEMENT__FILE_NAME;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DECLARED_PARAMETER__NAME = SYNTAX_ELEMENT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Type</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DECLARED_PARAMETER__TYPE = SYNTAX_ELEMENT_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Declared Parameter</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DECLARED_PARAMETER_FEATURE_COUNT = SYNTAX_ELEMENT_FEATURE_COUNT + 2;
+
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xpand3.SyntaxElement <em>Syntax Element</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Syntax Element</em>'.
+ * @see org.eclipse.xpand3.SyntaxElement
+ * @generated
+ */
+ EClass getSyntaxElement();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xpand3.SyntaxElement#getLine <em>Line</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Line</em>'.
+ * @see org.eclipse.xpand3.SyntaxElement#getLine()
+ * @see #getSyntaxElement()
+ * @generated
+ */
+ EAttribute getSyntaxElement_Line();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xpand3.SyntaxElement#getStart <em>Start</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Start</em>'.
+ * @see org.eclipse.xpand3.SyntaxElement#getStart()
+ * @see #getSyntaxElement()
+ * @generated
+ */
+ EAttribute getSyntaxElement_Start();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xpand3.SyntaxElement#getEnd <em>End</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>End</em>'.
+ * @see org.eclipse.xpand3.SyntaxElement#getEnd()
+ * @see #getSyntaxElement()
+ * @generated
+ */
+ EAttribute getSyntaxElement_End();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xpand3.SyntaxElement#getFileName <em>File Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>File Name</em>'.
+ * @see org.eclipse.xpand3.SyntaxElement#getFileName()
+ * @see #getSyntaxElement()
+ * @generated
+ */
+ EAttribute getSyntaxElement_FileName();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xpand3.File <em>File</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>File</em>'.
+ * @see org.eclipse.xpand3.File
+ * @generated
+ */
+ EClass getFile();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.xpand3.File#getImports <em>Imports</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Imports</em>'.
+ * @see org.eclipse.xpand3.File#getImports()
+ * @see #getFile()
+ * @generated
+ */
+ EReference getFile_Imports();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.xpand3.File#getDeclarations <em>Declarations</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Declarations</em>'.
+ * @see org.eclipse.xpand3.File#getDeclarations()
+ * @see #getFile()
+ * @generated
+ */
+ EReference getFile_Declarations();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xpand3.ImportStatement <em>Import Statement</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Import Statement</em>'.
+ * @see org.eclipse.xpand3.ImportStatement
+ * @generated
+ */
+ EClass getImportStatement();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.xpand3.ImportStatement#getImportedId <em>Imported Id</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Imported Id</em>'.
+ * @see org.eclipse.xpand3.ImportStatement#getImportedId()
+ * @see #getImportStatement()
+ * @generated
+ */
+ EReference getImportStatement_ImportedId();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xpand3.ImportStatement#isExported <em>Exported</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Exported</em>'.
+ * @see org.eclipse.xpand3.ImportStatement#isExported()
+ * @see #getImportStatement()
+ * @generated
+ */
+ EAttribute getImportStatement_Exported();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xpand3.Identifier <em>Identifier</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Identifier</em>'.
+ * @see org.eclipse.xpand3.Identifier
+ * @generated
+ */
+ EClass getIdentifier();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xpand3.SimpleIdentifier <em>Simple Identifier</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Simple Identifier</em>'.
+ * @see org.eclipse.xpand3.SimpleIdentifier
+ * @generated
+ */
+ EClass getSimpleIdentifier();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xpand3.SimpleIdentifier#getValue <em>Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Value</em>'.
+ * @see org.eclipse.xpand3.SimpleIdentifier#getValue()
+ * @see #getSimpleIdentifier()
+ * @generated
+ */
+ EAttribute getSimpleIdentifier_Value();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xpand3.ComposedIdentifier <em>Composed Identifier</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Composed Identifier</em>'.
+ * @see org.eclipse.xpand3.ComposedIdentifier
+ * @generated
+ */
+ EClass getComposedIdentifier();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.xpand3.ComposedIdentifier#getIdentifiers <em>Identifiers</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Identifiers</em>'.
+ * @see org.eclipse.xpand3.ComposedIdentifier#getIdentifiers()
+ * @see #getComposedIdentifier()
+ * @generated
+ */
+ EReference getComposedIdentifier_Identifiers();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xpand3.DeclaredParameter <em>Declared Parameter</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Declared Parameter</em>'.
+ * @see org.eclipse.xpand3.DeclaredParameter
+ * @generated
+ */
+ EClass getDeclaredParameter();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.xpand3.DeclaredParameter#getName <em>Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Name</em>'.
+ * @see org.eclipse.xpand3.DeclaredParameter#getName()
+ * @see #getDeclaredParameter()
+ * @generated
+ */
+ EReference getDeclaredParameter_Name();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.xpand3.DeclaredParameter#getType <em>Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Type</em>'.
+ * @see org.eclipse.xpand3.DeclaredParameter#getType()
+ * @see #getDeclaredParameter()
+ * @generated
+ */
+ EReference getDeclaredParameter_Type();
+
+ /**
+ * 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
+ */
+ Xpand3Factory getXpand3Factory();
+
+ /**
+ * <!-- 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.xpand3.impl.SyntaxElementImpl <em>Syntax Element</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.impl.SyntaxElementImpl
+ * @see org.eclipse.xpand3.impl.Xpand3PackageImpl#getSyntaxElement()
+ * @generated
+ */
+ EClass SYNTAX_ELEMENT = eINSTANCE.getSyntaxElement();
+
+ /**
+ * The meta object literal for the '<em><b>Line</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute SYNTAX_ELEMENT__LINE = eINSTANCE.getSyntaxElement_Line();
+
+ /**
+ * The meta object literal for the '<em><b>Start</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute SYNTAX_ELEMENT__START = eINSTANCE.getSyntaxElement_Start();
+
+ /**
+ * The meta object literal for the '<em><b>End</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute SYNTAX_ELEMENT__END = eINSTANCE.getSyntaxElement_End();
+
+ /**
+ * The meta object literal for the '<em><b>File Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute SYNTAX_ELEMENT__FILE_NAME = eINSTANCE.getSyntaxElement_FileName();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xpand3.impl.FileImpl <em>File</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.impl.FileImpl
+ * @see org.eclipse.xpand3.impl.Xpand3PackageImpl#getFile()
+ * @generated
+ */
+ EClass FILE = eINSTANCE.getFile();
+
+ /**
+ * The meta object literal for the '<em><b>Imports</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference FILE__IMPORTS = eINSTANCE.getFile_Imports();
+
+ /**
+ * The meta object literal for the '<em><b>Declarations</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference FILE__DECLARATIONS = eINSTANCE.getFile_Declarations();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xpand3.impl.ImportStatementImpl <em>Import Statement</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.impl.ImportStatementImpl
+ * @see org.eclipse.xpand3.impl.Xpand3PackageImpl#getImportStatement()
+ * @generated
+ */
+ EClass IMPORT_STATEMENT = eINSTANCE.getImportStatement();
+
+ /**
+ * The meta object literal for the '<em><b>Imported Id</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference IMPORT_STATEMENT__IMPORTED_ID = eINSTANCE.getImportStatement_ImportedId();
+
+ /**
+ * The meta object literal for the '<em><b>Exported</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute IMPORT_STATEMENT__EXPORTED = eINSTANCE.getImportStatement_Exported();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xpand3.impl.IdentifierImpl <em>Identifier</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.impl.IdentifierImpl
+ * @see org.eclipse.xpand3.impl.Xpand3PackageImpl#getIdentifier()
+ * @generated
+ */
+ EClass IDENTIFIER = eINSTANCE.getIdentifier();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xpand3.impl.SimpleIdentifierImpl <em>Simple Identifier</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.impl.SimpleIdentifierImpl
+ * @see org.eclipse.xpand3.impl.Xpand3PackageImpl#getSimpleIdentifier()
+ * @generated
+ */
+ EClass SIMPLE_IDENTIFIER = eINSTANCE.getSimpleIdentifier();
+
+ /**
+ * The meta object literal for the '<em><b>Value</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute SIMPLE_IDENTIFIER__VALUE = eINSTANCE.getSimpleIdentifier_Value();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xpand3.impl.ComposedIdentifierImpl <em>Composed Identifier</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.impl.ComposedIdentifierImpl
+ * @see org.eclipse.xpand3.impl.Xpand3PackageImpl#getComposedIdentifier()
+ * @generated
+ */
+ EClass COMPOSED_IDENTIFIER = eINSTANCE.getComposedIdentifier();
+
+ /**
+ * The meta object literal for the '<em><b>Identifiers</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference COMPOSED_IDENTIFIER__IDENTIFIERS = eINSTANCE.getComposedIdentifier_Identifiers();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xpand3.impl.DeclaredParameterImpl <em>Declared Parameter</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.impl.DeclaredParameterImpl
+ * @see org.eclipse.xpand3.impl.Xpand3PackageImpl#getDeclaredParameter()
+ * @generated
+ */
+ EClass DECLARED_PARAMETER = eINSTANCE.getDeclaredParameter();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference DECLARED_PARAMETER__NAME = eINSTANCE.getDeclaredParameter_Name();
+
+ /**
+ * The meta object literal for the '<em><b>Type</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference DECLARED_PARAMETER__TYPE = eINSTANCE.getDeclaredParameter_Type();
+
+ }
+
+} //Xpand3Package
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/AbstractAspect.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/AbstractAspect.java
new file mode 100644
index 0000000..e0d74df
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/AbstractAspect.java
@@ -0,0 +1,102 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: AbstractAspect.java,v 1.1 2008/02/27 13:21:10 sefftinge Exp $
+ */
+package org.eclipse.xpand3.declaration;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.xpand3.DeclaredParameter;
+import org.eclipse.xpand3.Identifier;
+import org.eclipse.xpand3.SyntaxElement;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Abstract Aspect</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.xpand3.declaration.AbstractAspect#getPointcut <em>Pointcut</em>}</li>
+ * <li>{@link org.eclipse.xpand3.declaration.AbstractAspect#getParams <em>Params</em>}</li>
+ * <li>{@link org.eclipse.xpand3.declaration.AbstractAspect#isWildparams <em>Wildparams</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.xpand3.declaration.DeclarationPackage#getAbstractAspect()
+ * @model abstract="true"
+ * @generated
+ */
+public interface AbstractAspect extends SyntaxElement {
+ /**
+ * Returns the value of the '<em><b>Pointcut</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Pointcut</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>Pointcut</em>' containment reference.
+ * @see #setPointcut(Identifier)
+ * @see org.eclipse.xpand3.declaration.DeclarationPackage#getAbstractAspect_Pointcut()
+ * @model containment="true"
+ * @generated
+ */
+ Identifier getPointcut();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xpand3.declaration.AbstractAspect#getPointcut <em>Pointcut</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Pointcut</em>' containment reference.
+ * @see #getPointcut()
+ * @generated
+ */
+ void setPointcut(Identifier value);
+
+ /**
+ * Returns the value of the '<em><b>Params</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.xpand3.DeclaredParameter}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Params</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>Params</em>' containment reference list.
+ * @see org.eclipse.xpand3.declaration.DeclarationPackage#getAbstractAspect_Params()
+ * @model containment="true"
+ * @generated
+ */
+ EList<DeclaredParameter> getParams();
+
+ /**
+ * Returns the value of the '<em><b>Wildparams</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Wildparams</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Wildparams</em>' attribute.
+ * @see #setWildparams(boolean)
+ * @see org.eclipse.xpand3.declaration.DeclarationPackage#getAbstractAspect_Wildparams()
+ * @model
+ * @generated
+ */
+ boolean isWildparams();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xpand3.declaration.AbstractAspect#isWildparams <em>Wildparams</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Wildparams</em>' attribute.
+ * @see #isWildparams()
+ * @generated
+ */
+ void setWildparams(boolean value);
+
+} // AbstractAspect
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/AbstractDeclaration.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/AbstractDeclaration.java
new file mode 100644
index 0000000..e236f40
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/AbstractDeclaration.java
@@ -0,0 +1,131 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: AbstractDeclaration.java,v 1.1 2008/02/27 13:21:09 sefftinge Exp $
+ */
+package org.eclipse.xpand3.declaration;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.xpand3.DeclaredParameter;
+import org.eclipse.xpand3.File;
+import org.eclipse.xpand3.SyntaxElement;
+
+import org.eclipse.xpand3.expression.AbstractExpression;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Abstract Declaration</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.xpand3.declaration.AbstractDeclaration#getOwner <em>Owner</em>}</li>
+ * <li>{@link org.eclipse.xpand3.declaration.AbstractDeclaration#getParams <em>Params</em>}</li>
+ * <li>{@link org.eclipse.xpand3.declaration.AbstractDeclaration#isIsPrivate <em>Is Private</em>}</li>
+ * <li>{@link org.eclipse.xpand3.declaration.AbstractDeclaration#getGuard <em>Guard</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.xpand3.declaration.DeclarationPackage#getAbstractDeclaration()
+ * @model abstract="true"
+ * @generated
+ */
+public interface AbstractDeclaration extends SyntaxElement {
+ /**
+ * Returns the value of the '<em><b>Owner</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Owner</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>Owner</em>' containment reference.
+ * @see #setOwner(File)
+ * @see org.eclipse.xpand3.declaration.DeclarationPackage#getAbstractDeclaration_Owner()
+ * @model containment="true" required="true"
+ * @generated
+ */
+ File getOwner();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xpand3.declaration.AbstractDeclaration#getOwner <em>Owner</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Owner</em>' containment reference.
+ * @see #getOwner()
+ * @generated
+ */
+ void setOwner(File value);
+
+ /**
+ * Returns the value of the '<em><b>Params</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.xpand3.DeclaredParameter}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Params</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>Params</em>' containment reference list.
+ * @see org.eclipse.xpand3.declaration.DeclarationPackage#getAbstractDeclaration_Params()
+ * @model containment="true"
+ * @generated
+ */
+ EList<DeclaredParameter> getParams();
+
+ /**
+ * Returns the value of the '<em><b>Is Private</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Is Private</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Is Private</em>' attribute.
+ * @see #setIsPrivate(boolean)
+ * @see org.eclipse.xpand3.declaration.DeclarationPackage#getAbstractDeclaration_IsPrivate()
+ * @model
+ * @generated
+ */
+ boolean isIsPrivate();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xpand3.declaration.AbstractDeclaration#isIsPrivate <em>Is Private</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Is Private</em>' attribute.
+ * @see #isIsPrivate()
+ * @generated
+ */
+ void setIsPrivate(boolean 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(AbstractExpression)
+ * @see org.eclipse.xpand3.declaration.DeclarationPackage#getAbstractDeclaration_Guard()
+ * @model containment="true"
+ * @generated
+ */
+ AbstractExpression getGuard();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xpand3.declaration.AbstractDeclaration#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(AbstractExpression value);
+
+} // AbstractDeclaration
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/AbstractNamedDeclaration.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/AbstractNamedDeclaration.java
new file mode 100644
index 0000000..997a214
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/AbstractNamedDeclaration.java
@@ -0,0 +1,54 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: AbstractNamedDeclaration.java,v 1.1 2008/02/27 13:21:09 sefftinge Exp $
+ */
+package org.eclipse.xpand3.declaration;
+
+import org.eclipse.xpand3.Identifier;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Abstract Named Declaration</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.xpand3.declaration.AbstractNamedDeclaration#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.xpand3.declaration.DeclarationPackage#getAbstractNamedDeclaration()
+ * @model abstract="true"
+ * @generated
+ */
+public interface AbstractNamedDeclaration extends AbstractDeclaration {
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</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>Name</em>' containment reference.
+ * @see #setName(Identifier)
+ * @see org.eclipse.xpand3.declaration.DeclarationPackage#getAbstractNamedDeclaration_Name()
+ * @model containment="true"
+ * @generated
+ */
+ Identifier getName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xpand3.declaration.AbstractNamedDeclaration#getName <em>Name</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Name</em>' containment reference.
+ * @see #getName()
+ * @generated
+ */
+ void setName(Identifier value);
+
+} // AbstractNamedDeclaration
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/Advice.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/Advice.java
new file mode 100644
index 0000000..052cdcb
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/Advice.java
@@ -0,0 +1,21 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: Advice.java,v 1.1 2008/02/27 13:21:09 sefftinge Exp $
+ */
+package org.eclipse.xpand3.declaration;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Advice</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.xpand3.declaration.DeclarationPackage#getAdvice()
+ * @model
+ * @generated
+ */
+public interface Advice extends AbstractNamedDeclaration {
+} // Advice
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/Check.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/Check.java
new file mode 100644
index 0000000..f587a32
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/Check.java
@@ -0,0 +1,135 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: Check.java,v 1.1 2008/02/27 13:21:09 sefftinge Exp $
+ */
+package org.eclipse.xpand3.declaration;
+
+import org.eclipse.xpand3.expression.AbstractExpression;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Check</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.xpand3.declaration.Check#isErrorSeverity <em>Error Severity</em>}</li>
+ * <li>{@link org.eclipse.xpand3.declaration.Check#getMsg <em>Msg</em>}</li>
+ * <li>{@link org.eclipse.xpand3.declaration.Check#getConstraint <em>Constraint</em>}</li>
+ * <li>{@link org.eclipse.xpand3.declaration.Check#getFeature <em>Feature</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.xpand3.declaration.DeclarationPackage#getCheck()
+ * @model
+ * @generated
+ */
+public interface Check extends AbstractDeclaration {
+ /**
+ * Returns the value of the '<em><b>Error Severity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Error Severity</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Error Severity</em>' attribute.
+ * @see #setErrorSeverity(boolean)
+ * @see org.eclipse.xpand3.declaration.DeclarationPackage#getCheck_ErrorSeverity()
+ * @model
+ * @generated
+ */
+ boolean isErrorSeverity();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xpand3.declaration.Check#isErrorSeverity <em>Error Severity</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Error Severity</em>' attribute.
+ * @see #isErrorSeverity()
+ * @generated
+ */
+ void setErrorSeverity(boolean value);
+
+ /**
+ * Returns the value of the '<em><b>Msg</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Msg</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>Msg</em>' containment reference.
+ * @see #setMsg(AbstractExpression)
+ * @see org.eclipse.xpand3.declaration.DeclarationPackage#getCheck_Msg()
+ * @model containment="true"
+ * @generated
+ */
+ AbstractExpression getMsg();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xpand3.declaration.Check#getMsg <em>Msg</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Msg</em>' containment reference.
+ * @see #getMsg()
+ * @generated
+ */
+ void setMsg(AbstractExpression value);
+
+ /**
+ * Returns the value of the '<em><b>Constraint</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Constraint</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>Constraint</em>' containment reference.
+ * @see #setConstraint(AbstractExpression)
+ * @see org.eclipse.xpand3.declaration.DeclarationPackage#getCheck_Constraint()
+ * @model containment="true"
+ * @generated
+ */
+ AbstractExpression getConstraint();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xpand3.declaration.Check#getConstraint <em>Constraint</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Constraint</em>' containment reference.
+ * @see #getConstraint()
+ * @generated
+ */
+ void setConstraint(AbstractExpression value);
+
+ /**
+ * Returns the value of the '<em><b>Feature</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Feature</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Feature</em>' attribute.
+ * @see #setFeature(String)
+ * @see org.eclipse.xpand3.declaration.DeclarationPackage#getCheck_Feature()
+ * @model
+ * @generated
+ */
+ String getFeature();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xpand3.declaration.Check#getFeature <em>Feature</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Feature</em>' attribute.
+ * @see #getFeature()
+ * @generated
+ */
+ void setFeature(String value);
+
+} // Check
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/CreateExtensionStatement.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/CreateExtensionStatement.java
new file mode 100644
index 0000000..59b096f
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/CreateExtensionStatement.java
@@ -0,0 +1,54 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: CreateExtensionStatement.java,v 1.1 2008/02/27 13:21:10 sefftinge Exp $
+ */
+package org.eclipse.xpand3.declaration;
+
+import org.eclipse.xpand3.DeclaredParameter;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Create Extension Statement</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.xpand3.declaration.CreateExtensionStatement#getToBeCreated <em>To Be Created</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.xpand3.declaration.DeclarationPackage#getCreateExtensionStatement()
+ * @model
+ * @generated
+ */
+public interface CreateExtensionStatement extends Extension {
+ /**
+ * Returns the value of the '<em><b>To Be Created</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>To Be Created</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>To Be Created</em>' containment reference.
+ * @see #setToBeCreated(DeclaredParameter)
+ * @see org.eclipse.xpand3.declaration.DeclarationPackage#getCreateExtensionStatement_ToBeCreated()
+ * @model containment="true"
+ * @generated
+ */
+ DeclaredParameter getToBeCreated();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xpand3.declaration.CreateExtensionStatement#getToBeCreated <em>To Be Created</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>To Be Created</em>' containment reference.
+ * @see #getToBeCreated()
+ * @generated
+ */
+ void setToBeCreated(DeclaredParameter value);
+
+} // CreateExtensionStatement
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/DeclarationFactory.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/DeclarationFactory.java
new file mode 100644
index 0000000..441f246
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/DeclarationFactory.java
@@ -0,0 +1,109 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: DeclarationFactory.java,v 1.1 2008/02/27 13:21:10 sefftinge Exp $
+ */
+package org.eclipse.xpand3.declaration;
+
+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.xpand3.declaration.DeclarationPackage
+ * @generated
+ */
+public interface DeclarationFactory extends EFactory {
+ /**
+ * The singleton instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ DeclarationFactory eINSTANCE = org.eclipse.xpand3.declaration.impl.DeclarationFactoryImpl.init();
+
+ /**
+ * Returns a new object of class '<em>Definition</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Definition</em>'.
+ * @generated
+ */
+ Definition createDefinition();
+
+ /**
+ * Returns a new object of class '<em>Advice</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Advice</em>'.
+ * @generated
+ */
+ Advice createAdvice();
+
+ /**
+ * Returns a new object of class '<em>Extension</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Extension</em>'.
+ * @generated
+ */
+ Extension createExtension();
+
+ /**
+ * Returns a new object of class '<em>Extension Aspect</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Extension Aspect</em>'.
+ * @generated
+ */
+ ExtensionAspect createExtensionAspect();
+
+ /**
+ * Returns a new object of class '<em>Definition Aspect</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Definition Aspect</em>'.
+ * @generated
+ */
+ DefinitionAspect createDefinitionAspect();
+
+ /**
+ * Returns a new object of class '<em>Check</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Check</em>'.
+ * @generated
+ */
+ Check createCheck();
+
+ /**
+ * Returns a new object of class '<em>Create Extension Statement</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Create Extension Statement</em>'.
+ * @generated
+ */
+ CreateExtensionStatement createCreateExtensionStatement();
+
+ /**
+ * Returns a new object of class '<em>Java Extension Statement</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Java Extension Statement</em>'.
+ * @generated
+ */
+ JavaExtensionStatement createJavaExtensionStatement();
+
+ /**
+ * Returns the package supported by this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the package supported by this factory.
+ * @generated
+ */
+ DeclarationPackage getDeclarationPackage();
+
+} //DeclarationFactory
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/DeclarationPackage.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/DeclarationPackage.java
new file mode 100644
index 0000000..434827e
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/DeclarationPackage.java
@@ -0,0 +1,1834 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: DeclarationPackage.java,v 1.1 2008/02/27 13:21:09 sefftinge Exp $
+ */
+package org.eclipse.xpand3.declaration;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+import org.eclipse.xpand3.Xpand3Package;
+
+/**
+ * <!-- 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.xpand3.declaration.DeclarationFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface DeclarationPackage extends EPackage {
+ /**
+ * The package name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNAME = "declaration";
+
+ /**
+ * The package namespace URI.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_URI = "http://www.eclipse.org/m2t/xpand/xpand3/declararation";
+
+ /**
+ * The package namespace name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_PREFIX = "declaration";
+
+ /**
+ * The singleton instance of the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ DeclarationPackage eINSTANCE = org.eclipse.xpand3.declaration.impl.DeclarationPackageImpl.init();
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xpand3.declaration.impl.AbstractDeclarationImpl <em>Abstract Declaration</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.declaration.impl.AbstractDeclarationImpl
+ * @see org.eclipse.xpand3.declaration.impl.DeclarationPackageImpl#getAbstractDeclaration()
+ * @generated
+ */
+ int ABSTRACT_DECLARATION = 0;
+
+ /**
+ * The feature id for the '<em><b>Line</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_DECLARATION__LINE = Xpand3Package.SYNTAX_ELEMENT__LINE;
+
+ /**
+ * The feature id for the '<em><b>Start</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_DECLARATION__START = Xpand3Package.SYNTAX_ELEMENT__START;
+
+ /**
+ * The feature id for the '<em><b>End</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_DECLARATION__END = Xpand3Package.SYNTAX_ELEMENT__END;
+
+ /**
+ * The feature id for the '<em><b>File Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_DECLARATION__FILE_NAME = Xpand3Package.SYNTAX_ELEMENT__FILE_NAME;
+
+ /**
+ * The feature id for the '<em><b>Owner</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_DECLARATION__OWNER = Xpand3Package.SYNTAX_ELEMENT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Params</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_DECLARATION__PARAMS = Xpand3Package.SYNTAX_ELEMENT_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Is Private</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_DECLARATION__IS_PRIVATE = Xpand3Package.SYNTAX_ELEMENT_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Guard</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_DECLARATION__GUARD = Xpand3Package.SYNTAX_ELEMENT_FEATURE_COUNT + 3;
+
+ /**
+ * The number of structural features of the '<em>Abstract Declaration</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_DECLARATION_FEATURE_COUNT = Xpand3Package.SYNTAX_ELEMENT_FEATURE_COUNT + 4;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xpand3.declaration.impl.AbstractNamedDeclarationImpl <em>Abstract Named Declaration</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.declaration.impl.AbstractNamedDeclarationImpl
+ * @see org.eclipse.xpand3.declaration.impl.DeclarationPackageImpl#getAbstractNamedDeclaration()
+ * @generated
+ */
+ int ABSTRACT_NAMED_DECLARATION = 1;
+
+ /**
+ * The feature id for the '<em><b>Line</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_NAMED_DECLARATION__LINE = ABSTRACT_DECLARATION__LINE;
+
+ /**
+ * The feature id for the '<em><b>Start</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_NAMED_DECLARATION__START = ABSTRACT_DECLARATION__START;
+
+ /**
+ * The feature id for the '<em><b>End</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_NAMED_DECLARATION__END = ABSTRACT_DECLARATION__END;
+
+ /**
+ * The feature id for the '<em><b>File Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_NAMED_DECLARATION__FILE_NAME = ABSTRACT_DECLARATION__FILE_NAME;
+
+ /**
+ * The feature id for the '<em><b>Owner</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_NAMED_DECLARATION__OWNER = ABSTRACT_DECLARATION__OWNER;
+
+ /**
+ * The feature id for the '<em><b>Params</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_NAMED_DECLARATION__PARAMS = ABSTRACT_DECLARATION__PARAMS;
+
+ /**
+ * The feature id for the '<em><b>Is Private</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_NAMED_DECLARATION__IS_PRIVATE = ABSTRACT_DECLARATION__IS_PRIVATE;
+
+ /**
+ * The feature id for the '<em><b>Guard</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_NAMED_DECLARATION__GUARD = ABSTRACT_DECLARATION__GUARD;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_NAMED_DECLARATION__NAME = ABSTRACT_DECLARATION_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Abstract Named Declaration</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_NAMED_DECLARATION_FEATURE_COUNT = ABSTRACT_DECLARATION_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xpand3.declaration.impl.DefinitionImpl <em>Definition</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.declaration.impl.DefinitionImpl
+ * @see org.eclipse.xpand3.declaration.impl.DeclarationPackageImpl#getDefinition()
+ * @generated
+ */
+ int DEFINITION = 2;
+
+ /**
+ * The feature id for the '<em><b>Line</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DEFINITION__LINE = ABSTRACT_NAMED_DECLARATION__LINE;
+
+ /**
+ * The feature id for the '<em><b>Start</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DEFINITION__START = ABSTRACT_NAMED_DECLARATION__START;
+
+ /**
+ * The feature id for the '<em><b>End</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DEFINITION__END = ABSTRACT_NAMED_DECLARATION__END;
+
+ /**
+ * The feature id for the '<em><b>File Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DEFINITION__FILE_NAME = ABSTRACT_NAMED_DECLARATION__FILE_NAME;
+
+ /**
+ * The feature id for the '<em><b>Owner</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DEFINITION__OWNER = ABSTRACT_NAMED_DECLARATION__OWNER;
+
+ /**
+ * The feature id for the '<em><b>Params</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DEFINITION__PARAMS = ABSTRACT_NAMED_DECLARATION__PARAMS;
+
+ /**
+ * The feature id for the '<em><b>Is Private</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DEFINITION__IS_PRIVATE = ABSTRACT_NAMED_DECLARATION__IS_PRIVATE;
+
+ /**
+ * The feature id for the '<em><b>Guard</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DEFINITION__GUARD = ABSTRACT_NAMED_DECLARATION__GUARD;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DEFINITION__NAME = ABSTRACT_NAMED_DECLARATION__NAME;
+
+ /**
+ * The feature id for the '<em><b>Body</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DEFINITION__BODY = ABSTRACT_NAMED_DECLARATION_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Definition</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DEFINITION_FEATURE_COUNT = ABSTRACT_NAMED_DECLARATION_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xpand3.declaration.impl.AdviceImpl <em>Advice</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.declaration.impl.AdviceImpl
+ * @see org.eclipse.xpand3.declaration.impl.DeclarationPackageImpl#getAdvice()
+ * @generated
+ */
+ int ADVICE = 3;
+
+ /**
+ * The feature id for the '<em><b>Line</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ADVICE__LINE = ABSTRACT_NAMED_DECLARATION__LINE;
+
+ /**
+ * The feature id for the '<em><b>Start</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ADVICE__START = ABSTRACT_NAMED_DECLARATION__START;
+
+ /**
+ * The feature id for the '<em><b>End</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ADVICE__END = ABSTRACT_NAMED_DECLARATION__END;
+
+ /**
+ * The feature id for the '<em><b>File Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ADVICE__FILE_NAME = ABSTRACT_NAMED_DECLARATION__FILE_NAME;
+
+ /**
+ * The feature id for the '<em><b>Owner</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ADVICE__OWNER = ABSTRACT_NAMED_DECLARATION__OWNER;
+
+ /**
+ * The feature id for the '<em><b>Params</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ADVICE__PARAMS = ABSTRACT_NAMED_DECLARATION__PARAMS;
+
+ /**
+ * The feature id for the '<em><b>Is Private</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ADVICE__IS_PRIVATE = ABSTRACT_NAMED_DECLARATION__IS_PRIVATE;
+
+ /**
+ * The feature id for the '<em><b>Guard</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ADVICE__GUARD = ABSTRACT_NAMED_DECLARATION__GUARD;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ADVICE__NAME = ABSTRACT_NAMED_DECLARATION__NAME;
+
+ /**
+ * The number of structural features of the '<em>Advice</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ADVICE_FEATURE_COUNT = ABSTRACT_NAMED_DECLARATION_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xpand3.declaration.impl.ExtensionImpl <em>Extension</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.declaration.impl.ExtensionImpl
+ * @see org.eclipse.xpand3.declaration.impl.DeclarationPackageImpl#getExtension()
+ * @generated
+ */
+ int EXTENSION = 4;
+
+ /**
+ * The feature id for the '<em><b>Line</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXTENSION__LINE = ABSTRACT_NAMED_DECLARATION__LINE;
+
+ /**
+ * The feature id for the '<em><b>Start</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXTENSION__START = ABSTRACT_NAMED_DECLARATION__START;
+
+ /**
+ * The feature id for the '<em><b>End</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXTENSION__END = ABSTRACT_NAMED_DECLARATION__END;
+
+ /**
+ * The feature id for the '<em><b>File Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXTENSION__FILE_NAME = ABSTRACT_NAMED_DECLARATION__FILE_NAME;
+
+ /**
+ * The feature id for the '<em><b>Owner</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXTENSION__OWNER = ABSTRACT_NAMED_DECLARATION__OWNER;
+
+ /**
+ * The feature id for the '<em><b>Params</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXTENSION__PARAMS = ABSTRACT_NAMED_DECLARATION__PARAMS;
+
+ /**
+ * The feature id for the '<em><b>Is Private</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXTENSION__IS_PRIVATE = ABSTRACT_NAMED_DECLARATION__IS_PRIVATE;
+
+ /**
+ * The feature id for the '<em><b>Guard</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXTENSION__GUARD = ABSTRACT_NAMED_DECLARATION__GUARD;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXTENSION__NAME = ABSTRACT_NAMED_DECLARATION__NAME;
+
+ /**
+ * The feature id for the '<em><b>Cached</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXTENSION__CACHED = ABSTRACT_NAMED_DECLARATION_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Extension</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXTENSION_FEATURE_COUNT = ABSTRACT_NAMED_DECLARATION_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xpand3.declaration.impl.AbstractAspectImpl <em>Abstract Aspect</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.declaration.impl.AbstractAspectImpl
+ * @see org.eclipse.xpand3.declaration.impl.DeclarationPackageImpl#getAbstractAspect()
+ * @generated
+ */
+ int ABSTRACT_ASPECT = 5;
+
+ /**
+ * The feature id for the '<em><b>Line</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_ASPECT__LINE = Xpand3Package.SYNTAX_ELEMENT__LINE;
+
+ /**
+ * The feature id for the '<em><b>Start</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_ASPECT__START = Xpand3Package.SYNTAX_ELEMENT__START;
+
+ /**
+ * The feature id for the '<em><b>End</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_ASPECT__END = Xpand3Package.SYNTAX_ELEMENT__END;
+
+ /**
+ * The feature id for the '<em><b>File Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_ASPECT__FILE_NAME = Xpand3Package.SYNTAX_ELEMENT__FILE_NAME;
+
+ /**
+ * The feature id for the '<em><b>Pointcut</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_ASPECT__POINTCUT = Xpand3Package.SYNTAX_ELEMENT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Params</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_ASPECT__PARAMS = Xpand3Package.SYNTAX_ELEMENT_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Wildparams</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_ASPECT__WILDPARAMS = Xpand3Package.SYNTAX_ELEMENT_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>Abstract Aspect</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_ASPECT_FEATURE_COUNT = Xpand3Package.SYNTAX_ELEMENT_FEATURE_COUNT + 3;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xpand3.declaration.impl.ExtensionAspectImpl <em>Extension Aspect</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.declaration.impl.ExtensionAspectImpl
+ * @see org.eclipse.xpand3.declaration.impl.DeclarationPackageImpl#getExtensionAspect()
+ * @generated
+ */
+ int EXTENSION_ASPECT = 6;
+
+ /**
+ * The feature id for the '<em><b>Line</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXTENSION_ASPECT__LINE = ABSTRACT_ASPECT__LINE;
+
+ /**
+ * The feature id for the '<em><b>Start</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXTENSION_ASPECT__START = ABSTRACT_ASPECT__START;
+
+ /**
+ * The feature id for the '<em><b>End</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXTENSION_ASPECT__END = ABSTRACT_ASPECT__END;
+
+ /**
+ * The feature id for the '<em><b>File Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXTENSION_ASPECT__FILE_NAME = ABSTRACT_ASPECT__FILE_NAME;
+
+ /**
+ * The feature id for the '<em><b>Pointcut</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXTENSION_ASPECT__POINTCUT = ABSTRACT_ASPECT__POINTCUT;
+
+ /**
+ * The feature id for the '<em><b>Params</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXTENSION_ASPECT__PARAMS = ABSTRACT_ASPECT__PARAMS;
+
+ /**
+ * The feature id for the '<em><b>Wildparams</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXTENSION_ASPECT__WILDPARAMS = ABSTRACT_ASPECT__WILDPARAMS;
+
+ /**
+ * The feature id for the '<em><b>Expression</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXTENSION_ASPECT__EXPRESSION = ABSTRACT_ASPECT_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Extension Aspect</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXTENSION_ASPECT_FEATURE_COUNT = ABSTRACT_ASPECT_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xpand3.declaration.impl.DefinitionAspectImpl <em>Definition Aspect</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.declaration.impl.DefinitionAspectImpl
+ * @see org.eclipse.xpand3.declaration.impl.DeclarationPackageImpl#getDefinitionAspect()
+ * @generated
+ */
+ int DEFINITION_ASPECT = 7;
+
+ /**
+ * The feature id for the '<em><b>Line</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DEFINITION_ASPECT__LINE = ABSTRACT_ASPECT__LINE;
+
+ /**
+ * The feature id for the '<em><b>Start</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DEFINITION_ASPECT__START = ABSTRACT_ASPECT__START;
+
+ /**
+ * The feature id for the '<em><b>End</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DEFINITION_ASPECT__END = ABSTRACT_ASPECT__END;
+
+ /**
+ * The feature id for the '<em><b>File Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DEFINITION_ASPECT__FILE_NAME = ABSTRACT_ASPECT__FILE_NAME;
+
+ /**
+ * The feature id for the '<em><b>Pointcut</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DEFINITION_ASPECT__POINTCUT = ABSTRACT_ASPECT__POINTCUT;
+
+ /**
+ * The feature id for the '<em><b>Params</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DEFINITION_ASPECT__PARAMS = ABSTRACT_ASPECT__PARAMS;
+
+ /**
+ * The feature id for the '<em><b>Wildparams</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DEFINITION_ASPECT__WILDPARAMS = ABSTRACT_ASPECT__WILDPARAMS;
+
+ /**
+ * The feature id for the '<em><b>Body</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DEFINITION_ASPECT__BODY = ABSTRACT_ASPECT_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Definition Aspect</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DEFINITION_ASPECT_FEATURE_COUNT = ABSTRACT_ASPECT_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xpand3.declaration.impl.CheckImpl <em>Check</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.declaration.impl.CheckImpl
+ * @see org.eclipse.xpand3.declaration.impl.DeclarationPackageImpl#getCheck()
+ * @generated
+ */
+ int CHECK = 8;
+
+ /**
+ * The feature id for the '<em><b>Line</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CHECK__LINE = ABSTRACT_DECLARATION__LINE;
+
+ /**
+ * The feature id for the '<em><b>Start</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CHECK__START = ABSTRACT_DECLARATION__START;
+
+ /**
+ * The feature id for the '<em><b>End</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CHECK__END = ABSTRACT_DECLARATION__END;
+
+ /**
+ * The feature id for the '<em><b>File Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CHECK__FILE_NAME = ABSTRACT_DECLARATION__FILE_NAME;
+
+ /**
+ * The feature id for the '<em><b>Owner</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CHECK__OWNER = ABSTRACT_DECLARATION__OWNER;
+
+ /**
+ * The feature id for the '<em><b>Params</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CHECK__PARAMS = ABSTRACT_DECLARATION__PARAMS;
+
+ /**
+ * The feature id for the '<em><b>Is Private</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CHECK__IS_PRIVATE = ABSTRACT_DECLARATION__IS_PRIVATE;
+
+ /**
+ * The feature id for the '<em><b>Guard</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CHECK__GUARD = ABSTRACT_DECLARATION__GUARD;
+
+ /**
+ * The feature id for the '<em><b>Error Severity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CHECK__ERROR_SEVERITY = ABSTRACT_DECLARATION_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Msg</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CHECK__MSG = ABSTRACT_DECLARATION_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Constraint</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CHECK__CONSTRAINT = ABSTRACT_DECLARATION_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Feature</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CHECK__FEATURE = ABSTRACT_DECLARATION_FEATURE_COUNT + 3;
+
+ /**
+ * The number of structural features of the '<em>Check</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CHECK_FEATURE_COUNT = ABSTRACT_DECLARATION_FEATURE_COUNT + 4;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xpand3.declaration.impl.CreateExtensionStatementImpl <em>Create Extension Statement</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.declaration.impl.CreateExtensionStatementImpl
+ * @see org.eclipse.xpand3.declaration.impl.DeclarationPackageImpl#getCreateExtensionStatement()
+ * @generated
+ */
+ int CREATE_EXTENSION_STATEMENT = 9;
+
+ /**
+ * The feature id for the '<em><b>Line</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CREATE_EXTENSION_STATEMENT__LINE = EXTENSION__LINE;
+
+ /**
+ * The feature id for the '<em><b>Start</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CREATE_EXTENSION_STATEMENT__START = EXTENSION__START;
+
+ /**
+ * The feature id for the '<em><b>End</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CREATE_EXTENSION_STATEMENT__END = EXTENSION__END;
+
+ /**
+ * The feature id for the '<em><b>File Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CREATE_EXTENSION_STATEMENT__FILE_NAME = EXTENSION__FILE_NAME;
+
+ /**
+ * The feature id for the '<em><b>Owner</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CREATE_EXTENSION_STATEMENT__OWNER = EXTENSION__OWNER;
+
+ /**
+ * The feature id for the '<em><b>Params</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CREATE_EXTENSION_STATEMENT__PARAMS = EXTENSION__PARAMS;
+
+ /**
+ * The feature id for the '<em><b>Is Private</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CREATE_EXTENSION_STATEMENT__IS_PRIVATE = EXTENSION__IS_PRIVATE;
+
+ /**
+ * The feature id for the '<em><b>Guard</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CREATE_EXTENSION_STATEMENT__GUARD = EXTENSION__GUARD;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CREATE_EXTENSION_STATEMENT__NAME = EXTENSION__NAME;
+
+ /**
+ * The feature id for the '<em><b>Cached</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CREATE_EXTENSION_STATEMENT__CACHED = EXTENSION__CACHED;
+
+ /**
+ * The feature id for the '<em><b>To Be Created</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CREATE_EXTENSION_STATEMENT__TO_BE_CREATED = EXTENSION_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Create Extension Statement</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CREATE_EXTENSION_STATEMENT_FEATURE_COUNT = EXTENSION_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xpand3.declaration.impl.JavaExtensionStatementImpl <em>Java Extension Statement</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.declaration.impl.JavaExtensionStatementImpl
+ * @see org.eclipse.xpand3.declaration.impl.DeclarationPackageImpl#getJavaExtensionStatement()
+ * @generated
+ */
+ int JAVA_EXTENSION_STATEMENT = 10;
+
+ /**
+ * The feature id for the '<em><b>Line</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int JAVA_EXTENSION_STATEMENT__LINE = ABSTRACT_NAMED_DECLARATION__LINE;
+
+ /**
+ * The feature id for the '<em><b>Start</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int JAVA_EXTENSION_STATEMENT__START = ABSTRACT_NAMED_DECLARATION__START;
+
+ /**
+ * The feature id for the '<em><b>End</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int JAVA_EXTENSION_STATEMENT__END = ABSTRACT_NAMED_DECLARATION__END;
+
+ /**
+ * The feature id for the '<em><b>File Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int JAVA_EXTENSION_STATEMENT__FILE_NAME = ABSTRACT_NAMED_DECLARATION__FILE_NAME;
+
+ /**
+ * The feature id for the '<em><b>Owner</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int JAVA_EXTENSION_STATEMENT__OWNER = ABSTRACT_NAMED_DECLARATION__OWNER;
+
+ /**
+ * The feature id for the '<em><b>Params</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int JAVA_EXTENSION_STATEMENT__PARAMS = ABSTRACT_NAMED_DECLARATION__PARAMS;
+
+ /**
+ * The feature id for the '<em><b>Is Private</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int JAVA_EXTENSION_STATEMENT__IS_PRIVATE = ABSTRACT_NAMED_DECLARATION__IS_PRIVATE;
+
+ /**
+ * The feature id for the '<em><b>Guard</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int JAVA_EXTENSION_STATEMENT__GUARD = ABSTRACT_NAMED_DECLARATION__GUARD;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int JAVA_EXTENSION_STATEMENT__NAME = ABSTRACT_NAMED_DECLARATION__NAME;
+
+ /**
+ * The feature id for the '<em><b>Java Type</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int JAVA_EXTENSION_STATEMENT__JAVA_TYPE = ABSTRACT_NAMED_DECLARATION_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Java Method</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int JAVA_EXTENSION_STATEMENT__JAVA_METHOD = ABSTRACT_NAMED_DECLARATION_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Java Param Types</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int JAVA_EXTENSION_STATEMENT__JAVA_PARAM_TYPES = ABSTRACT_NAMED_DECLARATION_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>Java Extension Statement</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int JAVA_EXTENSION_STATEMENT_FEATURE_COUNT = ABSTRACT_NAMED_DECLARATION_FEATURE_COUNT + 3;
+
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xpand3.declaration.AbstractDeclaration <em>Abstract Declaration</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Abstract Declaration</em>'.
+ * @see org.eclipse.xpand3.declaration.AbstractDeclaration
+ * @generated
+ */
+ EClass getAbstractDeclaration();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.xpand3.declaration.AbstractDeclaration#getOwner <em>Owner</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Owner</em>'.
+ * @see org.eclipse.xpand3.declaration.AbstractDeclaration#getOwner()
+ * @see #getAbstractDeclaration()
+ * @generated
+ */
+ EReference getAbstractDeclaration_Owner();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.xpand3.declaration.AbstractDeclaration#getParams <em>Params</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Params</em>'.
+ * @see org.eclipse.xpand3.declaration.AbstractDeclaration#getParams()
+ * @see #getAbstractDeclaration()
+ * @generated
+ */
+ EReference getAbstractDeclaration_Params();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xpand3.declaration.AbstractDeclaration#isIsPrivate <em>Is Private</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Is Private</em>'.
+ * @see org.eclipse.xpand3.declaration.AbstractDeclaration#isIsPrivate()
+ * @see #getAbstractDeclaration()
+ * @generated
+ */
+ EAttribute getAbstractDeclaration_IsPrivate();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.xpand3.declaration.AbstractDeclaration#getGuard <em>Guard</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Guard</em>'.
+ * @see org.eclipse.xpand3.declaration.AbstractDeclaration#getGuard()
+ * @see #getAbstractDeclaration()
+ * @generated
+ */
+ EReference getAbstractDeclaration_Guard();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xpand3.declaration.AbstractNamedDeclaration <em>Abstract Named Declaration</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Abstract Named Declaration</em>'.
+ * @see org.eclipse.xpand3.declaration.AbstractNamedDeclaration
+ * @generated
+ */
+ EClass getAbstractNamedDeclaration();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.xpand3.declaration.AbstractNamedDeclaration#getName <em>Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Name</em>'.
+ * @see org.eclipse.xpand3.declaration.AbstractNamedDeclaration#getName()
+ * @see #getAbstractNamedDeclaration()
+ * @generated
+ */
+ EReference getAbstractNamedDeclaration_Name();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xpand3.declaration.Definition <em>Definition</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Definition</em>'.
+ * @see org.eclipse.xpand3.declaration.Definition
+ * @generated
+ */
+ EClass getDefinition();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.xpand3.declaration.Definition#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.xpand3.declaration.Definition#getBody()
+ * @see #getDefinition()
+ * @generated
+ */
+ EReference getDefinition_Body();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xpand3.declaration.Advice <em>Advice</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Advice</em>'.
+ * @see org.eclipse.xpand3.declaration.Advice
+ * @generated
+ */
+ EClass getAdvice();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xpand3.declaration.Extension <em>Extension</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Extension</em>'.
+ * @see org.eclipse.xpand3.declaration.Extension
+ * @generated
+ */
+ EClass getExtension();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xpand3.declaration.Extension#isCached <em>Cached</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Cached</em>'.
+ * @see org.eclipse.xpand3.declaration.Extension#isCached()
+ * @see #getExtension()
+ * @generated
+ */
+ EAttribute getExtension_Cached();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xpand3.declaration.AbstractAspect <em>Abstract Aspect</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Abstract Aspect</em>'.
+ * @see org.eclipse.xpand3.declaration.AbstractAspect
+ * @generated
+ */
+ EClass getAbstractAspect();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.xpand3.declaration.AbstractAspect#getPointcut <em>Pointcut</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Pointcut</em>'.
+ * @see org.eclipse.xpand3.declaration.AbstractAspect#getPointcut()
+ * @see #getAbstractAspect()
+ * @generated
+ */
+ EReference getAbstractAspect_Pointcut();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.xpand3.declaration.AbstractAspect#getParams <em>Params</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Params</em>'.
+ * @see org.eclipse.xpand3.declaration.AbstractAspect#getParams()
+ * @see #getAbstractAspect()
+ * @generated
+ */
+ EReference getAbstractAspect_Params();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xpand3.declaration.AbstractAspect#isWildparams <em>Wildparams</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Wildparams</em>'.
+ * @see org.eclipse.xpand3.declaration.AbstractAspect#isWildparams()
+ * @see #getAbstractAspect()
+ * @generated
+ */
+ EAttribute getAbstractAspect_Wildparams();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xpand3.declaration.ExtensionAspect <em>Extension Aspect</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Extension Aspect</em>'.
+ * @see org.eclipse.xpand3.declaration.ExtensionAspect
+ * @generated
+ */
+ EClass getExtensionAspect();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.xpand3.declaration.ExtensionAspect#getExpression <em>Expression</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Expression</em>'.
+ * @see org.eclipse.xpand3.declaration.ExtensionAspect#getExpression()
+ * @see #getExtensionAspect()
+ * @generated
+ */
+ EReference getExtensionAspect_Expression();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xpand3.declaration.DefinitionAspect <em>Definition Aspect</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Definition Aspect</em>'.
+ * @see org.eclipse.xpand3.declaration.DefinitionAspect
+ * @generated
+ */
+ EClass getDefinitionAspect();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.xpand3.declaration.DefinitionAspect#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.xpand3.declaration.DefinitionAspect#getBody()
+ * @see #getDefinitionAspect()
+ * @generated
+ */
+ EReference getDefinitionAspect_Body();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xpand3.declaration.Check <em>Check</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Check</em>'.
+ * @see org.eclipse.xpand3.declaration.Check
+ * @generated
+ */
+ EClass getCheck();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xpand3.declaration.Check#isErrorSeverity <em>Error Severity</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Error Severity</em>'.
+ * @see org.eclipse.xpand3.declaration.Check#isErrorSeverity()
+ * @see #getCheck()
+ * @generated
+ */
+ EAttribute getCheck_ErrorSeverity();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.xpand3.declaration.Check#getMsg <em>Msg</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Msg</em>'.
+ * @see org.eclipse.xpand3.declaration.Check#getMsg()
+ * @see #getCheck()
+ * @generated
+ */
+ EReference getCheck_Msg();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.xpand3.declaration.Check#getConstraint <em>Constraint</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Constraint</em>'.
+ * @see org.eclipse.xpand3.declaration.Check#getConstraint()
+ * @see #getCheck()
+ * @generated
+ */
+ EReference getCheck_Constraint();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xpand3.declaration.Check#getFeature <em>Feature</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Feature</em>'.
+ * @see org.eclipse.xpand3.declaration.Check#getFeature()
+ * @see #getCheck()
+ * @generated
+ */
+ EAttribute getCheck_Feature();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xpand3.declaration.CreateExtensionStatement <em>Create Extension Statement</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Create Extension Statement</em>'.
+ * @see org.eclipse.xpand3.declaration.CreateExtensionStatement
+ * @generated
+ */
+ EClass getCreateExtensionStatement();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.xpand3.declaration.CreateExtensionStatement#getToBeCreated <em>To Be Created</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>To Be Created</em>'.
+ * @see org.eclipse.xpand3.declaration.CreateExtensionStatement#getToBeCreated()
+ * @see #getCreateExtensionStatement()
+ * @generated
+ */
+ EReference getCreateExtensionStatement_ToBeCreated();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xpand3.declaration.JavaExtensionStatement <em>Java Extension Statement</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Java Extension Statement</em>'.
+ * @see org.eclipse.xpand3.declaration.JavaExtensionStatement
+ * @generated
+ */
+ EClass getJavaExtensionStatement();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.xpand3.declaration.JavaExtensionStatement#getJavaType <em>Java Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Java Type</em>'.
+ * @see org.eclipse.xpand3.declaration.JavaExtensionStatement#getJavaType()
+ * @see #getJavaExtensionStatement()
+ * @generated
+ */
+ EReference getJavaExtensionStatement_JavaType();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.xpand3.declaration.JavaExtensionStatement#getJavaMethod <em>Java Method</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Java Method</em>'.
+ * @see org.eclipse.xpand3.declaration.JavaExtensionStatement#getJavaMethod()
+ * @see #getJavaExtensionStatement()
+ * @generated
+ */
+ EReference getJavaExtensionStatement_JavaMethod();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.xpand3.declaration.JavaExtensionStatement#getJavaParamTypes <em>Java Param Types</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Java Param Types</em>'.
+ * @see org.eclipse.xpand3.declaration.JavaExtensionStatement#getJavaParamTypes()
+ * @see #getJavaExtensionStatement()
+ * @generated
+ */
+ EReference getJavaExtensionStatement_JavaParamTypes();
+
+ /**
+ * 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
+ */
+ DeclarationFactory getDeclarationFactory();
+
+ /**
+ * <!-- 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.xpand3.declaration.impl.AbstractDeclarationImpl <em>Abstract Declaration</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.declaration.impl.AbstractDeclarationImpl
+ * @see org.eclipse.xpand3.declaration.impl.DeclarationPackageImpl#getAbstractDeclaration()
+ * @generated
+ */
+ EClass ABSTRACT_DECLARATION = eINSTANCE.getAbstractDeclaration();
+
+ /**
+ * The meta object literal for the '<em><b>Owner</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference ABSTRACT_DECLARATION__OWNER = eINSTANCE.getAbstractDeclaration_Owner();
+
+ /**
+ * The meta object literal for the '<em><b>Params</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference ABSTRACT_DECLARATION__PARAMS = eINSTANCE.getAbstractDeclaration_Params();
+
+ /**
+ * The meta object literal for the '<em><b>Is Private</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute ABSTRACT_DECLARATION__IS_PRIVATE = eINSTANCE.getAbstractDeclaration_IsPrivate();
+
+ /**
+ * The meta object literal for the '<em><b>Guard</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference ABSTRACT_DECLARATION__GUARD = eINSTANCE.getAbstractDeclaration_Guard();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xpand3.declaration.impl.AbstractNamedDeclarationImpl <em>Abstract Named Declaration</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.declaration.impl.AbstractNamedDeclarationImpl
+ * @see org.eclipse.xpand3.declaration.impl.DeclarationPackageImpl#getAbstractNamedDeclaration()
+ * @generated
+ */
+ EClass ABSTRACT_NAMED_DECLARATION = eINSTANCE.getAbstractNamedDeclaration();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference ABSTRACT_NAMED_DECLARATION__NAME = eINSTANCE.getAbstractNamedDeclaration_Name();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xpand3.declaration.impl.DefinitionImpl <em>Definition</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.declaration.impl.DefinitionImpl
+ * @see org.eclipse.xpand3.declaration.impl.DeclarationPackageImpl#getDefinition()
+ * @generated
+ */
+ EClass DEFINITION = eINSTANCE.getDefinition();
+
+ /**
+ * The meta object literal for the '<em><b>Body</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference DEFINITION__BODY = eINSTANCE.getDefinition_Body();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xpand3.declaration.impl.AdviceImpl <em>Advice</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.declaration.impl.AdviceImpl
+ * @see org.eclipse.xpand3.declaration.impl.DeclarationPackageImpl#getAdvice()
+ * @generated
+ */
+ EClass ADVICE = eINSTANCE.getAdvice();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xpand3.declaration.impl.ExtensionImpl <em>Extension</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.declaration.impl.ExtensionImpl
+ * @see org.eclipse.xpand3.declaration.impl.DeclarationPackageImpl#getExtension()
+ * @generated
+ */
+ EClass EXTENSION = eINSTANCE.getExtension();
+
+ /**
+ * The meta object literal for the '<em><b>Cached</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute EXTENSION__CACHED = eINSTANCE.getExtension_Cached();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xpand3.declaration.impl.AbstractAspectImpl <em>Abstract Aspect</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.declaration.impl.AbstractAspectImpl
+ * @see org.eclipse.xpand3.declaration.impl.DeclarationPackageImpl#getAbstractAspect()
+ * @generated
+ */
+ EClass ABSTRACT_ASPECT = eINSTANCE.getAbstractAspect();
+
+ /**
+ * The meta object literal for the '<em><b>Pointcut</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference ABSTRACT_ASPECT__POINTCUT = eINSTANCE.getAbstractAspect_Pointcut();
+
+ /**
+ * The meta object literal for the '<em><b>Params</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference ABSTRACT_ASPECT__PARAMS = eINSTANCE.getAbstractAspect_Params();
+
+ /**
+ * The meta object literal for the '<em><b>Wildparams</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute ABSTRACT_ASPECT__WILDPARAMS = eINSTANCE.getAbstractAspect_Wildparams();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xpand3.declaration.impl.ExtensionAspectImpl <em>Extension Aspect</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.declaration.impl.ExtensionAspectImpl
+ * @see org.eclipse.xpand3.declaration.impl.DeclarationPackageImpl#getExtensionAspect()
+ * @generated
+ */
+ EClass EXTENSION_ASPECT = eINSTANCE.getExtensionAspect();
+
+ /**
+ * The meta object literal for the '<em><b>Expression</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference EXTENSION_ASPECT__EXPRESSION = eINSTANCE.getExtensionAspect_Expression();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xpand3.declaration.impl.DefinitionAspectImpl <em>Definition Aspect</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.declaration.impl.DefinitionAspectImpl
+ * @see org.eclipse.xpand3.declaration.impl.DeclarationPackageImpl#getDefinitionAspect()
+ * @generated
+ */
+ EClass DEFINITION_ASPECT = eINSTANCE.getDefinitionAspect();
+
+ /**
+ * The meta object literal for the '<em><b>Body</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference DEFINITION_ASPECT__BODY = eINSTANCE.getDefinitionAspect_Body();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xpand3.declaration.impl.CheckImpl <em>Check</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.declaration.impl.CheckImpl
+ * @see org.eclipse.xpand3.declaration.impl.DeclarationPackageImpl#getCheck()
+ * @generated
+ */
+ EClass CHECK = eINSTANCE.getCheck();
+
+ /**
+ * The meta object literal for the '<em><b>Error Severity</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute CHECK__ERROR_SEVERITY = eINSTANCE.getCheck_ErrorSeverity();
+
+ /**
+ * The meta object literal for the '<em><b>Msg</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference CHECK__MSG = eINSTANCE.getCheck_Msg();
+
+ /**
+ * The meta object literal for the '<em><b>Constraint</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference CHECK__CONSTRAINT = eINSTANCE.getCheck_Constraint();
+
+ /**
+ * The meta object literal for the '<em><b>Feature</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute CHECK__FEATURE = eINSTANCE.getCheck_Feature();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xpand3.declaration.impl.CreateExtensionStatementImpl <em>Create Extension Statement</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.declaration.impl.CreateExtensionStatementImpl
+ * @see org.eclipse.xpand3.declaration.impl.DeclarationPackageImpl#getCreateExtensionStatement()
+ * @generated
+ */
+ EClass CREATE_EXTENSION_STATEMENT = eINSTANCE.getCreateExtensionStatement();
+
+ /**
+ * The meta object literal for the '<em><b>To Be Created</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference CREATE_EXTENSION_STATEMENT__TO_BE_CREATED = eINSTANCE.getCreateExtensionStatement_ToBeCreated();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xpand3.declaration.impl.JavaExtensionStatementImpl <em>Java Extension Statement</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.declaration.impl.JavaExtensionStatementImpl
+ * @see org.eclipse.xpand3.declaration.impl.DeclarationPackageImpl#getJavaExtensionStatement()
+ * @generated
+ */
+ EClass JAVA_EXTENSION_STATEMENT = eINSTANCE.getJavaExtensionStatement();
+
+ /**
+ * The meta object literal for the '<em><b>Java Type</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference JAVA_EXTENSION_STATEMENT__JAVA_TYPE = eINSTANCE.getJavaExtensionStatement_JavaType();
+
+ /**
+ * The meta object literal for the '<em><b>Java Method</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference JAVA_EXTENSION_STATEMENT__JAVA_METHOD = eINSTANCE.getJavaExtensionStatement_JavaMethod();
+
+ /**
+ * The meta object literal for the '<em><b>Java Param Types</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference JAVA_EXTENSION_STATEMENT__JAVA_PARAM_TYPES = eINSTANCE.getJavaExtensionStatement_JavaParamTypes();
+
+ }
+
+} //DeclarationPackage
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/Definition.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/Definition.java
new file mode 100644
index 0000000..9e05dab
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/Definition.java
@@ -0,0 +1,46 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: Definition.java,v 1.1 2008/02/27 13:21:10 sefftinge Exp $
+ */
+package org.eclipse.xpand3.declaration;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.xpand3.statement.AbstractStatement;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Definition</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.xpand3.declaration.Definition#getBody <em>Body</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.xpand3.declaration.DeclarationPackage#getDefinition()
+ * @model
+ * @generated
+ */
+public interface Definition extends AbstractNamedDeclaration {
+ /**
+ * Returns the value of the '<em><b>Body</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.xpand3.statement.AbstractStatement}.
+ * <!-- 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.xpand3.declaration.DeclarationPackage#getDefinition_Body()
+ * @model containment="true"
+ * @generated
+ */
+ EList<AbstractStatement> getBody();
+
+} // Definition
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/DefinitionAspect.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/DefinitionAspect.java
new file mode 100644
index 0000000..95be883
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/DefinitionAspect.java
@@ -0,0 +1,46 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: DefinitionAspect.java,v 1.1 2008/02/27 13:21:10 sefftinge Exp $
+ */
+package org.eclipse.xpand3.declaration;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.xpand3.statement.AbstractStatement;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Definition Aspect</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.xpand3.declaration.DefinitionAspect#getBody <em>Body</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.xpand3.declaration.DeclarationPackage#getDefinitionAspect()
+ * @model
+ * @generated
+ */
+public interface DefinitionAspect extends AbstractAspect {
+ /**
+ * Returns the value of the '<em><b>Body</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.xpand3.statement.AbstractStatement}.
+ * <!-- 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.xpand3.declaration.DeclarationPackage#getDefinitionAspect_Body()
+ * @model containment="true"
+ * @generated
+ */
+ EList<AbstractStatement> getBody();
+
+} // DefinitionAspect
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/Extension.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/Extension.java
new file mode 100644
index 0000000..8f7d04f
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/Extension.java
@@ -0,0 +1,53 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: Extension.java,v 1.1 2008/02/27 13:21:10 sefftinge Exp $
+ */
+package org.eclipse.xpand3.declaration;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Extension</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.xpand3.declaration.Extension#isCached <em>Cached</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.xpand3.declaration.DeclarationPackage#getExtension()
+ * @model
+ * @generated
+ */
+public interface Extension extends AbstractNamedDeclaration {
+ /**
+ * Returns the value of the '<em><b>Cached</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Cached</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Cached</em>' attribute.
+ * @see #setCached(boolean)
+ * @see org.eclipse.xpand3.declaration.DeclarationPackage#getExtension_Cached()
+ * @model
+ * @generated
+ */
+ boolean isCached();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xpand3.declaration.Extension#isCached <em>Cached</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Cached</em>' attribute.
+ * @see #isCached()
+ * @generated
+ */
+ void setCached(boolean value);
+
+} // Extension
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/ExtensionAspect.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/ExtensionAspect.java
new file mode 100644
index 0000000..bbc3322
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/ExtensionAspect.java
@@ -0,0 +1,54 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: ExtensionAspect.java,v 1.1 2008/02/27 13:21:10 sefftinge Exp $
+ */
+package org.eclipse.xpand3.declaration;
+
+import org.eclipse.xpand3.expression.AbstractExpression;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Extension Aspect</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.xpand3.declaration.ExtensionAspect#getExpression <em>Expression</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.xpand3.declaration.DeclarationPackage#getExtensionAspect()
+ * @model
+ * @generated
+ */
+public interface ExtensionAspect extends AbstractAspect {
+ /**
+ * 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(AbstractExpression)
+ * @see org.eclipse.xpand3.declaration.DeclarationPackage#getExtensionAspect_Expression()
+ * @model containment="true"
+ * @generated
+ */
+ AbstractExpression getExpression();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xpand3.declaration.ExtensionAspect#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(AbstractExpression value);
+
+} // ExtensionAspect
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/JavaExtensionStatement.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/JavaExtensionStatement.java
new file mode 100644
index 0000000..ef1e51d
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/JavaExtensionStatement.java
@@ -0,0 +1,100 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: JavaExtensionStatement.java,v 1.1 2008/02/27 13:21:10 sefftinge Exp $
+ */
+package org.eclipse.xpand3.declaration;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.xpand3.Identifier;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Java Extension Statement</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.xpand3.declaration.JavaExtensionStatement#getJavaType <em>Java Type</em>}</li>
+ * <li>{@link org.eclipse.xpand3.declaration.JavaExtensionStatement#getJavaMethod <em>Java Method</em>}</li>
+ * <li>{@link org.eclipse.xpand3.declaration.JavaExtensionStatement#getJavaParamTypes <em>Java Param Types</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.xpand3.declaration.DeclarationPackage#getJavaExtensionStatement()
+ * @model
+ * @generated
+ */
+public interface JavaExtensionStatement extends AbstractNamedDeclaration {
+ /**
+ * Returns the value of the '<em><b>Java Type</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Java Type</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>Java Type</em>' containment reference.
+ * @see #setJavaType(Identifier)
+ * @see org.eclipse.xpand3.declaration.DeclarationPackage#getJavaExtensionStatement_JavaType()
+ * @model containment="true"
+ * @generated
+ */
+ Identifier getJavaType();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xpand3.declaration.JavaExtensionStatement#getJavaType <em>Java Type</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Java Type</em>' containment reference.
+ * @see #getJavaType()
+ * @generated
+ */
+ void setJavaType(Identifier value);
+
+ /**
+ * Returns the value of the '<em><b>Java Method</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Java Method</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>Java Method</em>' containment reference.
+ * @see #setJavaMethod(Identifier)
+ * @see org.eclipse.xpand3.declaration.DeclarationPackage#getJavaExtensionStatement_JavaMethod()
+ * @model containment="true"
+ * @generated
+ */
+ Identifier getJavaMethod();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xpand3.declaration.JavaExtensionStatement#getJavaMethod <em>Java Method</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Java Method</em>' containment reference.
+ * @see #getJavaMethod()
+ * @generated
+ */
+ void setJavaMethod(Identifier value);
+
+ /**
+ * Returns the value of the '<em><b>Java Param Types</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.xpand3.Identifier}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Java Param Types</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>Java Param Types</em>' containment reference list.
+ * @see org.eclipse.xpand3.declaration.DeclarationPackage#getJavaExtensionStatement_JavaParamTypes()
+ * @model containment="true"
+ * @generated
+ */
+ EList<Identifier> getJavaParamTypes();
+
+} // JavaExtensionStatement
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/impl/AbstractAspectImpl.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/impl/AbstractAspectImpl.java
new file mode 100644
index 0000000..df67802
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/impl/AbstractAspectImpl.java
@@ -0,0 +1,295 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: AbstractAspectImpl.java,v 1.1 2008/02/27 13:21:08 sefftinge Exp $
+ */
+package org.eclipse.xpand3.declaration.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.xpand3.DeclaredParameter;
+import org.eclipse.xpand3.Identifier;
+
+import org.eclipse.xpand3.declaration.AbstractAspect;
+import org.eclipse.xpand3.declaration.DeclarationPackage;
+
+import org.eclipse.xpand3.impl.SyntaxElementImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Abstract Aspect</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.xpand3.declaration.impl.AbstractAspectImpl#getPointcut <em>Pointcut</em>}</li>
+ * <li>{@link org.eclipse.xpand3.declaration.impl.AbstractAspectImpl#getParams <em>Params</em>}</li>
+ * <li>{@link org.eclipse.xpand3.declaration.impl.AbstractAspectImpl#isWildparams <em>Wildparams</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class AbstractAspectImpl extends SyntaxElementImpl implements AbstractAspect {
+ /**
+ * The cached value of the '{@link #getPointcut() <em>Pointcut</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPointcut()
+ * @generated
+ * @ordered
+ */
+ protected Identifier pointcut;
+
+ /**
+ * The cached value of the '{@link #getParams() <em>Params</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getParams()
+ * @generated
+ * @ordered
+ */
+ protected EList<DeclaredParameter> params;
+
+ /**
+ * The default value of the '{@link #isWildparams() <em>Wildparams</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isWildparams()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean WILDPARAMS_EDEFAULT = false;
+
+ /**
+ * The cached value of the '{@link #isWildparams() <em>Wildparams</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isWildparams()
+ * @generated
+ * @ordered
+ */
+ protected boolean wildparams = WILDPARAMS_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected AbstractAspectImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return DeclarationPackage.Literals.ABSTRACT_ASPECT;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Identifier getPointcut() {
+ return pointcut;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetPointcut(Identifier newPointcut, NotificationChain msgs) {
+ Identifier oldPointcut = pointcut;
+ pointcut = newPointcut;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, DeclarationPackage.ABSTRACT_ASPECT__POINTCUT, oldPointcut, newPointcut);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setPointcut(Identifier newPointcut) {
+ if (newPointcut != pointcut) {
+ NotificationChain msgs = null;
+ if (pointcut != null)
+ msgs = ((InternalEObject)pointcut).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - DeclarationPackage.ABSTRACT_ASPECT__POINTCUT, null, msgs);
+ if (newPointcut != null)
+ msgs = ((InternalEObject)newPointcut).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - DeclarationPackage.ABSTRACT_ASPECT__POINTCUT, null, msgs);
+ msgs = basicSetPointcut(newPointcut, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, DeclarationPackage.ABSTRACT_ASPECT__POINTCUT, newPointcut, newPointcut));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<DeclaredParameter> getParams() {
+ if (params == null) {
+ params = new EObjectContainmentEList<DeclaredParameter>(DeclaredParameter.class, this, DeclarationPackage.ABSTRACT_ASPECT__PARAMS);
+ }
+ return params;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isWildparams() {
+ return wildparams;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setWildparams(boolean newWildparams) {
+ boolean oldWildparams = wildparams;
+ wildparams = newWildparams;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, DeclarationPackage.ABSTRACT_ASPECT__WILDPARAMS, oldWildparams, wildparams));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case DeclarationPackage.ABSTRACT_ASPECT__POINTCUT:
+ return basicSetPointcut(null, msgs);
+ case DeclarationPackage.ABSTRACT_ASPECT__PARAMS:
+ return ((InternalEList<?>)getParams()).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 DeclarationPackage.ABSTRACT_ASPECT__POINTCUT:
+ return getPointcut();
+ case DeclarationPackage.ABSTRACT_ASPECT__PARAMS:
+ return getParams();
+ case DeclarationPackage.ABSTRACT_ASPECT__WILDPARAMS:
+ return isWildparams() ? 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 DeclarationPackage.ABSTRACT_ASPECT__POINTCUT:
+ setPointcut((Identifier)newValue);
+ return;
+ case DeclarationPackage.ABSTRACT_ASPECT__PARAMS:
+ getParams().clear();
+ getParams().addAll((Collection<? extends DeclaredParameter>)newValue);
+ return;
+ case DeclarationPackage.ABSTRACT_ASPECT__WILDPARAMS:
+ setWildparams(((Boolean)newValue).booleanValue());
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case DeclarationPackage.ABSTRACT_ASPECT__POINTCUT:
+ setPointcut((Identifier)null);
+ return;
+ case DeclarationPackage.ABSTRACT_ASPECT__PARAMS:
+ getParams().clear();
+ return;
+ case DeclarationPackage.ABSTRACT_ASPECT__WILDPARAMS:
+ setWildparams(WILDPARAMS_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case DeclarationPackage.ABSTRACT_ASPECT__POINTCUT:
+ return pointcut != null;
+ case DeclarationPackage.ABSTRACT_ASPECT__PARAMS:
+ return params != null && !params.isEmpty();
+ case DeclarationPackage.ABSTRACT_ASPECT__WILDPARAMS:
+ return wildparams != WILDPARAMS_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(" (wildparams: ");
+ result.append(wildparams);
+ result.append(')');
+ return result.toString();
+ }
+
+} //AbstractAspectImpl
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/impl/AbstractDeclarationImpl.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/impl/AbstractDeclarationImpl.java
new file mode 100644
index 0000000..003a7e7
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/impl/AbstractDeclarationImpl.java
@@ -0,0 +1,363 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: AbstractDeclarationImpl.java,v 1.1 2008/02/27 13:21:08 sefftinge Exp $
+ */
+package org.eclipse.xpand3.declaration.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.xpand3.DeclaredParameter;
+import org.eclipse.xpand3.File;
+
+import org.eclipse.xpand3.declaration.AbstractDeclaration;
+import org.eclipse.xpand3.declaration.DeclarationPackage;
+
+import org.eclipse.xpand3.expression.AbstractExpression;
+
+import org.eclipse.xpand3.impl.SyntaxElementImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Abstract Declaration</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.xpand3.declaration.impl.AbstractDeclarationImpl#getOwner <em>Owner</em>}</li>
+ * <li>{@link org.eclipse.xpand3.declaration.impl.AbstractDeclarationImpl#getParams <em>Params</em>}</li>
+ * <li>{@link org.eclipse.xpand3.declaration.impl.AbstractDeclarationImpl#isIsPrivate <em>Is Private</em>}</li>
+ * <li>{@link org.eclipse.xpand3.declaration.impl.AbstractDeclarationImpl#getGuard <em>Guard</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class AbstractDeclarationImpl extends SyntaxElementImpl implements AbstractDeclaration {
+ /**
+ * The cached value of the '{@link #getOwner() <em>Owner</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getOwner()
+ * @generated
+ * @ordered
+ */
+ protected File owner;
+
+ /**
+ * The cached value of the '{@link #getParams() <em>Params</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getParams()
+ * @generated
+ * @ordered
+ */
+ protected EList<DeclaredParameter> params;
+
+ /**
+ * The default value of the '{@link #isIsPrivate() <em>Is Private</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isIsPrivate()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean IS_PRIVATE_EDEFAULT = false;
+
+ /**
+ * The cached value of the '{@link #isIsPrivate() <em>Is Private</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isIsPrivate()
+ * @generated
+ * @ordered
+ */
+ protected boolean isPrivate = IS_PRIVATE_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getGuard() <em>Guard</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getGuard()
+ * @generated
+ * @ordered
+ */
+ protected AbstractExpression guard;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected AbstractDeclarationImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return DeclarationPackage.Literals.ABSTRACT_DECLARATION;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public File getOwner() {
+ return owner;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetOwner(File newOwner, NotificationChain msgs) {
+ File oldOwner = owner;
+ owner = newOwner;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, DeclarationPackage.ABSTRACT_DECLARATION__OWNER, oldOwner, newOwner);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setOwner(File newOwner) {
+ if (newOwner != owner) {
+ NotificationChain msgs = null;
+ if (owner != null)
+ msgs = ((InternalEObject)owner).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - DeclarationPackage.ABSTRACT_DECLARATION__OWNER, null, msgs);
+ if (newOwner != null)
+ msgs = ((InternalEObject)newOwner).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - DeclarationPackage.ABSTRACT_DECLARATION__OWNER, null, msgs);
+ msgs = basicSetOwner(newOwner, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, DeclarationPackage.ABSTRACT_DECLARATION__OWNER, newOwner, newOwner));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<DeclaredParameter> getParams() {
+ if (params == null) {
+ params = new EObjectContainmentEList<DeclaredParameter>(DeclaredParameter.class, this, DeclarationPackage.ABSTRACT_DECLARATION__PARAMS);
+ }
+ return params;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isIsPrivate() {
+ return isPrivate;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setIsPrivate(boolean newIsPrivate) {
+ boolean oldIsPrivate = isPrivate;
+ isPrivate = newIsPrivate;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, DeclarationPackage.ABSTRACT_DECLARATION__IS_PRIVATE, oldIsPrivate, isPrivate));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public AbstractExpression getGuard() {
+ return guard;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetGuard(AbstractExpression newGuard, NotificationChain msgs) {
+ AbstractExpression oldGuard = guard;
+ guard = newGuard;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, DeclarationPackage.ABSTRACT_DECLARATION__GUARD, oldGuard, newGuard);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setGuard(AbstractExpression newGuard) {
+ if (newGuard != guard) {
+ NotificationChain msgs = null;
+ if (guard != null)
+ msgs = ((InternalEObject)guard).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - DeclarationPackage.ABSTRACT_DECLARATION__GUARD, null, msgs);
+ if (newGuard != null)
+ msgs = ((InternalEObject)newGuard).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - DeclarationPackage.ABSTRACT_DECLARATION__GUARD, null, msgs);
+ msgs = basicSetGuard(newGuard, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, DeclarationPackage.ABSTRACT_DECLARATION__GUARD, newGuard, newGuard));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case DeclarationPackage.ABSTRACT_DECLARATION__OWNER:
+ return basicSetOwner(null, msgs);
+ case DeclarationPackage.ABSTRACT_DECLARATION__PARAMS:
+ return ((InternalEList<?>)getParams()).basicRemove(otherEnd, msgs);
+ case DeclarationPackage.ABSTRACT_DECLARATION__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 DeclarationPackage.ABSTRACT_DECLARATION__OWNER:
+ return getOwner();
+ case DeclarationPackage.ABSTRACT_DECLARATION__PARAMS:
+ return getParams();
+ case DeclarationPackage.ABSTRACT_DECLARATION__IS_PRIVATE:
+ return isIsPrivate() ? Boolean.TRUE : Boolean.FALSE;
+ case DeclarationPackage.ABSTRACT_DECLARATION__GUARD:
+ return getGuard();
+ }
+ 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 DeclarationPackage.ABSTRACT_DECLARATION__OWNER:
+ setOwner((File)newValue);
+ return;
+ case DeclarationPackage.ABSTRACT_DECLARATION__PARAMS:
+ getParams().clear();
+ getParams().addAll((Collection<? extends DeclaredParameter>)newValue);
+ return;
+ case DeclarationPackage.ABSTRACT_DECLARATION__IS_PRIVATE:
+ setIsPrivate(((Boolean)newValue).booleanValue());
+ return;
+ case DeclarationPackage.ABSTRACT_DECLARATION__GUARD:
+ setGuard((AbstractExpression)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case DeclarationPackage.ABSTRACT_DECLARATION__OWNER:
+ setOwner((File)null);
+ return;
+ case DeclarationPackage.ABSTRACT_DECLARATION__PARAMS:
+ getParams().clear();
+ return;
+ case DeclarationPackage.ABSTRACT_DECLARATION__IS_PRIVATE:
+ setIsPrivate(IS_PRIVATE_EDEFAULT);
+ return;
+ case DeclarationPackage.ABSTRACT_DECLARATION__GUARD:
+ setGuard((AbstractExpression)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case DeclarationPackage.ABSTRACT_DECLARATION__OWNER:
+ return owner != null;
+ case DeclarationPackage.ABSTRACT_DECLARATION__PARAMS:
+ return params != null && !params.isEmpty();
+ case DeclarationPackage.ABSTRACT_DECLARATION__IS_PRIVATE:
+ return isPrivate != IS_PRIVATE_EDEFAULT;
+ case DeclarationPackage.ABSTRACT_DECLARATION__GUARD:
+ return guard != 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(" (isPrivate: ");
+ result.append(isPrivate);
+ result.append(')');
+ return result.toString();
+ }
+
+} //AbstractDeclarationImpl
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/impl/AbstractNamedDeclarationImpl.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/impl/AbstractNamedDeclarationImpl.java
new file mode 100644
index 0000000..5866203
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/impl/AbstractNamedDeclarationImpl.java
@@ -0,0 +1,180 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: AbstractNamedDeclarationImpl.java,v 1.1 2008/02/27 13:21:08 sefftinge Exp $
+ */
+package org.eclipse.xpand3.declaration.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.xpand3.Identifier;
+
+import org.eclipse.xpand3.declaration.AbstractNamedDeclaration;
+import org.eclipse.xpand3.declaration.DeclarationPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Abstract Named Declaration</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.xpand3.declaration.impl.AbstractNamedDeclarationImpl#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class AbstractNamedDeclarationImpl extends AbstractDeclarationImpl implements AbstractNamedDeclaration {
+ /**
+ * The cached value of the '{@link #getName() <em>Name</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected Identifier name;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected AbstractNamedDeclarationImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return DeclarationPackage.Literals.ABSTRACT_NAMED_DECLARATION;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Identifier getName() {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetName(Identifier newName, NotificationChain msgs) {
+ Identifier oldName = name;
+ name = newName;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, DeclarationPackage.ABSTRACT_NAMED_DECLARATION__NAME, oldName, newName);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setName(Identifier newName) {
+ if (newName != name) {
+ NotificationChain msgs = null;
+ if (name != null)
+ msgs = ((InternalEObject)name).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - DeclarationPackage.ABSTRACT_NAMED_DECLARATION__NAME, null, msgs);
+ if (newName != null)
+ msgs = ((InternalEObject)newName).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - DeclarationPackage.ABSTRACT_NAMED_DECLARATION__NAME, null, msgs);
+ msgs = basicSetName(newName, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, DeclarationPackage.ABSTRACT_NAMED_DECLARATION__NAME, newName, newName));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case DeclarationPackage.ABSTRACT_NAMED_DECLARATION__NAME:
+ return basicSetName(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 DeclarationPackage.ABSTRACT_NAMED_DECLARATION__NAME:
+ return getName();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case DeclarationPackage.ABSTRACT_NAMED_DECLARATION__NAME:
+ setName((Identifier)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case DeclarationPackage.ABSTRACT_NAMED_DECLARATION__NAME:
+ setName((Identifier)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case DeclarationPackage.ABSTRACT_NAMED_DECLARATION__NAME:
+ return name != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //AbstractNamedDeclarationImpl
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/impl/AdviceImpl.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/impl/AdviceImpl.java
new file mode 100644
index 0000000..730b83d
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/impl/AdviceImpl.java
@@ -0,0 +1,43 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: AdviceImpl.java,v 1.1 2008/02/27 13:21:08 sefftinge Exp $
+ */
+package org.eclipse.xpand3.declaration.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.xpand3.declaration.Advice;
+import org.eclipse.xpand3.declaration.DeclarationPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Advice</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class AdviceImpl extends AbstractNamedDeclarationImpl implements Advice {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected AdviceImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return DeclarationPackage.Literals.ADVICE;
+ }
+
+} //AdviceImpl
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/impl/CheckImpl.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/impl/CheckImpl.java
new file mode 100644
index 0000000..1a91a8e
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/impl/CheckImpl.java
@@ -0,0 +1,368 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: CheckImpl.java,v 1.1 2008/02/27 13:21:08 sefftinge Exp $
+ */
+package org.eclipse.xpand3.declaration.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.xpand3.declaration.Check;
+import org.eclipse.xpand3.declaration.DeclarationPackage;
+
+import org.eclipse.xpand3.expression.AbstractExpression;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Check</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.xpand3.declaration.impl.CheckImpl#isErrorSeverity <em>Error Severity</em>}</li>
+ * <li>{@link org.eclipse.xpand3.declaration.impl.CheckImpl#getMsg <em>Msg</em>}</li>
+ * <li>{@link org.eclipse.xpand3.declaration.impl.CheckImpl#getConstraint <em>Constraint</em>}</li>
+ * <li>{@link org.eclipse.xpand3.declaration.impl.CheckImpl#getFeature <em>Feature</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class CheckImpl extends AbstractDeclarationImpl implements Check {
+ /**
+ * The default value of the '{@link #isErrorSeverity() <em>Error Severity</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isErrorSeverity()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean ERROR_SEVERITY_EDEFAULT = false;
+
+ /**
+ * The cached value of the '{@link #isErrorSeverity() <em>Error Severity</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isErrorSeverity()
+ * @generated
+ * @ordered
+ */
+ protected boolean errorSeverity = ERROR_SEVERITY_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getMsg() <em>Msg</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getMsg()
+ * @generated
+ * @ordered
+ */
+ protected AbstractExpression msg;
+
+ /**
+ * The cached value of the '{@link #getConstraint() <em>Constraint</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getConstraint()
+ * @generated
+ * @ordered
+ */
+ protected AbstractExpression constraint;
+
+ /**
+ * The default value of the '{@link #getFeature() <em>Feature</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getFeature()
+ * @generated
+ * @ordered
+ */
+ protected static final String FEATURE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getFeature() <em>Feature</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getFeature()
+ * @generated
+ * @ordered
+ */
+ protected String feature = FEATURE_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected CheckImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return DeclarationPackage.Literals.CHECK;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isErrorSeverity() {
+ return errorSeverity;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setErrorSeverity(boolean newErrorSeverity) {
+ boolean oldErrorSeverity = errorSeverity;
+ errorSeverity = newErrorSeverity;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, DeclarationPackage.CHECK__ERROR_SEVERITY, oldErrorSeverity, errorSeverity));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public AbstractExpression getMsg() {
+ return msg;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetMsg(AbstractExpression newMsg, NotificationChain msgs) {
+ AbstractExpression oldMsg = msg;
+ msg = newMsg;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, DeclarationPackage.CHECK__MSG, oldMsg, newMsg);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setMsg(AbstractExpression newMsg) {
+ if (newMsg != msg) {
+ NotificationChain msgs = null;
+ if (msg != null)
+ msgs = ((InternalEObject)msg).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - DeclarationPackage.CHECK__MSG, null, msgs);
+ if (newMsg != null)
+ msgs = ((InternalEObject)newMsg).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - DeclarationPackage.CHECK__MSG, null, msgs);
+ msgs = basicSetMsg(newMsg, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, DeclarationPackage.CHECK__MSG, newMsg, newMsg));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public AbstractExpression getConstraint() {
+ return constraint;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetConstraint(AbstractExpression newConstraint, NotificationChain msgs) {
+ AbstractExpression oldConstraint = constraint;
+ constraint = newConstraint;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, DeclarationPackage.CHECK__CONSTRAINT, oldConstraint, newConstraint);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setConstraint(AbstractExpression newConstraint) {
+ if (newConstraint != constraint) {
+ NotificationChain msgs = null;
+ if (constraint != null)
+ msgs = ((InternalEObject)constraint).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - DeclarationPackage.CHECK__CONSTRAINT, null, msgs);
+ if (newConstraint != null)
+ msgs = ((InternalEObject)newConstraint).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - DeclarationPackage.CHECK__CONSTRAINT, null, msgs);
+ msgs = basicSetConstraint(newConstraint, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, DeclarationPackage.CHECK__CONSTRAINT, newConstraint, newConstraint));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getFeature() {
+ return feature;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setFeature(String newFeature) {
+ String oldFeature = feature;
+ feature = newFeature;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, DeclarationPackage.CHECK__FEATURE, oldFeature, feature));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case DeclarationPackage.CHECK__MSG:
+ return basicSetMsg(null, msgs);
+ case DeclarationPackage.CHECK__CONSTRAINT:
+ return basicSetConstraint(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 DeclarationPackage.CHECK__ERROR_SEVERITY:
+ return isErrorSeverity() ? Boolean.TRUE : Boolean.FALSE;
+ case DeclarationPackage.CHECK__MSG:
+ return getMsg();
+ case DeclarationPackage.CHECK__CONSTRAINT:
+ return getConstraint();
+ case DeclarationPackage.CHECK__FEATURE:
+ return getFeature();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case DeclarationPackage.CHECK__ERROR_SEVERITY:
+ setErrorSeverity(((Boolean)newValue).booleanValue());
+ return;
+ case DeclarationPackage.CHECK__MSG:
+ setMsg((AbstractExpression)newValue);
+ return;
+ case DeclarationPackage.CHECK__CONSTRAINT:
+ setConstraint((AbstractExpression)newValue);
+ return;
+ case DeclarationPackage.CHECK__FEATURE:
+ setFeature((String)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case DeclarationPackage.CHECK__ERROR_SEVERITY:
+ setErrorSeverity(ERROR_SEVERITY_EDEFAULT);
+ return;
+ case DeclarationPackage.CHECK__MSG:
+ setMsg((AbstractExpression)null);
+ return;
+ case DeclarationPackage.CHECK__CONSTRAINT:
+ setConstraint((AbstractExpression)null);
+ return;
+ case DeclarationPackage.CHECK__FEATURE:
+ setFeature(FEATURE_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case DeclarationPackage.CHECK__ERROR_SEVERITY:
+ return errorSeverity != ERROR_SEVERITY_EDEFAULT;
+ case DeclarationPackage.CHECK__MSG:
+ return msg != null;
+ case DeclarationPackage.CHECK__CONSTRAINT:
+ return constraint != null;
+ case DeclarationPackage.CHECK__FEATURE:
+ return FEATURE_EDEFAULT == null ? feature != null : !FEATURE_EDEFAULT.equals(feature);
+ }
+ 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(" (errorSeverity: ");
+ result.append(errorSeverity);
+ result.append(", feature: ");
+ result.append(feature);
+ result.append(')');
+ return result.toString();
+ }
+
+} //CheckImpl
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/impl/CreateExtensionStatementImpl.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/impl/CreateExtensionStatementImpl.java
new file mode 100644
index 0000000..975226f
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/impl/CreateExtensionStatementImpl.java
@@ -0,0 +1,180 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: CreateExtensionStatementImpl.java,v 1.1 2008/02/27 13:21:08 sefftinge Exp $
+ */
+package org.eclipse.xpand3.declaration.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.xpand3.DeclaredParameter;
+
+import org.eclipse.xpand3.declaration.CreateExtensionStatement;
+import org.eclipse.xpand3.declaration.DeclarationPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Create Extension Statement</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.xpand3.declaration.impl.CreateExtensionStatementImpl#getToBeCreated <em>To Be Created</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class CreateExtensionStatementImpl extends ExtensionImpl implements CreateExtensionStatement {
+ /**
+ * The cached value of the '{@link #getToBeCreated() <em>To Be Created</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getToBeCreated()
+ * @generated
+ * @ordered
+ */
+ protected DeclaredParameter toBeCreated;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected CreateExtensionStatementImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return DeclarationPackage.Literals.CREATE_EXTENSION_STATEMENT;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DeclaredParameter getToBeCreated() {
+ return toBeCreated;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetToBeCreated(DeclaredParameter newToBeCreated, NotificationChain msgs) {
+ DeclaredParameter oldToBeCreated = toBeCreated;
+ toBeCreated = newToBeCreated;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, DeclarationPackage.CREATE_EXTENSION_STATEMENT__TO_BE_CREATED, oldToBeCreated, newToBeCreated);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setToBeCreated(DeclaredParameter newToBeCreated) {
+ if (newToBeCreated != toBeCreated) {
+ NotificationChain msgs = null;
+ if (toBeCreated != null)
+ msgs = ((InternalEObject)toBeCreated).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - DeclarationPackage.CREATE_EXTENSION_STATEMENT__TO_BE_CREATED, null, msgs);
+ if (newToBeCreated != null)
+ msgs = ((InternalEObject)newToBeCreated).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - DeclarationPackage.CREATE_EXTENSION_STATEMENT__TO_BE_CREATED, null, msgs);
+ msgs = basicSetToBeCreated(newToBeCreated, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, DeclarationPackage.CREATE_EXTENSION_STATEMENT__TO_BE_CREATED, newToBeCreated, newToBeCreated));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case DeclarationPackage.CREATE_EXTENSION_STATEMENT__TO_BE_CREATED:
+ return basicSetToBeCreated(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 DeclarationPackage.CREATE_EXTENSION_STATEMENT__TO_BE_CREATED:
+ return getToBeCreated();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case DeclarationPackage.CREATE_EXTENSION_STATEMENT__TO_BE_CREATED:
+ setToBeCreated((DeclaredParameter)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case DeclarationPackage.CREATE_EXTENSION_STATEMENT__TO_BE_CREATED:
+ setToBeCreated((DeclaredParameter)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case DeclarationPackage.CREATE_EXTENSION_STATEMENT__TO_BE_CREATED:
+ return toBeCreated != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //CreateExtensionStatementImpl
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/impl/DeclarationFactoryImpl.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/impl/DeclarationFactoryImpl.java
new file mode 100644
index 0000000..c57002b
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/impl/DeclarationFactoryImpl.java
@@ -0,0 +1,176 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: DeclarationFactoryImpl.java,v 1.1 2008/02/27 13:21:08 sefftinge Exp $
+ */
+package org.eclipse.xpand3.declaration.impl;
+
+import org.eclipse.emf.ecore.EClass;
+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.xpand3.declaration.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class DeclarationFactoryImpl extends EFactoryImpl implements DeclarationFactory {
+ /**
+ * Creates the default factory implementation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static DeclarationFactory init() {
+ try {
+ DeclarationFactory theDeclarationFactory = (DeclarationFactory)EPackage.Registry.INSTANCE.getEFactory("http://www.eclipse.org/m2t/xpand/xpand3/declararation");
+ if (theDeclarationFactory != null) {
+ return theDeclarationFactory;
+ }
+ }
+ catch (Exception exception) {
+ EcorePlugin.INSTANCE.log(exception);
+ }
+ return new DeclarationFactoryImpl();
+ }
+
+ /**
+ * Creates an instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DeclarationFactoryImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EObject create(EClass eClass) {
+ switch (eClass.getClassifierID()) {
+ case DeclarationPackage.DEFINITION: return createDefinition();
+ case DeclarationPackage.ADVICE: return createAdvice();
+ case DeclarationPackage.EXTENSION: return createExtension();
+ case DeclarationPackage.EXTENSION_ASPECT: return createExtensionAspect();
+ case DeclarationPackage.DEFINITION_ASPECT: return createDefinitionAspect();
+ case DeclarationPackage.CHECK: return createCheck();
+ case DeclarationPackage.CREATE_EXTENSION_STATEMENT: return createCreateExtensionStatement();
+ case DeclarationPackage.JAVA_EXTENSION_STATEMENT: return createJavaExtensionStatement();
+ default:
+ throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Definition createDefinition() {
+ DefinitionImpl definition = new DefinitionImpl();
+ return definition;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Advice createAdvice() {
+ AdviceImpl advice = new AdviceImpl();
+ return advice;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Extension createExtension() {
+ ExtensionImpl extension = new ExtensionImpl();
+ return extension;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ExtensionAspect createExtensionAspect() {
+ ExtensionAspectImpl extensionAspect = new ExtensionAspectImpl();
+ return extensionAspect;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DefinitionAspect createDefinitionAspect() {
+ DefinitionAspectImpl definitionAspect = new DefinitionAspectImpl();
+ return definitionAspect;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Check createCheck() {
+ CheckImpl check = new CheckImpl();
+ return check;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CreateExtensionStatement createCreateExtensionStatement() {
+ CreateExtensionStatementImpl createExtensionStatement = new CreateExtensionStatementImpl();
+ return createExtensionStatement;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public JavaExtensionStatement createJavaExtensionStatement() {
+ JavaExtensionStatementImpl javaExtensionStatement = new JavaExtensionStatementImpl();
+ return javaExtensionStatement;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DeclarationPackage getDeclarationPackage() {
+ return (DeclarationPackage)getEPackage();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @deprecated
+ * @generated
+ */
+ @Deprecated
+ public static DeclarationPackage getPackage() {
+ return DeclarationPackage.eINSTANCE;
+ }
+
+} //DeclarationFactoryImpl
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/impl/DeclarationPackageImpl.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/impl/DeclarationPackageImpl.java
new file mode 100644
index 0000000..b3d6bce
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/impl/DeclarationPackageImpl.java
@@ -0,0 +1,644 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: DeclarationPackageImpl.java,v 1.1 2008/02/27 13:21:08 sefftinge Exp $
+ */
+package org.eclipse.xpand3.declaration.impl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+import org.eclipse.xpand3.Xpand3Package;
+
+import org.eclipse.xpand3.declaration.AbstractAspect;
+import org.eclipse.xpand3.declaration.AbstractDeclaration;
+import org.eclipse.xpand3.declaration.AbstractNamedDeclaration;
+import org.eclipse.xpand3.declaration.Advice;
+import org.eclipse.xpand3.declaration.Check;
+import org.eclipse.xpand3.declaration.CreateExtensionStatement;
+import org.eclipse.xpand3.declaration.DeclarationFactory;
+import org.eclipse.xpand3.declaration.DeclarationPackage;
+import org.eclipse.xpand3.declaration.Definition;
+import org.eclipse.xpand3.declaration.DefinitionAspect;
+import org.eclipse.xpand3.declaration.Extension;
+import org.eclipse.xpand3.declaration.ExtensionAspect;
+import org.eclipse.xpand3.declaration.JavaExtensionStatement;
+
+import org.eclipse.xpand3.expression.ExpressionPackage;
+
+import org.eclipse.xpand3.expression.impl.ExpressionPackageImpl;
+
+import org.eclipse.xpand3.impl.Xpand3PackageImpl;
+
+import org.eclipse.xpand3.statement.StatementPackage;
+
+import org.eclipse.xpand3.statement.impl.StatementPackageImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class DeclarationPackageImpl extends EPackageImpl implements DeclarationPackage {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass abstractDeclarationEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass abstractNamedDeclarationEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass definitionEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass adviceEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass extensionEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass abstractAspectEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass extensionAspectEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass definitionAspectEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass checkEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass createExtensionStatementEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass javaExtensionStatementEClass = 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.xpand3.declaration.DeclarationPackage#eNS_URI
+ * @see #init()
+ * @generated
+ */
+ private DeclarationPackageImpl() {
+ super(eNS_URI, DeclarationFactory.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 DeclarationPackage init() {
+ if (isInited) return (DeclarationPackage)EPackage.Registry.INSTANCE.getEPackage(DeclarationPackage.eNS_URI);
+
+ // Obtain or create and register package
+ DeclarationPackageImpl theDeclarationPackage = (DeclarationPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(eNS_URI) instanceof DeclarationPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(eNS_URI) : new DeclarationPackageImpl());
+
+ isInited = true;
+
+ // Obtain or create and register interdependencies
+ Xpand3PackageImpl theXpand3Package = (Xpand3PackageImpl)(EPackage.Registry.INSTANCE.getEPackage(Xpand3Package.eNS_URI) instanceof Xpand3PackageImpl ? EPackage.Registry.INSTANCE.getEPackage(Xpand3Package.eNS_URI) : Xpand3Package.eINSTANCE);
+ ExpressionPackageImpl theExpressionPackage = (ExpressionPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ExpressionPackage.eNS_URI) instanceof ExpressionPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ExpressionPackage.eNS_URI) : ExpressionPackage.eINSTANCE);
+ StatementPackageImpl theStatementPackage = (StatementPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(StatementPackage.eNS_URI) instanceof StatementPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(StatementPackage.eNS_URI) : StatementPackage.eINSTANCE);
+
+ // Create package meta-data objects
+ theDeclarationPackage.createPackageContents();
+ theXpand3Package.createPackageContents();
+ theExpressionPackage.createPackageContents();
+ theStatementPackage.createPackageContents();
+
+ // Initialize created meta-data
+ theDeclarationPackage.initializePackageContents();
+ theXpand3Package.initializePackageContents();
+ theExpressionPackage.initializePackageContents();
+ theStatementPackage.initializePackageContents();
+
+ // Mark meta-data to indicate it can't be changed
+ theDeclarationPackage.freeze();
+
+ return theDeclarationPackage;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getAbstractDeclaration() {
+ return abstractDeclarationEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getAbstractDeclaration_Owner() {
+ return (EReference)abstractDeclarationEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getAbstractDeclaration_Params() {
+ return (EReference)abstractDeclarationEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getAbstractDeclaration_IsPrivate() {
+ return (EAttribute)abstractDeclarationEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getAbstractDeclaration_Guard() {
+ return (EReference)abstractDeclarationEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getAbstractNamedDeclaration() {
+ return abstractNamedDeclarationEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getAbstractNamedDeclaration_Name() {
+ return (EReference)abstractNamedDeclarationEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getDefinition() {
+ return definitionEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getDefinition_Body() {
+ return (EReference)definitionEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getAdvice() {
+ return adviceEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getExtension() {
+ return extensionEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getExtension_Cached() {
+ return (EAttribute)extensionEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getAbstractAspect() {
+ return abstractAspectEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getAbstractAspect_Pointcut() {
+ return (EReference)abstractAspectEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getAbstractAspect_Params() {
+ return (EReference)abstractAspectEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getAbstractAspect_Wildparams() {
+ return (EAttribute)abstractAspectEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getExtensionAspect() {
+ return extensionAspectEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getExtensionAspect_Expression() {
+ return (EReference)extensionAspectEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getDefinitionAspect() {
+ return definitionAspectEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getDefinitionAspect_Body() {
+ return (EReference)definitionAspectEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getCheck() {
+ return checkEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getCheck_ErrorSeverity() {
+ return (EAttribute)checkEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getCheck_Msg() {
+ return (EReference)checkEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getCheck_Constraint() {
+ return (EReference)checkEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getCheck_Feature() {
+ return (EAttribute)checkEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getCreateExtensionStatement() {
+ return createExtensionStatementEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getCreateExtensionStatement_ToBeCreated() {
+ return (EReference)createExtensionStatementEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getJavaExtensionStatement() {
+ return javaExtensionStatementEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getJavaExtensionStatement_JavaType() {
+ return (EReference)javaExtensionStatementEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getJavaExtensionStatement_JavaMethod() {
+ return (EReference)javaExtensionStatementEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getJavaExtensionStatement_JavaParamTypes() {
+ return (EReference)javaExtensionStatementEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DeclarationFactory getDeclarationFactory() {
+ return (DeclarationFactory)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
+ abstractDeclarationEClass = createEClass(ABSTRACT_DECLARATION);
+ createEReference(abstractDeclarationEClass, ABSTRACT_DECLARATION__OWNER);
+ createEReference(abstractDeclarationEClass, ABSTRACT_DECLARATION__PARAMS);
+ createEAttribute(abstractDeclarationEClass, ABSTRACT_DECLARATION__IS_PRIVATE);
+ createEReference(abstractDeclarationEClass, ABSTRACT_DECLARATION__GUARD);
+
+ abstractNamedDeclarationEClass = createEClass(ABSTRACT_NAMED_DECLARATION);
+ createEReference(abstractNamedDeclarationEClass, ABSTRACT_NAMED_DECLARATION__NAME);
+
+ definitionEClass = createEClass(DEFINITION);
+ createEReference(definitionEClass, DEFINITION__BODY);
+
+ adviceEClass = createEClass(ADVICE);
+
+ extensionEClass = createEClass(EXTENSION);
+ createEAttribute(extensionEClass, EXTENSION__CACHED);
+
+ abstractAspectEClass = createEClass(ABSTRACT_ASPECT);
+ createEReference(abstractAspectEClass, ABSTRACT_ASPECT__POINTCUT);
+ createEReference(abstractAspectEClass, ABSTRACT_ASPECT__PARAMS);
+ createEAttribute(abstractAspectEClass, ABSTRACT_ASPECT__WILDPARAMS);
+
+ extensionAspectEClass = createEClass(EXTENSION_ASPECT);
+ createEReference(extensionAspectEClass, EXTENSION_ASPECT__EXPRESSION);
+
+ definitionAspectEClass = createEClass(DEFINITION_ASPECT);
+ createEReference(definitionAspectEClass, DEFINITION_ASPECT__BODY);
+
+ checkEClass = createEClass(CHECK);
+ createEAttribute(checkEClass, CHECK__ERROR_SEVERITY);
+ createEReference(checkEClass, CHECK__MSG);
+ createEReference(checkEClass, CHECK__CONSTRAINT);
+ createEAttribute(checkEClass, CHECK__FEATURE);
+
+ createExtensionStatementEClass = createEClass(CREATE_EXTENSION_STATEMENT);
+ createEReference(createExtensionStatementEClass, CREATE_EXTENSION_STATEMENT__TO_BE_CREATED);
+
+ javaExtensionStatementEClass = createEClass(JAVA_EXTENSION_STATEMENT);
+ createEReference(javaExtensionStatementEClass, JAVA_EXTENSION_STATEMENT__JAVA_TYPE);
+ createEReference(javaExtensionStatementEClass, JAVA_EXTENSION_STATEMENT__JAVA_METHOD);
+ createEReference(javaExtensionStatementEClass, JAVA_EXTENSION_STATEMENT__JAVA_PARAM_TYPES);
+ }
+
+ /**
+ * <!-- 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
+ Xpand3Package theXpand3Package = (Xpand3Package)EPackage.Registry.INSTANCE.getEPackage(Xpand3Package.eNS_URI);
+ ExpressionPackage theExpressionPackage = (ExpressionPackage)EPackage.Registry.INSTANCE.getEPackage(ExpressionPackage.eNS_URI);
+ StatementPackage theStatementPackage = (StatementPackage)EPackage.Registry.INSTANCE.getEPackage(StatementPackage.eNS_URI);
+
+ // Create type parameters
+
+ // Set bounds for type parameters
+
+ // Add supertypes to classes
+ abstractDeclarationEClass.getESuperTypes().add(theXpand3Package.getSyntaxElement());
+ abstractNamedDeclarationEClass.getESuperTypes().add(this.getAbstractDeclaration());
+ definitionEClass.getESuperTypes().add(this.getAbstractNamedDeclaration());
+ adviceEClass.getESuperTypes().add(this.getAbstractNamedDeclaration());
+ extensionEClass.getESuperTypes().add(this.getAbstractNamedDeclaration());
+ abstractAspectEClass.getESuperTypes().add(theXpand3Package.getSyntaxElement());
+ extensionAspectEClass.getESuperTypes().add(this.getAbstractAspect());
+ definitionAspectEClass.getESuperTypes().add(this.getAbstractAspect());
+ checkEClass.getESuperTypes().add(this.getAbstractDeclaration());
+ createExtensionStatementEClass.getESuperTypes().add(this.getExtension());
+ javaExtensionStatementEClass.getESuperTypes().add(this.getAbstractNamedDeclaration());
+
+ // Initialize classes and features; add operations and parameters
+ initEClass(abstractDeclarationEClass, AbstractDeclaration.class, "AbstractDeclaration", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getAbstractDeclaration_Owner(), theXpand3Package.getFile(), null, "owner", null, 1, 1, AbstractDeclaration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getAbstractDeclaration_Params(), theXpand3Package.getDeclaredParameter(), null, "params", null, 0, -1, AbstractDeclaration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getAbstractDeclaration_IsPrivate(), ecorePackage.getEBoolean(), "isPrivate", null, 0, 1, AbstractDeclaration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getAbstractDeclaration_Guard(), theExpressionPackage.getAbstractExpression(), null, "guard", null, 0, 1, AbstractDeclaration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(abstractNamedDeclarationEClass, AbstractNamedDeclaration.class, "AbstractNamedDeclaration", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getAbstractNamedDeclaration_Name(), theXpand3Package.getIdentifier(), null, "name", null, 0, 1, AbstractNamedDeclaration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(definitionEClass, Definition.class, "Definition", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getDefinition_Body(), theStatementPackage.getAbstractStatement(), null, "body", null, 0, -1, Definition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(adviceEClass, Advice.class, "Advice", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(extensionEClass, Extension.class, "Extension", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getExtension_Cached(), ecorePackage.getEBoolean(), "cached", null, 0, 1, Extension.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(abstractAspectEClass, AbstractAspect.class, "AbstractAspect", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getAbstractAspect_Pointcut(), theXpand3Package.getIdentifier(), null, "pointcut", null, 0, 1, AbstractAspect.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getAbstractAspect_Params(), theXpand3Package.getDeclaredParameter(), null, "params", null, 0, -1, AbstractAspect.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getAbstractAspect_Wildparams(), ecorePackage.getEBoolean(), "wildparams", null, 0, 1, AbstractAspect.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(extensionAspectEClass, ExtensionAspect.class, "ExtensionAspect", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getExtensionAspect_Expression(), theExpressionPackage.getAbstractExpression(), null, "expression", null, 0, 1, ExtensionAspect.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(definitionAspectEClass, DefinitionAspect.class, "DefinitionAspect", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getDefinitionAspect_Body(), theStatementPackage.getAbstractStatement(), null, "body", null, 0, -1, DefinitionAspect.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(checkEClass, Check.class, "Check", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getCheck_ErrorSeverity(), ecorePackage.getEBoolean(), "errorSeverity", null, 0, 1, Check.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getCheck_Msg(), theExpressionPackage.getAbstractExpression(), null, "msg", null, 0, 1, Check.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getCheck_Constraint(), theExpressionPackage.getAbstractExpression(), null, "constraint", null, 0, 1, Check.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getCheck_Feature(), ecorePackage.getEString(), "feature", null, 0, 1, Check.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(createExtensionStatementEClass, CreateExtensionStatement.class, "CreateExtensionStatement", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getCreateExtensionStatement_ToBeCreated(), theXpand3Package.getDeclaredParameter(), null, "toBeCreated", null, 0, 1, CreateExtensionStatement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(javaExtensionStatementEClass, JavaExtensionStatement.class, "JavaExtensionStatement", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getJavaExtensionStatement_JavaType(), theXpand3Package.getIdentifier(), null, "javaType", null, 0, 1, JavaExtensionStatement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getJavaExtensionStatement_JavaMethod(), theXpand3Package.getIdentifier(), null, "javaMethod", null, 0, 1, JavaExtensionStatement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getJavaExtensionStatement_JavaParamTypes(), theXpand3Package.getIdentifier(), null, "javaParamTypes", null, 0, -1, JavaExtensionStatement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ }
+
+} //DeclarationPackageImpl
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/impl/DefinitionAspectImpl.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/impl/DefinitionAspectImpl.java
new file mode 100644
index 0000000..ae3b94a
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/impl/DefinitionAspectImpl.java
@@ -0,0 +1,155 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: DefinitionAspectImpl.java,v 1.1 2008/02/27 13:21:08 sefftinge Exp $
+ */
+package org.eclipse.xpand3.declaration.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.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.xpand3.declaration.DeclarationPackage;
+import org.eclipse.xpand3.declaration.DefinitionAspect;
+
+import org.eclipse.xpand3.statement.AbstractStatement;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Definition Aspect</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.xpand3.declaration.impl.DefinitionAspectImpl#getBody <em>Body</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class DefinitionAspectImpl extends AbstractAspectImpl implements DefinitionAspect {
+ /**
+ * 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<AbstractStatement> body;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected DefinitionAspectImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return DeclarationPackage.Literals.DEFINITION_ASPECT;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<AbstractStatement> getBody() {
+ if (body == null) {
+ body = new EObjectContainmentEList<AbstractStatement>(AbstractStatement.class, this, DeclarationPackage.DEFINITION_ASPECT__BODY);
+ }
+ return body;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case DeclarationPackage.DEFINITION_ASPECT__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 DeclarationPackage.DEFINITION_ASPECT__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 DeclarationPackage.DEFINITION_ASPECT__BODY:
+ getBody().clear();
+ getBody().addAll((Collection<? extends AbstractStatement>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case DeclarationPackage.DEFINITION_ASPECT__BODY:
+ getBody().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case DeclarationPackage.DEFINITION_ASPECT__BODY:
+ return body != null && !body.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //DefinitionAspectImpl
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/impl/DefinitionImpl.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/impl/DefinitionImpl.java
new file mode 100644
index 0000000..37910e2
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/impl/DefinitionImpl.java
@@ -0,0 +1,155 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: DefinitionImpl.java,v 1.1 2008/02/27 13:21:08 sefftinge Exp $
+ */
+package org.eclipse.xpand3.declaration.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.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.xpand3.declaration.DeclarationPackage;
+import org.eclipse.xpand3.declaration.Definition;
+
+import org.eclipse.xpand3.statement.AbstractStatement;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Definition</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.xpand3.declaration.impl.DefinitionImpl#getBody <em>Body</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class DefinitionImpl extends AbstractNamedDeclarationImpl implements Definition {
+ /**
+ * 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<AbstractStatement> body;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected DefinitionImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return DeclarationPackage.Literals.DEFINITION;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<AbstractStatement> getBody() {
+ if (body == null) {
+ body = new EObjectContainmentEList<AbstractStatement>(AbstractStatement.class, this, DeclarationPackage.DEFINITION__BODY);
+ }
+ return body;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case DeclarationPackage.DEFINITION__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 DeclarationPackage.DEFINITION__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 DeclarationPackage.DEFINITION__BODY:
+ getBody().clear();
+ getBody().addAll((Collection<? extends AbstractStatement>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case DeclarationPackage.DEFINITION__BODY:
+ getBody().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case DeclarationPackage.DEFINITION__BODY:
+ return body != null && !body.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //DefinitionImpl
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/impl/ExtensionAspectImpl.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/impl/ExtensionAspectImpl.java
new file mode 100644
index 0000000..54b8091
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/impl/ExtensionAspectImpl.java
@@ -0,0 +1,180 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: ExtensionAspectImpl.java,v 1.1 2008/02/27 13:21:08 sefftinge Exp $
+ */
+package org.eclipse.xpand3.declaration.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.xpand3.declaration.DeclarationPackage;
+import org.eclipse.xpand3.declaration.ExtensionAspect;
+
+import org.eclipse.xpand3.expression.AbstractExpression;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Extension Aspect</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.xpand3.declaration.impl.ExtensionAspectImpl#getExpression <em>Expression</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ExtensionAspectImpl extends AbstractAspectImpl implements ExtensionAspect {
+ /**
+ * The cached value of the '{@link #getExpression() <em>Expression</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getExpression()
+ * @generated
+ * @ordered
+ */
+ protected AbstractExpression expression;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ExtensionAspectImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return DeclarationPackage.Literals.EXTENSION_ASPECT;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public AbstractExpression getExpression() {
+ return expression;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetExpression(AbstractExpression newExpression, NotificationChain msgs) {
+ AbstractExpression oldExpression = expression;
+ expression = newExpression;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, DeclarationPackage.EXTENSION_ASPECT__EXPRESSION, oldExpression, newExpression);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setExpression(AbstractExpression newExpression) {
+ if (newExpression != expression) {
+ NotificationChain msgs = null;
+ if (expression != null)
+ msgs = ((InternalEObject)expression).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - DeclarationPackage.EXTENSION_ASPECT__EXPRESSION, null, msgs);
+ if (newExpression != null)
+ msgs = ((InternalEObject)newExpression).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - DeclarationPackage.EXTENSION_ASPECT__EXPRESSION, null, msgs);
+ msgs = basicSetExpression(newExpression, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, DeclarationPackage.EXTENSION_ASPECT__EXPRESSION, newExpression, newExpression));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case DeclarationPackage.EXTENSION_ASPECT__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 DeclarationPackage.EXTENSION_ASPECT__EXPRESSION:
+ return getExpression();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case DeclarationPackage.EXTENSION_ASPECT__EXPRESSION:
+ setExpression((AbstractExpression)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case DeclarationPackage.EXTENSION_ASPECT__EXPRESSION:
+ setExpression((AbstractExpression)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case DeclarationPackage.EXTENSION_ASPECT__EXPRESSION:
+ return expression != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //ExtensionAspectImpl
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/impl/ExtensionImpl.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/impl/ExtensionImpl.java
new file mode 100644
index 0000000..593bc71
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/impl/ExtensionImpl.java
@@ -0,0 +1,166 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: ExtensionImpl.java,v 1.1 2008/02/27 13:21:08 sefftinge Exp $
+ */
+package org.eclipse.xpand3.declaration.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.xpand3.declaration.DeclarationPackage;
+import org.eclipse.xpand3.declaration.Extension;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Extension</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.xpand3.declaration.impl.ExtensionImpl#isCached <em>Cached</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ExtensionImpl extends AbstractNamedDeclarationImpl implements Extension {
+ /**
+ * The default value of the '{@link #isCached() <em>Cached</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isCached()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean CACHED_EDEFAULT = false;
+
+ /**
+ * The cached value of the '{@link #isCached() <em>Cached</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isCached()
+ * @generated
+ * @ordered
+ */
+ protected boolean cached = CACHED_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ExtensionImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return DeclarationPackage.Literals.EXTENSION;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isCached() {
+ return cached;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setCached(boolean newCached) {
+ boolean oldCached = cached;
+ cached = newCached;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, DeclarationPackage.EXTENSION__CACHED, oldCached, cached));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case DeclarationPackage.EXTENSION__CACHED:
+ return isCached() ? Boolean.TRUE : Boolean.FALSE;
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case DeclarationPackage.EXTENSION__CACHED:
+ setCached(((Boolean)newValue).booleanValue());
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case DeclarationPackage.EXTENSION__CACHED:
+ setCached(CACHED_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case DeclarationPackage.EXTENSION__CACHED:
+ return cached != CACHED_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(" (cached: ");
+ result.append(cached);
+ result.append(')');
+ return result.toString();
+ }
+
+} //ExtensionImpl
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/impl/JavaExtensionStatementImpl.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/impl/JavaExtensionStatementImpl.java
new file mode 100644
index 0000000..084d12c
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/impl/JavaExtensionStatementImpl.java
@@ -0,0 +1,290 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: JavaExtensionStatementImpl.java,v 1.1 2008/02/27 13:21:08 sefftinge Exp $
+ */
+package org.eclipse.xpand3.declaration.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.xpand3.Identifier;
+
+import org.eclipse.xpand3.declaration.DeclarationPackage;
+import org.eclipse.xpand3.declaration.JavaExtensionStatement;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Java Extension Statement</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.xpand3.declaration.impl.JavaExtensionStatementImpl#getJavaType <em>Java Type</em>}</li>
+ * <li>{@link org.eclipse.xpand3.declaration.impl.JavaExtensionStatementImpl#getJavaMethod <em>Java Method</em>}</li>
+ * <li>{@link org.eclipse.xpand3.declaration.impl.JavaExtensionStatementImpl#getJavaParamTypes <em>Java Param Types</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class JavaExtensionStatementImpl extends AbstractNamedDeclarationImpl implements JavaExtensionStatement {
+ /**
+ * The cached value of the '{@link #getJavaType() <em>Java Type</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getJavaType()
+ * @generated
+ * @ordered
+ */
+ protected Identifier javaType;
+
+ /**
+ * The cached value of the '{@link #getJavaMethod() <em>Java Method</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getJavaMethod()
+ * @generated
+ * @ordered
+ */
+ protected Identifier javaMethod;
+
+ /**
+ * The cached value of the '{@link #getJavaParamTypes() <em>Java Param Types</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getJavaParamTypes()
+ * @generated
+ * @ordered
+ */
+ protected EList<Identifier> javaParamTypes;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected JavaExtensionStatementImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return DeclarationPackage.Literals.JAVA_EXTENSION_STATEMENT;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Identifier getJavaType() {
+ return javaType;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetJavaType(Identifier newJavaType, NotificationChain msgs) {
+ Identifier oldJavaType = javaType;
+ javaType = newJavaType;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, DeclarationPackage.JAVA_EXTENSION_STATEMENT__JAVA_TYPE, oldJavaType, newJavaType);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setJavaType(Identifier newJavaType) {
+ if (newJavaType != javaType) {
+ NotificationChain msgs = null;
+ if (javaType != null)
+ msgs = ((InternalEObject)javaType).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - DeclarationPackage.JAVA_EXTENSION_STATEMENT__JAVA_TYPE, null, msgs);
+ if (newJavaType != null)
+ msgs = ((InternalEObject)newJavaType).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - DeclarationPackage.JAVA_EXTENSION_STATEMENT__JAVA_TYPE, null, msgs);
+ msgs = basicSetJavaType(newJavaType, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, DeclarationPackage.JAVA_EXTENSION_STATEMENT__JAVA_TYPE, newJavaType, newJavaType));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Identifier getJavaMethod() {
+ return javaMethod;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetJavaMethod(Identifier newJavaMethod, NotificationChain msgs) {
+ Identifier oldJavaMethod = javaMethod;
+ javaMethod = newJavaMethod;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, DeclarationPackage.JAVA_EXTENSION_STATEMENT__JAVA_METHOD, oldJavaMethod, newJavaMethod);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setJavaMethod(Identifier newJavaMethod) {
+ if (newJavaMethod != javaMethod) {
+ NotificationChain msgs = null;
+ if (javaMethod != null)
+ msgs = ((InternalEObject)javaMethod).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - DeclarationPackage.JAVA_EXTENSION_STATEMENT__JAVA_METHOD, null, msgs);
+ if (newJavaMethod != null)
+ msgs = ((InternalEObject)newJavaMethod).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - DeclarationPackage.JAVA_EXTENSION_STATEMENT__JAVA_METHOD, null, msgs);
+ msgs = basicSetJavaMethod(newJavaMethod, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, DeclarationPackage.JAVA_EXTENSION_STATEMENT__JAVA_METHOD, newJavaMethod, newJavaMethod));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<Identifier> getJavaParamTypes() {
+ if (javaParamTypes == null) {
+ javaParamTypes = new EObjectContainmentEList<Identifier>(Identifier.class, this, DeclarationPackage.JAVA_EXTENSION_STATEMENT__JAVA_PARAM_TYPES);
+ }
+ return javaParamTypes;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case DeclarationPackage.JAVA_EXTENSION_STATEMENT__JAVA_TYPE:
+ return basicSetJavaType(null, msgs);
+ case DeclarationPackage.JAVA_EXTENSION_STATEMENT__JAVA_METHOD:
+ return basicSetJavaMethod(null, msgs);
+ case DeclarationPackage.JAVA_EXTENSION_STATEMENT__JAVA_PARAM_TYPES:
+ return ((InternalEList<?>)getJavaParamTypes()).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 DeclarationPackage.JAVA_EXTENSION_STATEMENT__JAVA_TYPE:
+ return getJavaType();
+ case DeclarationPackage.JAVA_EXTENSION_STATEMENT__JAVA_METHOD:
+ return getJavaMethod();
+ case DeclarationPackage.JAVA_EXTENSION_STATEMENT__JAVA_PARAM_TYPES:
+ return getJavaParamTypes();
+ }
+ 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 DeclarationPackage.JAVA_EXTENSION_STATEMENT__JAVA_TYPE:
+ setJavaType((Identifier)newValue);
+ return;
+ case DeclarationPackage.JAVA_EXTENSION_STATEMENT__JAVA_METHOD:
+ setJavaMethod((Identifier)newValue);
+ return;
+ case DeclarationPackage.JAVA_EXTENSION_STATEMENT__JAVA_PARAM_TYPES:
+ getJavaParamTypes().clear();
+ getJavaParamTypes().addAll((Collection<? extends Identifier>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case DeclarationPackage.JAVA_EXTENSION_STATEMENT__JAVA_TYPE:
+ setJavaType((Identifier)null);
+ return;
+ case DeclarationPackage.JAVA_EXTENSION_STATEMENT__JAVA_METHOD:
+ setJavaMethod((Identifier)null);
+ return;
+ case DeclarationPackage.JAVA_EXTENSION_STATEMENT__JAVA_PARAM_TYPES:
+ getJavaParamTypes().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case DeclarationPackage.JAVA_EXTENSION_STATEMENT__JAVA_TYPE:
+ return javaType != null;
+ case DeclarationPackage.JAVA_EXTENSION_STATEMENT__JAVA_METHOD:
+ return javaMethod != null;
+ case DeclarationPackage.JAVA_EXTENSION_STATEMENT__JAVA_PARAM_TYPES:
+ return javaParamTypes != null && !javaParamTypes.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //JavaExtensionStatementImpl
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/util/DeclarationAdapterFactory.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/util/DeclarationAdapterFactory.java
new file mode 100644
index 0000000..2af9d64
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/util/DeclarationAdapterFactory.java
@@ -0,0 +1,324 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: DeclarationAdapterFactory.java,v 1.1 2008/02/27 13:21:09 sefftinge Exp $
+ */
+package org.eclipse.xpand3.declaration.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.EObject;
+
+import org.eclipse.xpand3.SyntaxElement;
+
+import org.eclipse.xpand3.declaration.*;
+
+/**
+ * <!-- 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.xpand3.declaration.DeclarationPackage
+ * @generated
+ */
+public class DeclarationAdapterFactory extends AdapterFactoryImpl {
+ /**
+ * The cached model package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static DeclarationPackage modelPackage;
+
+ /**
+ * Creates an instance of the adapter factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DeclarationAdapterFactory() {
+ if (modelPackage == null) {
+ modelPackage = DeclarationPackage.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 the delegates to the <code>createXXX</code> methods.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected DeclarationSwitch<Adapter> modelSwitch =
+ new DeclarationSwitch<Adapter>() {
+ @Override
+ public Adapter caseAbstractDeclaration(AbstractDeclaration object) {
+ return createAbstractDeclarationAdapter();
+ }
+ @Override
+ public Adapter caseAbstractNamedDeclaration(AbstractNamedDeclaration object) {
+ return createAbstractNamedDeclarationAdapter();
+ }
+ @Override
+ public Adapter caseDefinition(Definition object) {
+ return createDefinitionAdapter();
+ }
+ @Override
+ public Adapter caseAdvice(Advice object) {
+ return createAdviceAdapter();
+ }
+ @Override
+ public Adapter caseExtension(Extension object) {
+ return createExtensionAdapter();
+ }
+ @Override
+ public Adapter caseAbstractAspect(AbstractAspect object) {
+ return createAbstractAspectAdapter();
+ }
+ @Override
+ public Adapter caseExtensionAspect(ExtensionAspect object) {
+ return createExtensionAspectAdapter();
+ }
+ @Override
+ public Adapter caseDefinitionAspect(DefinitionAspect object) {
+ return createDefinitionAspectAdapter();
+ }
+ @Override
+ public Adapter caseCheck(Check object) {
+ return createCheckAdapter();
+ }
+ @Override
+ public Adapter caseCreateExtensionStatement(CreateExtensionStatement object) {
+ return createCreateExtensionStatementAdapter();
+ }
+ @Override
+ public Adapter caseJavaExtensionStatement(JavaExtensionStatement object) {
+ return createJavaExtensionStatementAdapter();
+ }
+ @Override
+ public Adapter caseSyntaxElement(SyntaxElement object) {
+ return createSyntaxElementAdapter();
+ }
+ @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.xpand3.declaration.AbstractDeclaration <em>Abstract Declaration</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.xpand3.declaration.AbstractDeclaration
+ * @generated
+ */
+ public Adapter createAbstractDeclarationAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xpand3.declaration.AbstractNamedDeclaration <em>Abstract Named Declaration</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.xpand3.declaration.AbstractNamedDeclaration
+ * @generated
+ */
+ public Adapter createAbstractNamedDeclarationAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xpand3.declaration.Definition <em>Definition</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.xpand3.declaration.Definition
+ * @generated
+ */
+ public Adapter createDefinitionAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xpand3.declaration.Advice <em>Advice</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.xpand3.declaration.Advice
+ * @generated
+ */
+ public Adapter createAdviceAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xpand3.declaration.Extension <em>Extension</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.xpand3.declaration.Extension
+ * @generated
+ */
+ public Adapter createExtensionAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xpand3.declaration.AbstractAspect <em>Abstract Aspect</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.xpand3.declaration.AbstractAspect
+ * @generated
+ */
+ public Adapter createAbstractAspectAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xpand3.declaration.ExtensionAspect <em>Extension Aspect</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.xpand3.declaration.ExtensionAspect
+ * @generated
+ */
+ public Adapter createExtensionAspectAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xpand3.declaration.DefinitionAspect <em>Definition Aspect</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.xpand3.declaration.DefinitionAspect
+ * @generated
+ */
+ public Adapter createDefinitionAspectAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xpand3.declaration.Check <em>Check</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.xpand3.declaration.Check
+ * @generated
+ */
+ public Adapter createCheckAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xpand3.declaration.CreateExtensionStatement <em>Create Extension Statement</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.xpand3.declaration.CreateExtensionStatement
+ * @generated
+ */
+ public Adapter createCreateExtensionStatementAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xpand3.declaration.JavaExtensionStatement <em>Java Extension Statement</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.xpand3.declaration.JavaExtensionStatement
+ * @generated
+ */
+ public Adapter createJavaExtensionStatementAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xpand3.SyntaxElement <em>Syntax 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.xpand3.SyntaxElement
+ * @generated
+ */
+ public Adapter createSyntaxElementAdapter() {
+ 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;
+ }
+
+} //DeclarationAdapterFactory
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/util/DeclarationSwitch.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/util/DeclarationSwitch.java
new file mode 100644
index 0000000..301a325
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/declaration/util/DeclarationSwitch.java
@@ -0,0 +1,383 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: DeclarationSwitch.java,v 1.1 2008/02/27 13:21:09 sefftinge Exp $
+ */
+package org.eclipse.xpand3.declaration.util;
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.xpand3.SyntaxElement;
+
+import org.eclipse.xpand3.declaration.*;
+
+/**
+ * <!-- 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.xpand3.declaration.DeclarationPackage
+ * @generated
+ */
+public class DeclarationSwitch<T> {
+ /**
+ * The cached model package
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static DeclarationPackage modelPackage;
+
+ /**
+ * Creates an instance of the switch.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DeclarationSwitch() {
+ if (modelPackage == null) {
+ modelPackage = DeclarationPackage.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 DeclarationPackage.ABSTRACT_DECLARATION: {
+ AbstractDeclaration abstractDeclaration = (AbstractDeclaration)theEObject;
+ T result = caseAbstractDeclaration(abstractDeclaration);
+ if (result == null) result = caseSyntaxElement(abstractDeclaration);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case DeclarationPackage.ABSTRACT_NAMED_DECLARATION: {
+ AbstractNamedDeclaration abstractNamedDeclaration = (AbstractNamedDeclaration)theEObject;
+ T result = caseAbstractNamedDeclaration(abstractNamedDeclaration);
+ if (result == null) result = caseAbstractDeclaration(abstractNamedDeclaration);
+ if (result == null) result = caseSyntaxElement(abstractNamedDeclaration);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case DeclarationPackage.DEFINITION: {
+ Definition definition = (Definition)theEObject;
+ T result = caseDefinition(definition);
+ if (result == null) result = caseAbstractNamedDeclaration(definition);
+ if (result == null) result = caseAbstractDeclaration(definition);
+ if (result == null) result = caseSyntaxElement(definition);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case DeclarationPackage.ADVICE: {
+ Advice advice = (Advice)theEObject;
+ T result = caseAdvice(advice);
+ if (result == null) result = caseAbstractNamedDeclaration(advice);
+ if (result == null) result = caseAbstractDeclaration(advice);
+ if (result == null) result = caseSyntaxElement(advice);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case DeclarationPackage.EXTENSION: {
+ Extension extension = (Extension)theEObject;
+ T result = caseExtension(extension);
+ if (result == null) result = caseAbstractNamedDeclaration(extension);
+ if (result == null) result = caseAbstractDeclaration(extension);
+ if (result == null) result = caseSyntaxElement(extension);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case DeclarationPackage.ABSTRACT_ASPECT: {
+ AbstractAspect abstractAspect = (AbstractAspect)theEObject;
+ T result = caseAbstractAspect(abstractAspect);
+ if (result == null) result = caseSyntaxElement(abstractAspect);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case DeclarationPackage.EXTENSION_ASPECT: {
+ ExtensionAspect extensionAspect = (ExtensionAspect)theEObject;
+ T result = caseExtensionAspect(extensionAspect);
+ if (result == null) result = caseAbstractAspect(extensionAspect);
+ if (result == null) result = caseSyntaxElement(extensionAspect);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case DeclarationPackage.DEFINITION_ASPECT: {
+ DefinitionAspect definitionAspect = (DefinitionAspect)theEObject;
+ T result = caseDefinitionAspect(definitionAspect);
+ if (result == null) result = caseAbstractAspect(definitionAspect);
+ if (result == null) result = caseSyntaxElement(definitionAspect);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case DeclarationPackage.CHECK: {
+ Check check = (Check)theEObject;
+ T result = caseCheck(check);
+ if (result == null) result = caseAbstractDeclaration(check);
+ if (result == null) result = caseSyntaxElement(check);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case DeclarationPackage.CREATE_EXTENSION_STATEMENT: {
+ CreateExtensionStatement createExtensionStatement = (CreateExtensionStatement)theEObject;
+ T result = caseCreateExtensionStatement(createExtensionStatement);
+ if (result == null) result = caseExtension(createExtensionStatement);
+ if (result == null) result = caseAbstractNamedDeclaration(createExtensionStatement);
+ if (result == null) result = caseAbstractDeclaration(createExtensionStatement);
+ if (result == null) result = caseSyntaxElement(createExtensionStatement);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case DeclarationPackage.JAVA_EXTENSION_STATEMENT: {
+ JavaExtensionStatement javaExtensionStatement = (JavaExtensionStatement)theEObject;
+ T result = caseJavaExtensionStatement(javaExtensionStatement);
+ if (result == null) result = caseAbstractNamedDeclaration(javaExtensionStatement);
+ if (result == null) result = caseAbstractDeclaration(javaExtensionStatement);
+ if (result == null) result = caseSyntaxElement(javaExtensionStatement);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ default: return defaultCase(theEObject);
+ }
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Abstract Declaration</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>Abstract Declaration</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseAbstractDeclaration(AbstractDeclaration object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Abstract Named Declaration</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>Abstract Named Declaration</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseAbstractNamedDeclaration(AbstractNamedDeclaration object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Definition</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>Definition</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseDefinition(Definition object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Advice</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>Advice</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseAdvice(Advice object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Extension</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>Extension</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseExtension(Extension object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Abstract Aspect</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>Abstract Aspect</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseAbstractAspect(AbstractAspect object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Extension Aspect</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>Extension Aspect</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseExtensionAspect(ExtensionAspect object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Definition Aspect</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>Definition Aspect</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseDefinitionAspect(DefinitionAspect object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Check</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>Check</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseCheck(Check object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Create Extension Statement</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>Create Extension Statement</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseCreateExtensionStatement(CreateExtensionStatement object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Java Extension Statement</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>Java Extension Statement</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseJavaExtensionStatement(JavaExtensionStatement object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Syntax 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>Syntax Element</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseSyntaxElement(SyntaxElement 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;
+ }
+
+} //DeclarationSwitch
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/AbstractExpression.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/AbstractExpression.java
new file mode 100644
index 0000000..e836dbd
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/AbstractExpression.java
@@ -0,0 +1,22 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: AbstractExpression.java,v 1.1 2008/02/27 13:21:06 sefftinge Exp $
+ */
+package org.eclipse.xpand3.expression;
+
+import org.eclipse.xpand3.SyntaxElement;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Abstract Expression</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.xpand3.expression.ExpressionPackage#getAbstractExpression()
+ * @model abstract="true"
+ * @generated
+ */
+public interface AbstractExpression extends SyntaxElement {
+} // AbstractExpression
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/BooleanLiteral.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/BooleanLiteral.java
new file mode 100644
index 0000000..5398a36
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/BooleanLiteral.java
@@ -0,0 +1,21 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: BooleanLiteral.java,v 1.1 2008/02/27 13:21:06 sefftinge Exp $
+ */
+package org.eclipse.xpand3.expression;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Boolean Literal</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.xpand3.expression.ExpressionPackage#getBooleanLiteral()
+ * @model
+ * @generated
+ */
+public interface BooleanLiteral extends Literal {
+} // BooleanLiteral
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/BooleanOperation.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/BooleanOperation.java
new file mode 100644
index 0000000..b60c0ad
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/BooleanOperation.java
@@ -0,0 +1,108 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: BooleanOperation.java,v 1.1 2008/02/27 13:21:06 sefftinge Exp $
+ */
+package org.eclipse.xpand3.expression;
+
+import org.eclipse.xpand3.Identifier;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Boolean Operation</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.xpand3.expression.BooleanOperation#getLeft <em>Left</em>}</li>
+ * <li>{@link org.eclipse.xpand3.expression.BooleanOperation#getRight <em>Right</em>}</li>
+ * <li>{@link org.eclipse.xpand3.expression.BooleanOperation#getOperator <em>Operator</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.xpand3.expression.ExpressionPackage#getBooleanOperation()
+ * @model
+ * @generated
+ */
+public interface BooleanOperation extends AbstractExpression {
+ /**
+ * Returns the value of the '<em><b>Left</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Left</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>Left</em>' containment reference.
+ * @see #setLeft(AbstractExpression)
+ * @see org.eclipse.xpand3.expression.ExpressionPackage#getBooleanOperation_Left()
+ * @model containment="true"
+ * @generated
+ */
+ AbstractExpression getLeft();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xpand3.expression.BooleanOperation#getLeft <em>Left</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Left</em>' containment reference.
+ * @see #getLeft()
+ * @generated
+ */
+ void setLeft(AbstractExpression value);
+
+ /**
+ * Returns the value of the '<em><b>Right</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Right</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>Right</em>' containment reference.
+ * @see #setRight(AbstractExpression)
+ * @see org.eclipse.xpand3.expression.ExpressionPackage#getBooleanOperation_Right()
+ * @model containment="true"
+ * @generated
+ */
+ AbstractExpression getRight();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xpand3.expression.BooleanOperation#getRight <em>Right</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Right</em>' containment reference.
+ * @see #getRight()
+ * @generated
+ */
+ void setRight(AbstractExpression value);
+
+ /**
+ * Returns the value of the '<em><b>Operator</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Operator</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>Operator</em>' containment reference.
+ * @see #setOperator(Identifier)
+ * @see org.eclipse.xpand3.expression.ExpressionPackage#getBooleanOperation_Operator()
+ * @model containment="true"
+ * @generated
+ */
+ Identifier getOperator();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xpand3.expression.BooleanOperation#getOperator <em>Operator</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Operator</em>' containment reference.
+ * @see #getOperator()
+ * @generated
+ */
+ void setOperator(Identifier value);
+
+} // BooleanOperation
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/Case.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/Case.java
new file mode 100644
index 0000000..b16f9a9
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/Case.java
@@ -0,0 +1,81 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: Case.java,v 1.1 2008/02/27 13:21:07 sefftinge Exp $
+ */
+package org.eclipse.xpand3.expression;
+
+import org.eclipse.xpand3.SyntaxElement;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Case</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.xpand3.expression.Case#getCondition <em>Condition</em>}</li>
+ * <li>{@link org.eclipse.xpand3.expression.Case#getThenPart <em>Then Part</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.xpand3.expression.ExpressionPackage#getCase()
+ * @model
+ * @generated
+ */
+public interface Case extends SyntaxElement {
+ /**
+ * Returns the value of the '<em><b>Condition</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Condition</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>Condition</em>' containment reference.
+ * @see #setCondition(AbstractExpression)
+ * @see org.eclipse.xpand3.expression.ExpressionPackage#getCase_Condition()
+ * @model containment="true"
+ * @generated
+ */
+ AbstractExpression getCondition();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xpand3.expression.Case#getCondition <em>Condition</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Condition</em>' containment reference.
+ * @see #getCondition()
+ * @generated
+ */
+ void setCondition(AbstractExpression value);
+
+ /**
+ * Returns the value of the '<em><b>Then Part</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Then Part</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>Then Part</em>' containment reference.
+ * @see #setThenPart(AbstractExpression)
+ * @see org.eclipse.xpand3.expression.ExpressionPackage#getCase_ThenPart()
+ * @model containment="true"
+ * @generated
+ */
+ AbstractExpression getThenPart();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xpand3.expression.Case#getThenPart <em>Then Part</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Then Part</em>' containment reference.
+ * @see #getThenPart()
+ * @generated
+ */
+ void setThenPart(AbstractExpression value);
+
+} // Case
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/Cast.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/Cast.java
new file mode 100644
index 0000000..a18d01c
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/Cast.java
@@ -0,0 +1,81 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: Cast.java,v 1.1 2008/02/27 13:21:07 sefftinge Exp $
+ */
+package org.eclipse.xpand3.expression;
+
+import org.eclipse.xpand3.Identifier;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Cast</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.xpand3.expression.Cast#getType <em>Type</em>}</li>
+ * <li>{@link org.eclipse.xpand3.expression.Cast#getTarget <em>Target</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.xpand3.expression.ExpressionPackage#getCast()
+ * @model
+ * @generated
+ */
+public interface Cast extends AbstractExpression {
+ /**
+ * Returns the value of the '<em><b>Type</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Type</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>Type</em>' containment reference.
+ * @see #setType(Identifier)
+ * @see org.eclipse.xpand3.expression.ExpressionPackage#getCast_Type()
+ * @model containment="true"
+ * @generated
+ */
+ Identifier getType();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xpand3.expression.Cast#getType <em>Type</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Type</em>' containment reference.
+ * @see #getType()
+ * @generated
+ */
+ void setType(Identifier value);
+
+ /**
+ * Returns the value of the '<em><b>Target</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Target</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>Target</em>' containment reference.
+ * @see #setTarget(AbstractExpression)
+ * @see org.eclipse.xpand3.expression.ExpressionPackage#getCast_Target()
+ * @model containment="true"
+ * @generated
+ */
+ AbstractExpression getTarget();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xpand3.expression.Cast#getTarget <em>Target</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Target</em>' containment reference.
+ * @see #getTarget()
+ * @generated
+ */
+ void setTarget(AbstractExpression value);
+
+} // Cast
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/ChainExpression.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/ChainExpression.java
new file mode 100644
index 0000000..a7285a6
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/ChainExpression.java
@@ -0,0 +1,80 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: ChainExpression.java,v 1.1 2008/02/27 13:21:07 sefftinge Exp $
+ */
+package org.eclipse.xpand3.expression;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Chain Expression</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.xpand3.expression.ChainExpression#getFirst <em>First</em>}</li>
+ * <li>{@link org.eclipse.xpand3.expression.ChainExpression#getNext <em>Next</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.xpand3.expression.ExpressionPackage#getChainExpression()
+ * @model
+ * @generated
+ */
+public interface ChainExpression extends AbstractExpression {
+ /**
+ * Returns the value of the '<em><b>First</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>First</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>First</em>' containment reference.
+ * @see #setFirst(AbstractExpression)
+ * @see org.eclipse.xpand3.expression.ExpressionPackage#getChainExpression_First()
+ * @model containment="true"
+ * @generated
+ */
+ AbstractExpression getFirst();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xpand3.expression.ChainExpression#getFirst <em>First</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>First</em>' containment reference.
+ * @see #getFirst()
+ * @generated
+ */
+ void setFirst(AbstractExpression value);
+
+ /**
+ * Returns the value of the '<em><b>Next</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Next</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>Next</em>' containment reference.
+ * @see #setNext(AbstractExpression)
+ * @see org.eclipse.xpand3.expression.ExpressionPackage#getChainExpression_Next()
+ * @model containment="true"
+ * @generated
+ */
+ AbstractExpression getNext();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xpand3.expression.ChainExpression#getNext <em>Next</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Next</em>' containment reference.
+ * @see #getNext()
+ * @generated
+ */
+ void setNext(AbstractExpression value);
+
+} // ChainExpression
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/CollectionExpression.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/CollectionExpression.java
new file mode 100644
index 0000000..5b4b654
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/CollectionExpression.java
@@ -0,0 +1,81 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: CollectionExpression.java,v 1.1 2008/02/27 13:21:06 sefftinge Exp $
+ */
+package org.eclipse.xpand3.expression;
+
+import org.eclipse.xpand3.Identifier;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Collection Expression</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.xpand3.expression.CollectionExpression#getClosure <em>Closure</em>}</li>
+ * <li>{@link org.eclipse.xpand3.expression.CollectionExpression#getEleName <em>Ele Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.xpand3.expression.ExpressionPackage#getCollectionExpression()
+ * @model
+ * @generated
+ */
+public interface CollectionExpression extends FeatureCall {
+ /**
+ * Returns the value of the '<em><b>Closure</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Closure</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>Closure</em>' containment reference.
+ * @see #setClosure(AbstractExpression)
+ * @see org.eclipse.xpand3.expression.ExpressionPackage#getCollectionExpression_Closure()
+ * @model containment="true"
+ * @generated
+ */
+ AbstractExpression getClosure();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xpand3.expression.CollectionExpression#getClosure <em>Closure</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Closure</em>' containment reference.
+ * @see #getClosure()
+ * @generated
+ */
+ void setClosure(AbstractExpression value);
+
+ /**
+ * Returns the value of the '<em><b>Ele Name</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Ele Name</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>Ele Name</em>' containment reference.
+ * @see #setEleName(Identifier)
+ * @see org.eclipse.xpand3.expression.ExpressionPackage#getCollectionExpression_EleName()
+ * @model containment="true"
+ * @generated
+ */
+ Identifier getEleName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xpand3.expression.CollectionExpression#getEleName <em>Ele Name</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Ele Name</em>' containment reference.
+ * @see #getEleName()
+ * @generated
+ */
+ void setEleName(Identifier value);
+
+} // CollectionExpression
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/ConstructorCallExpression.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/ConstructorCallExpression.java
new file mode 100644
index 0000000..238d15c
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/ConstructorCallExpression.java
@@ -0,0 +1,54 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: ConstructorCallExpression.java,v 1.1 2008/02/27 13:21:07 sefftinge Exp $
+ */
+package org.eclipse.xpand3.expression;
+
+import org.eclipse.xpand3.Identifier;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Constructor Call Expression</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.xpand3.expression.ConstructorCallExpression#getType <em>Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.xpand3.expression.ExpressionPackage#getConstructorCallExpression()
+ * @model
+ * @generated
+ */
+public interface ConstructorCallExpression extends AbstractExpression {
+ /**
+ * Returns the value of the '<em><b>Type</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Type</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>Type</em>' containment reference.
+ * @see #setType(Identifier)
+ * @see org.eclipse.xpand3.expression.ExpressionPackage#getConstructorCallExpression_Type()
+ * @model containment="true"
+ * @generated
+ */
+ Identifier getType();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xpand3.expression.ConstructorCallExpression#getType <em>Type</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Type</em>' containment reference.
+ * @see #getType()
+ * @generated
+ */
+ void setType(Identifier value);
+
+} // ConstructorCallExpression
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/ExpressionFactory.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/ExpressionFactory.java
new file mode 100644
index 0000000..bd772d3
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/ExpressionFactory.java
@@ -0,0 +1,208 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: ExpressionFactory.java,v 1.1 2008/02/27 13:21:06 sefftinge Exp $
+ */
+package org.eclipse.xpand3.expression;
+
+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.xpand3.expression.ExpressionPackage
+ * @generated
+ */
+public interface ExpressionFactory extends EFactory {
+ /**
+ * The singleton instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ ExpressionFactory eINSTANCE = org.eclipse.xpand3.expression.impl.ExpressionFactoryImpl.init();
+
+ /**
+ * Returns a new object of class '<em>Boolean Operation</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Boolean Operation</em>'.
+ * @generated
+ */
+ BooleanOperation createBooleanOperation();
+
+ /**
+ * Returns a new object of class '<em>Cast</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Cast</em>'.
+ * @generated
+ */
+ Cast createCast();
+
+ /**
+ * Returns a new object of class '<em>Chain Expression</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Chain Expression</em>'.
+ * @generated
+ */
+ ChainExpression createChainExpression();
+
+ /**
+ * Returns a new object of class '<em>Constructor Call Expression</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Constructor Call Expression</em>'.
+ * @generated
+ */
+ ConstructorCallExpression createConstructorCallExpression();
+
+ /**
+ * Returns a new object of class '<em>Feature Call</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Feature Call</em>'.
+ * @generated
+ */
+ FeatureCall createFeatureCall();
+
+ /**
+ * Returns a new object of class '<em>Collection Expression</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Collection Expression</em>'.
+ * @generated
+ */
+ CollectionExpression createCollectionExpression();
+
+ /**
+ * Returns a new object of class '<em>Operation Call</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Operation Call</em>'.
+ * @generated
+ */
+ OperationCall createOperationCall();
+
+ /**
+ * Returns a new object of class '<em>Type Select Expression</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Type Select Expression</em>'.
+ * @generated
+ */
+ TypeSelectExpression createTypeSelectExpression();
+
+ /**
+ * Returns a new object of class '<em>Global Var Expression</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Global Var Expression</em>'.
+ * @generated
+ */
+ GlobalVarExpression createGlobalVarExpression();
+
+ /**
+ * Returns a new object of class '<em>If Expression</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>If Expression</em>'.
+ * @generated
+ */
+ IfExpression createIfExpression();
+
+ /**
+ * Returns a new object of class '<em>Let Expression</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Let Expression</em>'.
+ * @generated
+ */
+ LetExpression createLetExpression();
+
+ /**
+ * Returns a new object of class '<em>List Literal</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>List Literal</em>'.
+ * @generated
+ */
+ ListLiteral createListLiteral();
+
+ /**
+ * Returns a new object of class '<em>Boolean Literal</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Boolean Literal</em>'.
+ * @generated
+ */
+ BooleanLiteral createBooleanLiteral();
+
+ /**
+ * Returns a new object of class '<em>Integer Literal</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Integer Literal</em>'.
+ * @generated
+ */
+ IntegerLiteral createIntegerLiteral();
+
+ /**
+ * Returns a new object of class '<em>Null Literal</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Null Literal</em>'.
+ * @generated
+ */
+ NullLiteral createNullLiteral();
+
+ /**
+ * Returns a new object of class '<em>Real Literal</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Real Literal</em>'.
+ * @generated
+ */
+ RealLiteral createRealLiteral();
+
+ /**
+ * Returns a new object of class '<em>String Literal</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>String Literal</em>'.
+ * @generated
+ */
+ StringLiteral createStringLiteral();
+
+ /**
+ * Returns a new object of class '<em>Switch Expression</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Switch Expression</em>'.
+ * @generated
+ */
+ SwitchExpression createSwitchExpression();
+
+ /**
+ * Returns a new object of class '<em>Case</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Case</em>'.
+ * @generated
+ */
+ Case createCase();
+
+ /**
+ * Returns the package supported by this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the package supported by this factory.
+ * @generated
+ */
+ ExpressionPackage getExpressionPackage();
+
+} //ExpressionFactory
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/ExpressionPackage.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/ExpressionPackage.java
new file mode 100644
index 0000000..d04a1fd
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/ExpressionPackage.java
@@ -0,0 +1,2546 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: ExpressionPackage.java,v 1.1 2008/02/27 13:21:07 sefftinge Exp $
+ */
+package org.eclipse.xpand3.expression;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+import org.eclipse.xpand3.Xpand3Package;
+
+/**
+ * <!-- 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.xpand3.expression.ExpressionFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface ExpressionPackage extends EPackage {
+ /**
+ * The package name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNAME = "expression";
+
+ /**
+ * The package namespace URI.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_URI = "http://www.eclipse.org/m2t/xpand/xpand3/expession";
+
+ /**
+ * The package namespace name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_PREFIX = "expression";
+
+ /**
+ * The singleton instance of the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ ExpressionPackage eINSTANCE = org.eclipse.xpand3.expression.impl.ExpressionPackageImpl.init();
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xpand3.expression.impl.AbstractExpressionImpl <em>Abstract Expression</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.expression.impl.AbstractExpressionImpl
+ * @see org.eclipse.xpand3.expression.impl.ExpressionPackageImpl#getAbstractExpression()
+ * @generated
+ */
+ int ABSTRACT_EXPRESSION = 0;
+
+ /**
+ * The feature id for the '<em><b>Line</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_EXPRESSION__LINE = Xpand3Package.SYNTAX_ELEMENT__LINE;
+
+ /**
+ * The feature id for the '<em><b>Start</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_EXPRESSION__START = Xpand3Package.SYNTAX_ELEMENT__START;
+
+ /**
+ * The feature id for the '<em><b>End</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_EXPRESSION__END = Xpand3Package.SYNTAX_ELEMENT__END;
+
+ /**
+ * The feature id for the '<em><b>File Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_EXPRESSION__FILE_NAME = Xpand3Package.SYNTAX_ELEMENT__FILE_NAME;
+
+ /**
+ * The number of structural features of the '<em>Abstract Expression</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_EXPRESSION_FEATURE_COUNT = Xpand3Package.SYNTAX_ELEMENT_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xpand3.expression.impl.BooleanOperationImpl <em>Boolean Operation</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.expression.impl.BooleanOperationImpl
+ * @see org.eclipse.xpand3.expression.impl.ExpressionPackageImpl#getBooleanOperation()
+ * @generated
+ */
+ int BOOLEAN_OPERATION = 1;
+
+ /**
+ * The feature id for the '<em><b>Line</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int BOOLEAN_OPERATION__LINE = ABSTRACT_EXPRESSION__LINE;
+
+ /**
+ * The feature id for the '<em><b>Start</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int BOOLEAN_OPERATION__START = ABSTRACT_EXPRESSION__START;
+
+ /**
+ * The feature id for the '<em><b>End</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int BOOLEAN_OPERATION__END = ABSTRACT_EXPRESSION__END;
+
+ /**
+ * The feature id for the '<em><b>File Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int BOOLEAN_OPERATION__FILE_NAME = ABSTRACT_EXPRESSION__FILE_NAME;
+
+ /**
+ * The feature id for the '<em><b>Left</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int BOOLEAN_OPERATION__LEFT = ABSTRACT_EXPRESSION_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Right</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int BOOLEAN_OPERATION__RIGHT = ABSTRACT_EXPRESSION_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Operator</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int BOOLEAN_OPERATION__OPERATOR = ABSTRACT_EXPRESSION_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>Boolean Operation</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int BOOLEAN_OPERATION_FEATURE_COUNT = ABSTRACT_EXPRESSION_FEATURE_COUNT + 3;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xpand3.expression.impl.CastImpl <em>Cast</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.expression.impl.CastImpl
+ * @see org.eclipse.xpand3.expression.impl.ExpressionPackageImpl#getCast()
+ * @generated
+ */
+ int CAST = 2;
+
+ /**
+ * The feature id for the '<em><b>Line</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CAST__LINE = ABSTRACT_EXPRESSION__LINE;
+
+ /**
+ * The feature id for the '<em><b>Start</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CAST__START = ABSTRACT_EXPRESSION__START;
+
+ /**
+ * The feature id for the '<em><b>End</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CAST__END = ABSTRACT_EXPRESSION__END;
+
+ /**
+ * The feature id for the '<em><b>File Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CAST__FILE_NAME = ABSTRACT_EXPRESSION__FILE_NAME;
+
+ /**
+ * The feature id for the '<em><b>Type</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CAST__TYPE = ABSTRACT_EXPRESSION_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Target</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CAST__TARGET = ABSTRACT_EXPRESSION_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Cast</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CAST_FEATURE_COUNT = ABSTRACT_EXPRESSION_FEATURE_COUNT + 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xpand3.expression.impl.ChainExpressionImpl <em>Chain Expression</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.expression.impl.ChainExpressionImpl
+ * @see org.eclipse.xpand3.expression.impl.ExpressionPackageImpl#getChainExpression()
+ * @generated
+ */
+ int CHAIN_EXPRESSION = 3;
+
+ /**
+ * The feature id for the '<em><b>Line</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CHAIN_EXPRESSION__LINE = ABSTRACT_EXPRESSION__LINE;
+
+ /**
+ * The feature id for the '<em><b>Start</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CHAIN_EXPRESSION__START = ABSTRACT_EXPRESSION__START;
+
+ /**
+ * The feature id for the '<em><b>End</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CHAIN_EXPRESSION__END = ABSTRACT_EXPRESSION__END;
+
+ /**
+ * The feature id for the '<em><b>File Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CHAIN_EXPRESSION__FILE_NAME = ABSTRACT_EXPRESSION__FILE_NAME;
+
+ /**
+ * The feature id for the '<em><b>First</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CHAIN_EXPRESSION__FIRST = ABSTRACT_EXPRESSION_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Next</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CHAIN_EXPRESSION__NEXT = ABSTRACT_EXPRESSION_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Chain Expression</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CHAIN_EXPRESSION_FEATURE_COUNT = ABSTRACT_EXPRESSION_FEATURE_COUNT + 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xpand3.expression.impl.ConstructorCallExpressionImpl <em>Constructor Call Expression</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.expression.impl.ConstructorCallExpressionImpl
+ * @see org.eclipse.xpand3.expression.impl.ExpressionPackageImpl#getConstructorCallExpression()
+ * @generated
+ */
+ int CONSTRUCTOR_CALL_EXPRESSION = 4;
+
+ /**
+ * The feature id for the '<em><b>Line</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CONSTRUCTOR_CALL_EXPRESSION__LINE = ABSTRACT_EXPRESSION__LINE;
+
+ /**
+ * The feature id for the '<em><b>Start</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CONSTRUCTOR_CALL_EXPRESSION__START = ABSTRACT_EXPRESSION__START;
+
+ /**
+ * The feature id for the '<em><b>End</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CONSTRUCTOR_CALL_EXPRESSION__END = ABSTRACT_EXPRESSION__END;
+
+ /**
+ * The feature id for the '<em><b>File Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CONSTRUCTOR_CALL_EXPRESSION__FILE_NAME = ABSTRACT_EXPRESSION__FILE_NAME;
+
+ /**
+ * The feature id for the '<em><b>Type</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CONSTRUCTOR_CALL_EXPRESSION__TYPE = ABSTRACT_EXPRESSION_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Constructor Call Expression</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CONSTRUCTOR_CALL_EXPRESSION_FEATURE_COUNT = ABSTRACT_EXPRESSION_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xpand3.expression.impl.FeatureCallImpl <em>Feature Call</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.expression.impl.FeatureCallImpl
+ * @see org.eclipse.xpand3.expression.impl.ExpressionPackageImpl#getFeatureCall()
+ * @generated
+ */
+ int FEATURE_CALL = 5;
+
+ /**
+ * The feature id for the '<em><b>Line</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FEATURE_CALL__LINE = ABSTRACT_EXPRESSION__LINE;
+
+ /**
+ * The feature id for the '<em><b>Start</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FEATURE_CALL__START = ABSTRACT_EXPRESSION__START;
+
+ /**
+ * The feature id for the '<em><b>End</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FEATURE_CALL__END = ABSTRACT_EXPRESSION__END;
+
+ /**
+ * The feature id for the '<em><b>File Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FEATURE_CALL__FILE_NAME = ABSTRACT_EXPRESSION__FILE_NAME;
+
+ /**
+ * The feature id for the '<em><b>Target</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FEATURE_CALL__TARGET = ABSTRACT_EXPRESSION_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FEATURE_CALL__NAME = ABSTRACT_EXPRESSION_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Feature Call</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FEATURE_CALL_FEATURE_COUNT = ABSTRACT_EXPRESSION_FEATURE_COUNT + 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xpand3.expression.impl.CollectionExpressionImpl <em>Collection Expression</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.expression.impl.CollectionExpressionImpl
+ * @see org.eclipse.xpand3.expression.impl.ExpressionPackageImpl#getCollectionExpression()
+ * @generated
+ */
+ int COLLECTION_EXPRESSION = 6;
+
+ /**
+ * The feature id for the '<em><b>Line</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int COLLECTION_EXPRESSION__LINE = FEATURE_CALL__LINE;
+
+ /**
+ * The feature id for the '<em><b>Start</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int COLLECTION_EXPRESSION__START = FEATURE_CALL__START;
+
+ /**
+ * The feature id for the '<em><b>End</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int COLLECTION_EXPRESSION__END = FEATURE_CALL__END;
+
+ /**
+ * The feature id for the '<em><b>File Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int COLLECTION_EXPRESSION__FILE_NAME = FEATURE_CALL__FILE_NAME;
+
+ /**
+ * The feature id for the '<em><b>Target</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int COLLECTION_EXPRESSION__TARGET = FEATURE_CALL__TARGET;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int COLLECTION_EXPRESSION__NAME = FEATURE_CALL__NAME;
+
+ /**
+ * The feature id for the '<em><b>Closure</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int COLLECTION_EXPRESSION__CLOSURE = FEATURE_CALL_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Ele Name</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int COLLECTION_EXPRESSION__ELE_NAME = FEATURE_CALL_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Collection Expression</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int COLLECTION_EXPRESSION_FEATURE_COUNT = FEATURE_CALL_FEATURE_COUNT + 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xpand3.expression.impl.OperationCallImpl <em>Operation Call</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.expression.impl.OperationCallImpl
+ * @see org.eclipse.xpand3.expression.impl.ExpressionPackageImpl#getOperationCall()
+ * @generated
+ */
+ int OPERATION_CALL = 7;
+
+ /**
+ * The feature id for the '<em><b>Line</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int OPERATION_CALL__LINE = FEATURE_CALL__LINE;
+
+ /**
+ * The feature id for the '<em><b>Start</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int OPERATION_CALL__START = FEATURE_CALL__START;
+
+ /**
+ * The feature id for the '<em><b>End</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int OPERATION_CALL__END = FEATURE_CALL__END;
+
+ /**
+ * The feature id for the '<em><b>File Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int OPERATION_CALL__FILE_NAME = FEATURE_CALL__FILE_NAME;
+
+ /**
+ * The feature id for the '<em><b>Target</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int OPERATION_CALL__TARGET = FEATURE_CALL__TARGET;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int OPERATION_CALL__NAME = FEATURE_CALL__NAME;
+
+ /**
+ * The feature id for the '<em><b>Params</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int OPERATION_CALL__PARAMS = FEATURE_CALL_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Operation Call</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int OPERATION_CALL_FEATURE_COUNT = FEATURE_CALL_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xpand3.expression.impl.TypeSelectExpressionImpl <em>Type Select Expression</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.expression.impl.TypeSelectExpressionImpl
+ * @see org.eclipse.xpand3.expression.impl.ExpressionPackageImpl#getTypeSelectExpression()
+ * @generated
+ */
+ int TYPE_SELECT_EXPRESSION = 8;
+
+ /**
+ * The feature id for the '<em><b>Line</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TYPE_SELECT_EXPRESSION__LINE = FEATURE_CALL__LINE;
+
+ /**
+ * The feature id for the '<em><b>Start</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TYPE_SELECT_EXPRESSION__START = FEATURE_CALL__START;
+
+ /**
+ * The feature id for the '<em><b>End</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TYPE_SELECT_EXPRESSION__END = FEATURE_CALL__END;
+
+ /**
+ * The feature id for the '<em><b>File Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TYPE_SELECT_EXPRESSION__FILE_NAME = FEATURE_CALL__FILE_NAME;
+
+ /**
+ * The feature id for the '<em><b>Target</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TYPE_SELECT_EXPRESSION__TARGET = FEATURE_CALL__TARGET;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TYPE_SELECT_EXPRESSION__NAME = FEATURE_CALL__NAME;
+
+ /**
+ * The feature id for the '<em><b>Type Literal</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TYPE_SELECT_EXPRESSION__TYPE_LITERAL = FEATURE_CALL_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Type Select Expression</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TYPE_SELECT_EXPRESSION_FEATURE_COUNT = FEATURE_CALL_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xpand3.expression.impl.GlobalVarExpressionImpl <em>Global Var Expression</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.expression.impl.GlobalVarExpressionImpl
+ * @see org.eclipse.xpand3.expression.impl.ExpressionPackageImpl#getGlobalVarExpression()
+ * @generated
+ */
+ int GLOBAL_VAR_EXPRESSION = 9;
+
+ /**
+ * The feature id for the '<em><b>Line</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int GLOBAL_VAR_EXPRESSION__LINE = ABSTRACT_EXPRESSION__LINE;
+
+ /**
+ * The feature id for the '<em><b>Start</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int GLOBAL_VAR_EXPRESSION__START = ABSTRACT_EXPRESSION__START;
+
+ /**
+ * The feature id for the '<em><b>End</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int GLOBAL_VAR_EXPRESSION__END = ABSTRACT_EXPRESSION__END;
+
+ /**
+ * The feature id for the '<em><b>File Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int GLOBAL_VAR_EXPRESSION__FILE_NAME = ABSTRACT_EXPRESSION__FILE_NAME;
+
+ /**
+ * The feature id for the '<em><b>Global Var Name</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int GLOBAL_VAR_EXPRESSION__GLOBAL_VAR_NAME = ABSTRACT_EXPRESSION_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Global Var Expression</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int GLOBAL_VAR_EXPRESSION_FEATURE_COUNT = ABSTRACT_EXPRESSION_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xpand3.expression.impl.IfExpressionImpl <em>If Expression</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.expression.impl.IfExpressionImpl
+ * @see org.eclipse.xpand3.expression.impl.ExpressionPackageImpl#getIfExpression()
+ * @generated
+ */
+ int IF_EXPRESSION = 10;
+
+ /**
+ * The feature id for the '<em><b>Line</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IF_EXPRESSION__LINE = ABSTRACT_EXPRESSION__LINE;
+
+ /**
+ * The feature id for the '<em><b>Start</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IF_EXPRESSION__START = ABSTRACT_EXPRESSION__START;
+
+ /**
+ * The feature id for the '<em><b>End</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IF_EXPRESSION__END = ABSTRACT_EXPRESSION__END;
+
+ /**
+ * The feature id for the '<em><b>File Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IF_EXPRESSION__FILE_NAME = ABSTRACT_EXPRESSION__FILE_NAME;
+
+ /**
+ * The feature id for the '<em><b>Condition</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IF_EXPRESSION__CONDITION = ABSTRACT_EXPRESSION_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Then Part</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IF_EXPRESSION__THEN_PART = ABSTRACT_EXPRESSION_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Else Part</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IF_EXPRESSION__ELSE_PART = ABSTRACT_EXPRESSION_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>If Expression</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IF_EXPRESSION_FEATURE_COUNT = ABSTRACT_EXPRESSION_FEATURE_COUNT + 3;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xpand3.expression.impl.LetExpressionImpl <em>Let Expression</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.expression.impl.LetExpressionImpl
+ * @see org.eclipse.xpand3.expression.impl.ExpressionPackageImpl#getLetExpression()
+ * @generated
+ */
+ int LET_EXPRESSION = 11;
+
+ /**
+ * The feature id for the '<em><b>Line</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LET_EXPRESSION__LINE = ABSTRACT_EXPRESSION__LINE;
+
+ /**
+ * The feature id for the '<em><b>Start</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LET_EXPRESSION__START = ABSTRACT_EXPRESSION__START;
+
+ /**
+ * The feature id for the '<em><b>End</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LET_EXPRESSION__END = ABSTRACT_EXPRESSION__END;
+
+ /**
+ * The feature id for the '<em><b>File Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LET_EXPRESSION__FILE_NAME = ABSTRACT_EXPRESSION__FILE_NAME;
+
+ /**
+ * The feature id for the '<em><b>Var Expression</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LET_EXPRESSION__VAR_EXPRESSION = ABSTRACT_EXPRESSION_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Target Expression</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LET_EXPRESSION__TARGET_EXPRESSION = ABSTRACT_EXPRESSION_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Var Name</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LET_EXPRESSION__VAR_NAME = ABSTRACT_EXPRESSION_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>Let Expression</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LET_EXPRESSION_FEATURE_COUNT = ABSTRACT_EXPRESSION_FEATURE_COUNT + 3;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xpand3.expression.impl.ListLiteralImpl <em>List Literal</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.expression.impl.ListLiteralImpl
+ * @see org.eclipse.xpand3.expression.impl.ExpressionPackageImpl#getListLiteral()
+ * @generated
+ */
+ int LIST_LITERAL = 12;
+
+ /**
+ * The feature id for the '<em><b>Line</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LIST_LITERAL__LINE = ABSTRACT_EXPRESSION__LINE;
+
+ /**
+ * The feature id for the '<em><b>Start</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LIST_LITERAL__START = ABSTRACT_EXPRESSION__START;
+
+ /**
+ * The feature id for the '<em><b>End</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LIST_LITERAL__END = ABSTRACT_EXPRESSION__END;
+
+ /**
+ * The feature id for the '<em><b>File Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LIST_LITERAL__FILE_NAME = ABSTRACT_EXPRESSION__FILE_NAME;
+
+ /**
+ * The feature id for the '<em><b>Elements</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LIST_LITERAL__ELEMENTS = ABSTRACT_EXPRESSION_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>List Literal</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LIST_LITERAL_FEATURE_COUNT = ABSTRACT_EXPRESSION_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xpand3.expression.impl.LiteralImpl <em>Literal</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.expression.impl.LiteralImpl
+ * @see org.eclipse.xpand3.expression.impl.ExpressionPackageImpl#getLiteral()
+ * @generated
+ */
+ int LITERAL = 13;
+
+ /**
+ * The feature id for the '<em><b>Line</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LITERAL__LINE = ABSTRACT_EXPRESSION__LINE;
+
+ /**
+ * The feature id for the '<em><b>Start</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LITERAL__START = ABSTRACT_EXPRESSION__START;
+
+ /**
+ * The feature id for the '<em><b>End</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LITERAL__END = ABSTRACT_EXPRESSION__END;
+
+ /**
+ * The feature id for the '<em><b>File Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LITERAL__FILE_NAME = ABSTRACT_EXPRESSION__FILE_NAME;
+
+ /**
+ * The feature id for the '<em><b>Literal Value</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LITERAL__LITERAL_VALUE = ABSTRACT_EXPRESSION_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Literal</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LITERAL_FEATURE_COUNT = ABSTRACT_EXPRESSION_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xpand3.expression.impl.BooleanLiteralImpl <em>Boolean Literal</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.expression.impl.BooleanLiteralImpl
+ * @see org.eclipse.xpand3.expression.impl.ExpressionPackageImpl#getBooleanLiteral()
+ * @generated
+ */
+ int BOOLEAN_LITERAL = 14;
+
+ /**
+ * The feature id for the '<em><b>Line</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int BOOLEAN_LITERAL__LINE = LITERAL__LINE;
+
+ /**
+ * The feature id for the '<em><b>Start</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int BOOLEAN_LITERAL__START = LITERAL__START;
+
+ /**
+ * The feature id for the '<em><b>End</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int BOOLEAN_LITERAL__END = LITERAL__END;
+
+ /**
+ * The feature id for the '<em><b>File Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int BOOLEAN_LITERAL__FILE_NAME = LITERAL__FILE_NAME;
+
+ /**
+ * The feature id for the '<em><b>Literal Value</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int BOOLEAN_LITERAL__LITERAL_VALUE = LITERAL__LITERAL_VALUE;
+
+ /**
+ * The number of structural features of the '<em>Boolean Literal</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int BOOLEAN_LITERAL_FEATURE_COUNT = LITERAL_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xpand3.expression.impl.IntegerLiteralImpl <em>Integer Literal</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.expression.impl.IntegerLiteralImpl
+ * @see org.eclipse.xpand3.expression.impl.ExpressionPackageImpl#getIntegerLiteral()
+ * @generated
+ */
+ int INTEGER_LITERAL = 15;
+
+ /**
+ * The feature id for the '<em><b>Line</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTEGER_LITERAL__LINE = LITERAL__LINE;
+
+ /**
+ * The feature id for the '<em><b>Start</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTEGER_LITERAL__START = LITERAL__START;
+
+ /**
+ * The feature id for the '<em><b>End</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTEGER_LITERAL__END = LITERAL__END;
+
+ /**
+ * The feature id for the '<em><b>File Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTEGER_LITERAL__FILE_NAME = LITERAL__FILE_NAME;
+
+ /**
+ * The feature id for the '<em><b>Literal Value</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTEGER_LITERAL__LITERAL_VALUE = LITERAL__LITERAL_VALUE;
+
+ /**
+ * The number of structural features of the '<em>Integer Literal</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTEGER_LITERAL_FEATURE_COUNT = LITERAL_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xpand3.expression.impl.NullLiteralImpl <em>Null Literal</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.expression.impl.NullLiteralImpl
+ * @see org.eclipse.xpand3.expression.impl.ExpressionPackageImpl#getNullLiteral()
+ * @generated
+ */
+ int NULL_LITERAL = 16;
+
+ /**
+ * The feature id for the '<em><b>Line</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NULL_LITERAL__LINE = LITERAL__LINE;
+
+ /**
+ * The feature id for the '<em><b>Start</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NULL_LITERAL__START = LITERAL__START;
+
+ /**
+ * The feature id for the '<em><b>End</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NULL_LITERAL__END = LITERAL__END;
+
+ /**
+ * The feature id for the '<em><b>File Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NULL_LITERAL__FILE_NAME = LITERAL__FILE_NAME;
+
+ /**
+ * The feature id for the '<em><b>Literal Value</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NULL_LITERAL__LITERAL_VALUE = LITERAL__LITERAL_VALUE;
+
+ /**
+ * The number of structural features of the '<em>Null Literal</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NULL_LITERAL_FEATURE_COUNT = LITERAL_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xpand3.expression.impl.RealLiteralImpl <em>Real Literal</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.expression.impl.RealLiteralImpl
+ * @see org.eclipse.xpand3.expression.impl.ExpressionPackageImpl#getRealLiteral()
+ * @generated
+ */
+ int REAL_LITERAL = 17;
+
+ /**
+ * The feature id for the '<em><b>Line</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REAL_LITERAL__LINE = LITERAL__LINE;
+
+ /**
+ * The feature id for the '<em><b>Start</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REAL_LITERAL__START = LITERAL__START;
+
+ /**
+ * The feature id for the '<em><b>End</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REAL_LITERAL__END = LITERAL__END;
+
+ /**
+ * The feature id for the '<em><b>File Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REAL_LITERAL__FILE_NAME = LITERAL__FILE_NAME;
+
+ /**
+ * The feature id for the '<em><b>Literal Value</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REAL_LITERAL__LITERAL_VALUE = LITERAL__LITERAL_VALUE;
+
+ /**
+ * The number of structural features of the '<em>Real Literal</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REAL_LITERAL_FEATURE_COUNT = LITERAL_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xpand3.expression.impl.StringLiteralImpl <em>String Literal</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.expression.impl.StringLiteralImpl
+ * @see org.eclipse.xpand3.expression.impl.ExpressionPackageImpl#getStringLiteral()
+ * @generated
+ */
+ int STRING_LITERAL = 18;
+
+ /**
+ * The feature id for the '<em><b>Line</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRING_LITERAL__LINE = LITERAL__LINE;
+
+ /**
+ * The feature id for the '<em><b>Start</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRING_LITERAL__START = LITERAL__START;
+
+ /**
+ * The feature id for the '<em><b>End</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRING_LITERAL__END = LITERAL__END;
+
+ /**
+ * The feature id for the '<em><b>File Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRING_LITERAL__FILE_NAME = LITERAL__FILE_NAME;
+
+ /**
+ * The feature id for the '<em><b>Literal Value</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRING_LITERAL__LITERAL_VALUE = LITERAL__LITERAL_VALUE;
+
+ /**
+ * The number of structural features of the '<em>String Literal</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRING_LITERAL_FEATURE_COUNT = LITERAL_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xpand3.expression.impl.SwitchExpressionImpl <em>Switch Expression</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.expression.impl.SwitchExpressionImpl
+ * @see org.eclipse.xpand3.expression.impl.ExpressionPackageImpl#getSwitchExpression()
+ * @generated
+ */
+ int SWITCH_EXPRESSION = 19;
+
+ /**
+ * The feature id for the '<em><b>Line</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SWITCH_EXPRESSION__LINE = ABSTRACT_EXPRESSION__LINE;
+
+ /**
+ * The feature id for the '<em><b>Start</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SWITCH_EXPRESSION__START = ABSTRACT_EXPRESSION__START;
+
+ /**
+ * The feature id for the '<em><b>End</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SWITCH_EXPRESSION__END = ABSTRACT_EXPRESSION__END;
+
+ /**
+ * The feature id for the '<em><b>File Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SWITCH_EXPRESSION__FILE_NAME = ABSTRACT_EXPRESSION__FILE_NAME;
+
+ /**
+ * The feature id for the '<em><b>Switch Expr</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SWITCH_EXPRESSION__SWITCH_EXPR = ABSTRACT_EXPRESSION_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Default Expr</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SWITCH_EXPRESSION__DEFAULT_EXPR = ABSTRACT_EXPRESSION_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Cases</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SWITCH_EXPRESSION__CASES = ABSTRACT_EXPRESSION_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>Switch Expression</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SWITCH_EXPRESSION_FEATURE_COUNT = ABSTRACT_EXPRESSION_FEATURE_COUNT + 3;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xpand3.expression.impl.CaseImpl <em>Case</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.expression.impl.CaseImpl
+ * @see org.eclipse.xpand3.expression.impl.ExpressionPackageImpl#getCase()
+ * @generated
+ */
+ int CASE = 20;
+
+ /**
+ * The feature id for the '<em><b>Line</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CASE__LINE = Xpand3Package.SYNTAX_ELEMENT__LINE;
+
+ /**
+ * The feature id for the '<em><b>Start</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CASE__START = Xpand3Package.SYNTAX_ELEMENT__START;
+
+ /**
+ * The feature id for the '<em><b>End</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CASE__END = Xpand3Package.SYNTAX_ELEMENT__END;
+
+ /**
+ * The feature id for the '<em><b>File Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CASE__FILE_NAME = Xpand3Package.SYNTAX_ELEMENT__FILE_NAME;
+
+ /**
+ * The feature id for the '<em><b>Condition</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CASE__CONDITION = Xpand3Package.SYNTAX_ELEMENT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Then Part</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CASE__THEN_PART = Xpand3Package.SYNTAX_ELEMENT_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Case</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CASE_FEATURE_COUNT = Xpand3Package.SYNTAX_ELEMENT_FEATURE_COUNT + 2;
+
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xpand3.expression.AbstractExpression <em>Abstract Expression</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Abstract Expression</em>'.
+ * @see org.eclipse.xpand3.expression.AbstractExpression
+ * @generated
+ */
+ EClass getAbstractExpression();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xpand3.expression.BooleanOperation <em>Boolean Operation</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Boolean Operation</em>'.
+ * @see org.eclipse.xpand3.expression.BooleanOperation
+ * @generated
+ */
+ EClass getBooleanOperation();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.xpand3.expression.BooleanOperation#getLeft <em>Left</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Left</em>'.
+ * @see org.eclipse.xpand3.expression.BooleanOperation#getLeft()
+ * @see #getBooleanOperation()
+ * @generated
+ */
+ EReference getBooleanOperation_Left();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.xpand3.expression.BooleanOperation#getRight <em>Right</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Right</em>'.
+ * @see org.eclipse.xpand3.expression.BooleanOperation#getRight()
+ * @see #getBooleanOperation()
+ * @generated
+ */
+ EReference getBooleanOperation_Right();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.xpand3.expression.BooleanOperation#getOperator <em>Operator</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Operator</em>'.
+ * @see org.eclipse.xpand3.expression.BooleanOperation#getOperator()
+ * @see #getBooleanOperation()
+ * @generated
+ */
+ EReference getBooleanOperation_Operator();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xpand3.expression.Cast <em>Cast</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Cast</em>'.
+ * @see org.eclipse.xpand3.expression.Cast
+ * @generated
+ */
+ EClass getCast();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.xpand3.expression.Cast#getType <em>Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Type</em>'.
+ * @see org.eclipse.xpand3.expression.Cast#getType()
+ * @see #getCast()
+ * @generated
+ */
+ EReference getCast_Type();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.xpand3.expression.Cast#getTarget <em>Target</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Target</em>'.
+ * @see org.eclipse.xpand3.expression.Cast#getTarget()
+ * @see #getCast()
+ * @generated
+ */
+ EReference getCast_Target();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xpand3.expression.ChainExpression <em>Chain Expression</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Chain Expression</em>'.
+ * @see org.eclipse.xpand3.expression.ChainExpression
+ * @generated
+ */
+ EClass getChainExpression();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.xpand3.expression.ChainExpression#getFirst <em>First</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>First</em>'.
+ * @see org.eclipse.xpand3.expression.ChainExpression#getFirst()
+ * @see #getChainExpression()
+ * @generated
+ */
+ EReference getChainExpression_First();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.xpand3.expression.ChainExpression#getNext <em>Next</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Next</em>'.
+ * @see org.eclipse.xpand3.expression.ChainExpression#getNext()
+ * @see #getChainExpression()
+ * @generated
+ */
+ EReference getChainExpression_Next();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xpand3.expression.ConstructorCallExpression <em>Constructor Call Expression</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Constructor Call Expression</em>'.
+ * @see org.eclipse.xpand3.expression.ConstructorCallExpression
+ * @generated
+ */
+ EClass getConstructorCallExpression();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.xpand3.expression.ConstructorCallExpression#getType <em>Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Type</em>'.
+ * @see org.eclipse.xpand3.expression.ConstructorCallExpression#getType()
+ * @see #getConstructorCallExpression()
+ * @generated
+ */
+ EReference getConstructorCallExpression_Type();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xpand3.expression.FeatureCall <em>Feature Call</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Feature Call</em>'.
+ * @see org.eclipse.xpand3.expression.FeatureCall
+ * @generated
+ */
+ EClass getFeatureCall();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.xpand3.expression.FeatureCall#getTarget <em>Target</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Target</em>'.
+ * @see org.eclipse.xpand3.expression.FeatureCall#getTarget()
+ * @see #getFeatureCall()
+ * @generated
+ */
+ EReference getFeatureCall_Target();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.xpand3.expression.FeatureCall#getName <em>Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Name</em>'.
+ * @see org.eclipse.xpand3.expression.FeatureCall#getName()
+ * @see #getFeatureCall()
+ * @generated
+ */
+ EReference getFeatureCall_Name();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xpand3.expression.CollectionExpression <em>Collection Expression</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Collection Expression</em>'.
+ * @see org.eclipse.xpand3.expression.CollectionExpression
+ * @generated
+ */
+ EClass getCollectionExpression();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.xpand3.expression.CollectionExpression#getClosure <em>Closure</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Closure</em>'.
+ * @see org.eclipse.xpand3.expression.CollectionExpression#getClosure()
+ * @see #getCollectionExpression()
+ * @generated
+ */
+ EReference getCollectionExpression_Closure();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.xpand3.expression.CollectionExpression#getEleName <em>Ele Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Ele Name</em>'.
+ * @see org.eclipse.xpand3.expression.CollectionExpression#getEleName()
+ * @see #getCollectionExpression()
+ * @generated
+ */
+ EReference getCollectionExpression_EleName();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xpand3.expression.OperationCall <em>Operation Call</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Operation Call</em>'.
+ * @see org.eclipse.xpand3.expression.OperationCall
+ * @generated
+ */
+ EClass getOperationCall();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.xpand3.expression.OperationCall#getParams <em>Params</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Params</em>'.
+ * @see org.eclipse.xpand3.expression.OperationCall#getParams()
+ * @see #getOperationCall()
+ * @generated
+ */
+ EReference getOperationCall_Params();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xpand3.expression.TypeSelectExpression <em>Type Select Expression</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Type Select Expression</em>'.
+ * @see org.eclipse.xpand3.expression.TypeSelectExpression
+ * @generated
+ */
+ EClass getTypeSelectExpression();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.xpand3.expression.TypeSelectExpression#getTypeLiteral <em>Type Literal</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Type Literal</em>'.
+ * @see org.eclipse.xpand3.expression.TypeSelectExpression#getTypeLiteral()
+ * @see #getTypeSelectExpression()
+ * @generated
+ */
+ EReference getTypeSelectExpression_TypeLiteral();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xpand3.expression.GlobalVarExpression <em>Global Var Expression</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Global Var Expression</em>'.
+ * @see org.eclipse.xpand3.expression.GlobalVarExpression
+ * @generated
+ */
+ EClass getGlobalVarExpression();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.xpand3.expression.GlobalVarExpression#getGlobalVarName <em>Global Var Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Global Var Name</em>'.
+ * @see org.eclipse.xpand3.expression.GlobalVarExpression#getGlobalVarName()
+ * @see #getGlobalVarExpression()
+ * @generated
+ */
+ EReference getGlobalVarExpression_GlobalVarName();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xpand3.expression.IfExpression <em>If Expression</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>If Expression</em>'.
+ * @see org.eclipse.xpand3.expression.IfExpression
+ * @generated
+ */
+ EClass getIfExpression();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.xpand3.expression.IfExpression#getCondition <em>Condition</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Condition</em>'.
+ * @see org.eclipse.xpand3.expression.IfExpression#getCondition()
+ * @see #getIfExpression()
+ * @generated
+ */
+ EReference getIfExpression_Condition();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.xpand3.expression.IfExpression#getThenPart <em>Then Part</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Then Part</em>'.
+ * @see org.eclipse.xpand3.expression.IfExpression#getThenPart()
+ * @see #getIfExpression()
+ * @generated
+ */
+ EReference getIfExpression_ThenPart();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.xpand3.expression.IfExpression#getElsePart <em>Else Part</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Else Part</em>'.
+ * @see org.eclipse.xpand3.expression.IfExpression#getElsePart()
+ * @see #getIfExpression()
+ * @generated
+ */
+ EReference getIfExpression_ElsePart();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xpand3.expression.LetExpression <em>Let Expression</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Let Expression</em>'.
+ * @see org.eclipse.xpand3.expression.LetExpression
+ * @generated
+ */
+ EClass getLetExpression();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.xpand3.expression.LetExpression#getVarExpression <em>Var Expression</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Var Expression</em>'.
+ * @see org.eclipse.xpand3.expression.LetExpression#getVarExpression()
+ * @see #getLetExpression()
+ * @generated
+ */
+ EReference getLetExpression_VarExpression();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.xpand3.expression.LetExpression#getTargetExpression <em>Target Expression</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Target Expression</em>'.
+ * @see org.eclipse.xpand3.expression.LetExpression#getTargetExpression()
+ * @see #getLetExpression()
+ * @generated
+ */
+ EReference getLetExpression_TargetExpression();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.xpand3.expression.LetExpression#getVarName <em>Var Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Var Name</em>'.
+ * @see org.eclipse.xpand3.expression.LetExpression#getVarName()
+ * @see #getLetExpression()
+ * @generated
+ */
+ EReference getLetExpression_VarName();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xpand3.expression.ListLiteral <em>List Literal</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>List Literal</em>'.
+ * @see org.eclipse.xpand3.expression.ListLiteral
+ * @generated
+ */
+ EClass getListLiteral();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.xpand3.expression.ListLiteral#getElements <em>Elements</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Elements</em>'.
+ * @see org.eclipse.xpand3.expression.ListLiteral#getElements()
+ * @see #getListLiteral()
+ * @generated
+ */
+ EReference getListLiteral_Elements();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xpand3.expression.Literal <em>Literal</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Literal</em>'.
+ * @see org.eclipse.xpand3.expression.Literal
+ * @generated
+ */
+ EClass getLiteral();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.xpand3.expression.Literal#getLiteralValue <em>Literal Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Literal Value</em>'.
+ * @see org.eclipse.xpand3.expression.Literal#getLiteralValue()
+ * @see #getLiteral()
+ * @generated
+ */
+ EReference getLiteral_LiteralValue();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xpand3.expression.BooleanLiteral <em>Boolean Literal</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Boolean Literal</em>'.
+ * @see org.eclipse.xpand3.expression.BooleanLiteral
+ * @generated
+ */
+ EClass getBooleanLiteral();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xpand3.expression.IntegerLiteral <em>Integer Literal</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Integer Literal</em>'.
+ * @see org.eclipse.xpand3.expression.IntegerLiteral
+ * @generated
+ */
+ EClass getIntegerLiteral();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xpand3.expression.NullLiteral <em>Null Literal</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Null Literal</em>'.
+ * @see org.eclipse.xpand3.expression.NullLiteral
+ * @generated
+ */
+ EClass getNullLiteral();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xpand3.expression.RealLiteral <em>Real Literal</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Real Literal</em>'.
+ * @see org.eclipse.xpand3.expression.RealLiteral
+ * @generated
+ */
+ EClass getRealLiteral();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xpand3.expression.StringLiteral <em>String Literal</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>String Literal</em>'.
+ * @see org.eclipse.xpand3.expression.StringLiteral
+ * @generated
+ */
+ EClass getStringLiteral();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xpand3.expression.SwitchExpression <em>Switch Expression</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Switch Expression</em>'.
+ * @see org.eclipse.xpand3.expression.SwitchExpression
+ * @generated
+ */
+ EClass getSwitchExpression();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.xpand3.expression.SwitchExpression#getSwitchExpr <em>Switch Expr</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Switch Expr</em>'.
+ * @see org.eclipse.xpand3.expression.SwitchExpression#getSwitchExpr()
+ * @see #getSwitchExpression()
+ * @generated
+ */
+ EReference getSwitchExpression_SwitchExpr();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.xpand3.expression.SwitchExpression#getDefaultExpr <em>Default Expr</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Default Expr</em>'.
+ * @see org.eclipse.xpand3.expression.SwitchExpression#getDefaultExpr()
+ * @see #getSwitchExpression()
+ * @generated
+ */
+ EReference getSwitchExpression_DefaultExpr();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.xpand3.expression.SwitchExpression#getCases <em>Cases</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Cases</em>'.
+ * @see org.eclipse.xpand3.expression.SwitchExpression#getCases()
+ * @see #getSwitchExpression()
+ * @generated
+ */
+ EReference getSwitchExpression_Cases();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xpand3.expression.Case <em>Case</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Case</em>'.
+ * @see org.eclipse.xpand3.expression.Case
+ * @generated
+ */
+ EClass getCase();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.xpand3.expression.Case#getCondition <em>Condition</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Condition</em>'.
+ * @see org.eclipse.xpand3.expression.Case#getCondition()
+ * @see #getCase()
+ * @generated
+ */
+ EReference getCase_Condition();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.xpand3.expression.Case#getThenPart <em>Then Part</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Then Part</em>'.
+ * @see org.eclipse.xpand3.expression.Case#getThenPart()
+ * @see #getCase()
+ * @generated
+ */
+ EReference getCase_ThenPart();
+
+ /**
+ * 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
+ */
+ ExpressionFactory getExpressionFactory();
+
+ /**
+ * <!-- 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.xpand3.expression.impl.AbstractExpressionImpl <em>Abstract Expression</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.expression.impl.AbstractExpressionImpl
+ * @see org.eclipse.xpand3.expression.impl.ExpressionPackageImpl#getAbstractExpression()
+ * @generated
+ */
+ EClass ABSTRACT_EXPRESSION = eINSTANCE.getAbstractExpression();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xpand3.expression.impl.BooleanOperationImpl <em>Boolean Operation</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.expression.impl.BooleanOperationImpl
+ * @see org.eclipse.xpand3.expression.impl.ExpressionPackageImpl#getBooleanOperation()
+ * @generated
+ */
+ EClass BOOLEAN_OPERATION = eINSTANCE.getBooleanOperation();
+
+ /**
+ * The meta object literal for the '<em><b>Left</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference BOOLEAN_OPERATION__LEFT = eINSTANCE.getBooleanOperation_Left();
+
+ /**
+ * The meta object literal for the '<em><b>Right</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference BOOLEAN_OPERATION__RIGHT = eINSTANCE.getBooleanOperation_Right();
+
+ /**
+ * The meta object literal for the '<em><b>Operator</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference BOOLEAN_OPERATION__OPERATOR = eINSTANCE.getBooleanOperation_Operator();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xpand3.expression.impl.CastImpl <em>Cast</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.expression.impl.CastImpl
+ * @see org.eclipse.xpand3.expression.impl.ExpressionPackageImpl#getCast()
+ * @generated
+ */
+ EClass CAST = eINSTANCE.getCast();
+
+ /**
+ * The meta object literal for the '<em><b>Type</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference CAST__TYPE = eINSTANCE.getCast_Type();
+
+ /**
+ * The meta object literal for the '<em><b>Target</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference CAST__TARGET = eINSTANCE.getCast_Target();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xpand3.expression.impl.ChainExpressionImpl <em>Chain Expression</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.expression.impl.ChainExpressionImpl
+ * @see org.eclipse.xpand3.expression.impl.ExpressionPackageImpl#getChainExpression()
+ * @generated
+ */
+ EClass CHAIN_EXPRESSION = eINSTANCE.getChainExpression();
+
+ /**
+ * The meta object literal for the '<em><b>First</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference CHAIN_EXPRESSION__FIRST = eINSTANCE.getChainExpression_First();
+
+ /**
+ * The meta object literal for the '<em><b>Next</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference CHAIN_EXPRESSION__NEXT = eINSTANCE.getChainExpression_Next();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xpand3.expression.impl.ConstructorCallExpressionImpl <em>Constructor Call Expression</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.expression.impl.ConstructorCallExpressionImpl
+ * @see org.eclipse.xpand3.expression.impl.ExpressionPackageImpl#getConstructorCallExpression()
+ * @generated
+ */
+ EClass CONSTRUCTOR_CALL_EXPRESSION = eINSTANCE.getConstructorCallExpression();
+
+ /**
+ * The meta object literal for the '<em><b>Type</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference CONSTRUCTOR_CALL_EXPRESSION__TYPE = eINSTANCE.getConstructorCallExpression_Type();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xpand3.expression.impl.FeatureCallImpl <em>Feature Call</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.expression.impl.FeatureCallImpl
+ * @see org.eclipse.xpand3.expression.impl.ExpressionPackageImpl#getFeatureCall()
+ * @generated
+ */
+ EClass FEATURE_CALL = eINSTANCE.getFeatureCall();
+
+ /**
+ * The meta object literal for the '<em><b>Target</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference FEATURE_CALL__TARGET = eINSTANCE.getFeatureCall_Target();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference FEATURE_CALL__NAME = eINSTANCE.getFeatureCall_Name();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xpand3.expression.impl.CollectionExpressionImpl <em>Collection Expression</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.expression.impl.CollectionExpressionImpl
+ * @see org.eclipse.xpand3.expression.impl.ExpressionPackageImpl#getCollectionExpression()
+ * @generated
+ */
+ EClass COLLECTION_EXPRESSION = eINSTANCE.getCollectionExpression();
+
+ /**
+ * The meta object literal for the '<em><b>Closure</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference COLLECTION_EXPRESSION__CLOSURE = eINSTANCE.getCollectionExpression_Closure();
+
+ /**
+ * The meta object literal for the '<em><b>Ele Name</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference COLLECTION_EXPRESSION__ELE_NAME = eINSTANCE.getCollectionExpression_EleName();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xpand3.expression.impl.OperationCallImpl <em>Operation Call</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.expression.impl.OperationCallImpl
+ * @see org.eclipse.xpand3.expression.impl.ExpressionPackageImpl#getOperationCall()
+ * @generated
+ */
+ EClass OPERATION_CALL = eINSTANCE.getOperationCall();
+
+ /**
+ * The meta object literal for the '<em><b>Params</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference OPERATION_CALL__PARAMS = eINSTANCE.getOperationCall_Params();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xpand3.expression.impl.TypeSelectExpressionImpl <em>Type Select Expression</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.expression.impl.TypeSelectExpressionImpl
+ * @see org.eclipse.xpand3.expression.impl.ExpressionPackageImpl#getTypeSelectExpression()
+ * @generated
+ */
+ EClass TYPE_SELECT_EXPRESSION = eINSTANCE.getTypeSelectExpression();
+
+ /**
+ * The meta object literal for the '<em><b>Type Literal</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference TYPE_SELECT_EXPRESSION__TYPE_LITERAL = eINSTANCE.getTypeSelectExpression_TypeLiteral();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xpand3.expression.impl.GlobalVarExpressionImpl <em>Global Var Expression</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.expression.impl.GlobalVarExpressionImpl
+ * @see org.eclipse.xpand3.expression.impl.ExpressionPackageImpl#getGlobalVarExpression()
+ * @generated
+ */
+ EClass GLOBAL_VAR_EXPRESSION = eINSTANCE.getGlobalVarExpression();
+
+ /**
+ * The meta object literal for the '<em><b>Global Var Name</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference GLOBAL_VAR_EXPRESSION__GLOBAL_VAR_NAME = eINSTANCE.getGlobalVarExpression_GlobalVarName();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xpand3.expression.impl.IfExpressionImpl <em>If Expression</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.expression.impl.IfExpressionImpl
+ * @see org.eclipse.xpand3.expression.impl.ExpressionPackageImpl#getIfExpression()
+ * @generated
+ */
+ EClass IF_EXPRESSION = eINSTANCE.getIfExpression();
+
+ /**
+ * The meta object literal for the '<em><b>Condition</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference IF_EXPRESSION__CONDITION = eINSTANCE.getIfExpression_Condition();
+
+ /**
+ * The meta object literal for the '<em><b>Then Part</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference IF_EXPRESSION__THEN_PART = eINSTANCE.getIfExpression_ThenPart();
+
+ /**
+ * The meta object literal for the '<em><b>Else Part</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference IF_EXPRESSION__ELSE_PART = eINSTANCE.getIfExpression_ElsePart();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xpand3.expression.impl.LetExpressionImpl <em>Let Expression</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.expression.impl.LetExpressionImpl
+ * @see org.eclipse.xpand3.expression.impl.ExpressionPackageImpl#getLetExpression()
+ * @generated
+ */
+ EClass LET_EXPRESSION = eINSTANCE.getLetExpression();
+
+ /**
+ * The meta object literal for the '<em><b>Var Expression</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference LET_EXPRESSION__VAR_EXPRESSION = eINSTANCE.getLetExpression_VarExpression();
+
+ /**
+ * The meta object literal for the '<em><b>Target Expression</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference LET_EXPRESSION__TARGET_EXPRESSION = eINSTANCE.getLetExpression_TargetExpression();
+
+ /**
+ * The meta object literal for the '<em><b>Var Name</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference LET_EXPRESSION__VAR_NAME = eINSTANCE.getLetExpression_VarName();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xpand3.expression.impl.ListLiteralImpl <em>List Literal</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.expression.impl.ListLiteralImpl
+ * @see org.eclipse.xpand3.expression.impl.ExpressionPackageImpl#getListLiteral()
+ * @generated
+ */
+ EClass LIST_LITERAL = eINSTANCE.getListLiteral();
+
+ /**
+ * The meta object literal for the '<em><b>Elements</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference LIST_LITERAL__ELEMENTS = eINSTANCE.getListLiteral_Elements();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xpand3.expression.impl.LiteralImpl <em>Literal</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.expression.impl.LiteralImpl
+ * @see org.eclipse.xpand3.expression.impl.ExpressionPackageImpl#getLiteral()
+ * @generated
+ */
+ EClass LITERAL = eINSTANCE.getLiteral();
+
+ /**
+ * The meta object literal for the '<em><b>Literal Value</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference LITERAL__LITERAL_VALUE = eINSTANCE.getLiteral_LiteralValue();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xpand3.expression.impl.BooleanLiteralImpl <em>Boolean Literal</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.expression.impl.BooleanLiteralImpl
+ * @see org.eclipse.xpand3.expression.impl.ExpressionPackageImpl#getBooleanLiteral()
+ * @generated
+ */
+ EClass BOOLEAN_LITERAL = eINSTANCE.getBooleanLiteral();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xpand3.expression.impl.IntegerLiteralImpl <em>Integer Literal</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.expression.impl.IntegerLiteralImpl
+ * @see org.eclipse.xpand3.expression.impl.ExpressionPackageImpl#getIntegerLiteral()
+ * @generated
+ */
+ EClass INTEGER_LITERAL = eINSTANCE.getIntegerLiteral();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xpand3.expression.impl.NullLiteralImpl <em>Null Literal</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.expression.impl.NullLiteralImpl
+ * @see org.eclipse.xpand3.expression.impl.ExpressionPackageImpl#getNullLiteral()
+ * @generated
+ */
+ EClass NULL_LITERAL = eINSTANCE.getNullLiteral();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xpand3.expression.impl.RealLiteralImpl <em>Real Literal</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.expression.impl.RealLiteralImpl
+ * @see org.eclipse.xpand3.expression.impl.ExpressionPackageImpl#getRealLiteral()
+ * @generated
+ */
+ EClass REAL_LITERAL = eINSTANCE.getRealLiteral();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xpand3.expression.impl.StringLiteralImpl <em>String Literal</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.expression.impl.StringLiteralImpl
+ * @see org.eclipse.xpand3.expression.impl.ExpressionPackageImpl#getStringLiteral()
+ * @generated
+ */
+ EClass STRING_LITERAL = eINSTANCE.getStringLiteral();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xpand3.expression.impl.SwitchExpressionImpl <em>Switch Expression</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.expression.impl.SwitchExpressionImpl
+ * @see org.eclipse.xpand3.expression.impl.ExpressionPackageImpl#getSwitchExpression()
+ * @generated
+ */
+ EClass SWITCH_EXPRESSION = eINSTANCE.getSwitchExpression();
+
+ /**
+ * The meta object literal for the '<em><b>Switch Expr</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference SWITCH_EXPRESSION__SWITCH_EXPR = eINSTANCE.getSwitchExpression_SwitchExpr();
+
+ /**
+ * The meta object literal for the '<em><b>Default Expr</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference SWITCH_EXPRESSION__DEFAULT_EXPR = eINSTANCE.getSwitchExpression_DefaultExpr();
+
+ /**
+ * The meta object literal for the '<em><b>Cases</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference SWITCH_EXPRESSION__CASES = eINSTANCE.getSwitchExpression_Cases();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xpand3.expression.impl.CaseImpl <em>Case</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.expression.impl.CaseImpl
+ * @see org.eclipse.xpand3.expression.impl.ExpressionPackageImpl#getCase()
+ * @generated
+ */
+ EClass CASE = eINSTANCE.getCase();
+
+ /**
+ * The meta object literal for the '<em><b>Condition</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference CASE__CONDITION = eINSTANCE.getCase_Condition();
+
+ /**
+ * The meta object literal for the '<em><b>Then Part</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference CASE__THEN_PART = eINSTANCE.getCase_ThenPart();
+
+ }
+
+} //ExpressionPackage
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/FeatureCall.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/FeatureCall.java
new file mode 100644
index 0000000..e29b939
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/FeatureCall.java
@@ -0,0 +1,81 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: FeatureCall.java,v 1.1 2008/02/27 13:21:06 sefftinge Exp $
+ */
+package org.eclipse.xpand3.expression;
+
+import org.eclipse.xpand3.Identifier;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Feature Call</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.xpand3.expression.FeatureCall#getTarget <em>Target</em>}</li>
+ * <li>{@link org.eclipse.xpand3.expression.FeatureCall#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.xpand3.expression.ExpressionPackage#getFeatureCall()
+ * @model
+ * @generated
+ */
+public interface FeatureCall extends AbstractExpression {
+ /**
+ * Returns the value of the '<em><b>Target</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Target</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>Target</em>' containment reference.
+ * @see #setTarget(AbstractExpression)
+ * @see org.eclipse.xpand3.expression.ExpressionPackage#getFeatureCall_Target()
+ * @model containment="true"
+ * @generated
+ */
+ AbstractExpression getTarget();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xpand3.expression.FeatureCall#getTarget <em>Target</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Target</em>' containment reference.
+ * @see #getTarget()
+ * @generated
+ */
+ void setTarget(AbstractExpression value);
+
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</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>Name</em>' containment reference.
+ * @see #setName(Identifier)
+ * @see org.eclipse.xpand3.expression.ExpressionPackage#getFeatureCall_Name()
+ * @model containment="true"
+ * @generated
+ */
+ Identifier getName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xpand3.expression.FeatureCall#getName <em>Name</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Name</em>' containment reference.
+ * @see #getName()
+ * @generated
+ */
+ void setName(Identifier value);
+
+} // FeatureCall
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/GlobalVarExpression.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/GlobalVarExpression.java
new file mode 100644
index 0000000..4024f77
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/GlobalVarExpression.java
@@ -0,0 +1,54 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: GlobalVarExpression.java,v 1.1 2008/02/27 13:21:06 sefftinge Exp $
+ */
+package org.eclipse.xpand3.expression;
+
+import org.eclipse.xpand3.Identifier;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Global Var Expression</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.xpand3.expression.GlobalVarExpression#getGlobalVarName <em>Global Var Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.xpand3.expression.ExpressionPackage#getGlobalVarExpression()
+ * @model
+ * @generated
+ */
+public interface GlobalVarExpression extends AbstractExpression {
+ /**
+ * Returns the value of the '<em><b>Global Var Name</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Global Var Name</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>Global Var Name</em>' containment reference.
+ * @see #setGlobalVarName(Identifier)
+ * @see org.eclipse.xpand3.expression.ExpressionPackage#getGlobalVarExpression_GlobalVarName()
+ * @model containment="true"
+ * @generated
+ */
+ Identifier getGlobalVarName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xpand3.expression.GlobalVarExpression#getGlobalVarName <em>Global Var Name</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Global Var Name</em>' containment reference.
+ * @see #getGlobalVarName()
+ * @generated
+ */
+ void setGlobalVarName(Identifier value);
+
+} // GlobalVarExpression
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/IfExpression.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/IfExpression.java
new file mode 100644
index 0000000..bfaa20c
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/IfExpression.java
@@ -0,0 +1,107 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: IfExpression.java,v 1.1 2008/02/27 13:21:07 sefftinge Exp $
+ */
+package org.eclipse.xpand3.expression;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>If Expression</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.xpand3.expression.IfExpression#getCondition <em>Condition</em>}</li>
+ * <li>{@link org.eclipse.xpand3.expression.IfExpression#getThenPart <em>Then Part</em>}</li>
+ * <li>{@link org.eclipse.xpand3.expression.IfExpression#getElsePart <em>Else Part</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.xpand3.expression.ExpressionPackage#getIfExpression()
+ * @model
+ * @generated
+ */
+public interface IfExpression extends AbstractExpression {
+ /**
+ * Returns the value of the '<em><b>Condition</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Condition</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>Condition</em>' containment reference.
+ * @see #setCondition(AbstractExpression)
+ * @see org.eclipse.xpand3.expression.ExpressionPackage#getIfExpression_Condition()
+ * @model containment="true"
+ * @generated
+ */
+ AbstractExpression getCondition();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xpand3.expression.IfExpression#getCondition <em>Condition</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Condition</em>' containment reference.
+ * @see #getCondition()
+ * @generated
+ */
+ void setCondition(AbstractExpression value);
+
+ /**
+ * Returns the value of the '<em><b>Then Part</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Then Part</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>Then Part</em>' containment reference.
+ * @see #setThenPart(AbstractExpression)
+ * @see org.eclipse.xpand3.expression.ExpressionPackage#getIfExpression_ThenPart()
+ * @model containment="true"
+ * @generated
+ */
+ AbstractExpression getThenPart();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xpand3.expression.IfExpression#getThenPart <em>Then Part</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Then Part</em>' containment reference.
+ * @see #getThenPart()
+ * @generated
+ */
+ void setThenPart(AbstractExpression value);
+
+ /**
+ * Returns the value of the '<em><b>Else Part</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Else Part</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 Part</em>' containment reference.
+ * @see #setElsePart(AbstractExpression)
+ * @see org.eclipse.xpand3.expression.ExpressionPackage#getIfExpression_ElsePart()
+ * @model containment="true"
+ * @generated
+ */
+ AbstractExpression getElsePart();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xpand3.expression.IfExpression#getElsePart <em>Else Part</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Else Part</em>' containment reference.
+ * @see #getElsePart()
+ * @generated
+ */
+ void setElsePart(AbstractExpression value);
+
+} // IfExpression
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/IntegerLiteral.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/IntegerLiteral.java
new file mode 100644
index 0000000..ba32392
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/IntegerLiteral.java
@@ -0,0 +1,21 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: IntegerLiteral.java,v 1.1 2008/02/27 13:21:06 sefftinge Exp $
+ */
+package org.eclipse.xpand3.expression;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Integer Literal</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.xpand3.expression.ExpressionPackage#getIntegerLiteral()
+ * @model
+ * @generated
+ */
+public interface IntegerLiteral extends Literal {
+} // IntegerLiteral
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/LetExpression.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/LetExpression.java
new file mode 100644
index 0000000..8f2e1c9
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/LetExpression.java
@@ -0,0 +1,108 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: LetExpression.java,v 1.1 2008/02/27 13:21:06 sefftinge Exp $
+ */
+package org.eclipse.xpand3.expression;
+
+import org.eclipse.xpand3.Identifier;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Let Expression</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.xpand3.expression.LetExpression#getVarExpression <em>Var Expression</em>}</li>
+ * <li>{@link org.eclipse.xpand3.expression.LetExpression#getTargetExpression <em>Target Expression</em>}</li>
+ * <li>{@link org.eclipse.xpand3.expression.LetExpression#getVarName <em>Var Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.xpand3.expression.ExpressionPackage#getLetExpression()
+ * @model
+ * @generated
+ */
+public interface LetExpression extends AbstractExpression {
+ /**
+ * Returns the value of the '<em><b>Var Expression</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Var 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>Var Expression</em>' containment reference.
+ * @see #setVarExpression(AbstractExpression)
+ * @see org.eclipse.xpand3.expression.ExpressionPackage#getLetExpression_VarExpression()
+ * @model containment="true"
+ * @generated
+ */
+ AbstractExpression getVarExpression();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xpand3.expression.LetExpression#getVarExpression <em>Var Expression</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Var Expression</em>' containment reference.
+ * @see #getVarExpression()
+ * @generated
+ */
+ void setVarExpression(AbstractExpression value);
+
+ /**
+ * Returns the value of the '<em><b>Target Expression</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Target 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>Target Expression</em>' containment reference.
+ * @see #setTargetExpression(AbstractExpression)
+ * @see org.eclipse.xpand3.expression.ExpressionPackage#getLetExpression_TargetExpression()
+ * @model containment="true"
+ * @generated
+ */
+ AbstractExpression getTargetExpression();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xpand3.expression.LetExpression#getTargetExpression <em>Target Expression</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Target Expression</em>' containment reference.
+ * @see #getTargetExpression()
+ * @generated
+ */
+ void setTargetExpression(AbstractExpression value);
+
+ /**
+ * Returns the value of the '<em><b>Var Name</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Var Name</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>Var Name</em>' containment reference.
+ * @see #setVarName(Identifier)
+ * @see org.eclipse.xpand3.expression.ExpressionPackage#getLetExpression_VarName()
+ * @model containment="true"
+ * @generated
+ */
+ Identifier getVarName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xpand3.expression.LetExpression#getVarName <em>Var Name</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Var Name</em>' containment reference.
+ * @see #getVarName()
+ * @generated
+ */
+ void setVarName(Identifier value);
+
+} // LetExpression
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/ListLiteral.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/ListLiteral.java
new file mode 100644
index 0000000..2590691
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/ListLiteral.java
@@ -0,0 +1,44 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: ListLiteral.java,v 1.1 2008/02/27 13:21:06 sefftinge Exp $
+ */
+package org.eclipse.xpand3.expression;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>List Literal</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.xpand3.expression.ListLiteral#getElements <em>Elements</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.xpand3.expression.ExpressionPackage#getListLiteral()
+ * @model
+ * @generated
+ */
+public interface ListLiteral extends AbstractExpression {
+ /**
+ * Returns the value of the '<em><b>Elements</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.xpand3.expression.AbstractExpression}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Elements</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>Elements</em>' containment reference list.
+ * @see org.eclipse.xpand3.expression.ExpressionPackage#getListLiteral_Elements()
+ * @model containment="true"
+ * @generated
+ */
+ EList<AbstractExpression> getElements();
+
+} // ListLiteral
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/Literal.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/Literal.java
new file mode 100644
index 0000000..193a1c1
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/Literal.java
@@ -0,0 +1,54 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: Literal.java,v 1.1 2008/02/27 13:21:06 sefftinge Exp $
+ */
+package org.eclipse.xpand3.expression;
+
+import org.eclipse.xpand3.Identifier;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Literal</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.xpand3.expression.Literal#getLiteralValue <em>Literal Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.xpand3.expression.ExpressionPackage#getLiteral()
+ * @model abstract="true"
+ * @generated
+ */
+public interface Literal extends AbstractExpression {
+ /**
+ * Returns the value of the '<em><b>Literal Value</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Literal Value</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>Literal Value</em>' containment reference.
+ * @see #setLiteralValue(Identifier)
+ * @see org.eclipse.xpand3.expression.ExpressionPackage#getLiteral_LiteralValue()
+ * @model containment="true"
+ * @generated
+ */
+ Identifier getLiteralValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xpand3.expression.Literal#getLiteralValue <em>Literal Value</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Literal Value</em>' containment reference.
+ * @see #getLiteralValue()
+ * @generated
+ */
+ void setLiteralValue(Identifier value);
+
+} // Literal
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/NullLiteral.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/NullLiteral.java
new file mode 100644
index 0000000..aa474f0
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/NullLiteral.java
@@ -0,0 +1,21 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: NullLiteral.java,v 1.1 2008/02/27 13:21:07 sefftinge Exp $
+ */
+package org.eclipse.xpand3.expression;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Null Literal</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.xpand3.expression.ExpressionPackage#getNullLiteral()
+ * @model
+ * @generated
+ */
+public interface NullLiteral extends Literal {
+} // NullLiteral
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/OperationCall.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/OperationCall.java
new file mode 100644
index 0000000..8ba7235
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/OperationCall.java
@@ -0,0 +1,44 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: OperationCall.java,v 1.1 2008/02/27 13:21:06 sefftinge Exp $
+ */
+package org.eclipse.xpand3.expression;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Operation Call</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.xpand3.expression.OperationCall#getParams <em>Params</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.xpand3.expression.ExpressionPackage#getOperationCall()
+ * @model
+ * @generated
+ */
+public interface OperationCall extends FeatureCall {
+ /**
+ * Returns the value of the '<em><b>Params</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.xpand3.expression.AbstractExpression}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Params</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>Params</em>' containment reference list.
+ * @see org.eclipse.xpand3.expression.ExpressionPackage#getOperationCall_Params()
+ * @model containment="true"
+ * @generated
+ */
+ EList<AbstractExpression> getParams();
+
+} // OperationCall
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/RealLiteral.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/RealLiteral.java
new file mode 100644
index 0000000..9744a94
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/RealLiteral.java
@@ -0,0 +1,21 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: RealLiteral.java,v 1.1 2008/02/27 13:21:07 sefftinge Exp $
+ */
+package org.eclipse.xpand3.expression;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Real Literal</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.xpand3.expression.ExpressionPackage#getRealLiteral()
+ * @model
+ * @generated
+ */
+public interface RealLiteral extends Literal {
+} // RealLiteral
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/StringLiteral.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/StringLiteral.java
new file mode 100644
index 0000000..1d4366c
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/StringLiteral.java
@@ -0,0 +1,21 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: StringLiteral.java,v 1.1 2008/02/27 13:21:07 sefftinge Exp $
+ */
+package org.eclipse.xpand3.expression;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>String Literal</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.xpand3.expression.ExpressionPackage#getStringLiteral()
+ * @model
+ * @generated
+ */
+public interface StringLiteral extends Literal {
+} // StringLiteral
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/SwitchExpression.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/SwitchExpression.java
new file mode 100644
index 0000000..131ddd0
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/SwitchExpression.java
@@ -0,0 +1,98 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: SwitchExpression.java,v 1.1 2008/02/27 13:21:06 sefftinge Exp $
+ */
+package org.eclipse.xpand3.expression;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Switch Expression</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.xpand3.expression.SwitchExpression#getSwitchExpr <em>Switch Expr</em>}</li>
+ * <li>{@link org.eclipse.xpand3.expression.SwitchExpression#getDefaultExpr <em>Default Expr</em>}</li>
+ * <li>{@link org.eclipse.xpand3.expression.SwitchExpression#getCases <em>Cases</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.xpand3.expression.ExpressionPackage#getSwitchExpression()
+ * @model
+ * @generated
+ */
+public interface SwitchExpression extends AbstractExpression {
+ /**
+ * Returns the value of the '<em><b>Switch Expr</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Switch 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>Switch Expr</em>' containment reference.
+ * @see #setSwitchExpr(AbstractExpression)
+ * @see org.eclipse.xpand3.expression.ExpressionPackage#getSwitchExpression_SwitchExpr()
+ * @model containment="true"
+ * @generated
+ */
+ AbstractExpression getSwitchExpr();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xpand3.expression.SwitchExpression#getSwitchExpr <em>Switch Expr</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Switch Expr</em>' containment reference.
+ * @see #getSwitchExpr()
+ * @generated
+ */
+ void setSwitchExpr(AbstractExpression value);
+
+ /**
+ * Returns the value of the '<em><b>Default Expr</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default 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>Default Expr</em>' containment reference.
+ * @see #setDefaultExpr(AbstractExpression)
+ * @see org.eclipse.xpand3.expression.ExpressionPackage#getSwitchExpression_DefaultExpr()
+ * @model containment="true"
+ * @generated
+ */
+ AbstractExpression getDefaultExpr();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xpand3.expression.SwitchExpression#getDefaultExpr <em>Default Expr</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Default Expr</em>' containment reference.
+ * @see #getDefaultExpr()
+ * @generated
+ */
+ void setDefaultExpr(AbstractExpression value);
+
+ /**
+ * Returns the value of the '<em><b>Cases</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.xpand3.expression.Case}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Cases</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>Cases</em>' containment reference list.
+ * @see org.eclipse.xpand3.expression.ExpressionPackage#getSwitchExpression_Cases()
+ * @model containment="true"
+ * @generated
+ */
+ EList<Case> getCases();
+
+} // SwitchExpression
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/TypeSelectExpression.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/TypeSelectExpression.java
new file mode 100644
index 0000000..a27181a
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/TypeSelectExpression.java
@@ -0,0 +1,54 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: TypeSelectExpression.java,v 1.1 2008/02/27 13:21:07 sefftinge Exp $
+ */
+package org.eclipse.xpand3.expression;
+
+import org.eclipse.xpand3.Identifier;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Type Select Expression</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.xpand3.expression.TypeSelectExpression#getTypeLiteral <em>Type Literal</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.xpand3.expression.ExpressionPackage#getTypeSelectExpression()
+ * @model
+ * @generated
+ */
+public interface TypeSelectExpression extends FeatureCall {
+ /**
+ * Returns the value of the '<em><b>Type Literal</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Type Literal</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>Type Literal</em>' containment reference.
+ * @see #setTypeLiteral(Identifier)
+ * @see org.eclipse.xpand3.expression.ExpressionPackage#getTypeSelectExpression_TypeLiteral()
+ * @model containment="true"
+ * @generated
+ */
+ Identifier getTypeLiteral();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xpand3.expression.TypeSelectExpression#getTypeLiteral <em>Type Literal</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Type Literal</em>' containment reference.
+ * @see #getTypeLiteral()
+ * @generated
+ */
+ void setTypeLiteral(Identifier value);
+
+} // TypeSelectExpression
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/impl/AbstractExpressionImpl.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/impl/AbstractExpressionImpl.java
new file mode 100644
index 0000000..022fe81
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/impl/AbstractExpressionImpl.java
@@ -0,0 +1,45 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: AbstractExpressionImpl.java,v 1.1 2008/02/27 13:21:08 sefftinge Exp $
+ */
+package org.eclipse.xpand3.expression.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.xpand3.expression.AbstractExpression;
+import org.eclipse.xpand3.expression.ExpressionPackage;
+
+import org.eclipse.xpand3.impl.SyntaxElementImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Abstract Expression</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class AbstractExpressionImpl extends SyntaxElementImpl implements AbstractExpression {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected AbstractExpressionImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ExpressionPackage.Literals.ABSTRACT_EXPRESSION;
+ }
+
+} //AbstractExpressionImpl
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/impl/BooleanLiteralImpl.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/impl/BooleanLiteralImpl.java
new file mode 100644
index 0000000..123dc2e
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/impl/BooleanLiteralImpl.java
@@ -0,0 +1,43 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: BooleanLiteralImpl.java,v 1.1 2008/02/27 13:21:08 sefftinge Exp $
+ */
+package org.eclipse.xpand3.expression.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.xpand3.expression.BooleanLiteral;
+import org.eclipse.xpand3.expression.ExpressionPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Boolean Literal</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class BooleanLiteralImpl extends LiteralImpl implements BooleanLiteral {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected BooleanLiteralImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ExpressionPackage.Literals.BOOLEAN_LITERAL;
+ }
+
+} //BooleanLiteralImpl
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/impl/BooleanOperationImpl.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/impl/BooleanOperationImpl.java
new file mode 100644
index 0000000..0ac4cca
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/impl/BooleanOperationImpl.java
@@ -0,0 +1,313 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: BooleanOperationImpl.java,v 1.1 2008/02/27 13:21:08 sefftinge Exp $
+ */
+package org.eclipse.xpand3.expression.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.xpand3.Identifier;
+
+import org.eclipse.xpand3.expression.AbstractExpression;
+import org.eclipse.xpand3.expression.BooleanOperation;
+import org.eclipse.xpand3.expression.ExpressionPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Boolean Operation</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.xpand3.expression.impl.BooleanOperationImpl#getLeft <em>Left</em>}</li>
+ * <li>{@link org.eclipse.xpand3.expression.impl.BooleanOperationImpl#getRight <em>Right</em>}</li>
+ * <li>{@link org.eclipse.xpand3.expression.impl.BooleanOperationImpl#getOperator <em>Operator</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class BooleanOperationImpl extends AbstractExpressionImpl implements BooleanOperation {
+ /**
+ * The cached value of the '{@link #getLeft() <em>Left</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLeft()
+ * @generated
+ * @ordered
+ */
+ protected AbstractExpression left;
+
+ /**
+ * The cached value of the '{@link #getRight() <em>Right</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getRight()
+ * @generated
+ * @ordered
+ */
+ protected AbstractExpression right;
+
+ /**
+ * The cached value of the '{@link #getOperator() <em>Operator</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getOperator()
+ * @generated
+ * @ordered
+ */
+ protected Identifier operator;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected BooleanOperationImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ExpressionPackage.Literals.BOOLEAN_OPERATION;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public AbstractExpression getLeft() {
+ return left;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetLeft(AbstractExpression newLeft, NotificationChain msgs) {
+ AbstractExpression oldLeft = left;
+ left = newLeft;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ExpressionPackage.BOOLEAN_OPERATION__LEFT, oldLeft, newLeft);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setLeft(AbstractExpression newLeft) {
+ if (newLeft != left) {
+ NotificationChain msgs = null;
+ if (left != null)
+ msgs = ((InternalEObject)left).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ExpressionPackage.BOOLEAN_OPERATION__LEFT, null, msgs);
+ if (newLeft != null)
+ msgs = ((InternalEObject)newLeft).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ExpressionPackage.BOOLEAN_OPERATION__LEFT, null, msgs);
+ msgs = basicSetLeft(newLeft, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ExpressionPackage.BOOLEAN_OPERATION__LEFT, newLeft, newLeft));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public AbstractExpression getRight() {
+ return right;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetRight(AbstractExpression newRight, NotificationChain msgs) {
+ AbstractExpression oldRight = right;
+ right = newRight;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ExpressionPackage.BOOLEAN_OPERATION__RIGHT, oldRight, newRight);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setRight(AbstractExpression newRight) {
+ if (newRight != right) {
+ NotificationChain msgs = null;
+ if (right != null)
+ msgs = ((InternalEObject)right).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ExpressionPackage.BOOLEAN_OPERATION__RIGHT, null, msgs);
+ if (newRight != null)
+ msgs = ((InternalEObject)newRight).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ExpressionPackage.BOOLEAN_OPERATION__RIGHT, null, msgs);
+ msgs = basicSetRight(newRight, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ExpressionPackage.BOOLEAN_OPERATION__RIGHT, newRight, newRight));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Identifier getOperator() {
+ return operator;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetOperator(Identifier newOperator, NotificationChain msgs) {
+ Identifier oldOperator = operator;
+ operator = newOperator;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ExpressionPackage.BOOLEAN_OPERATION__OPERATOR, oldOperator, newOperator);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setOperator(Identifier newOperator) {
+ if (newOperator != operator) {
+ NotificationChain msgs = null;
+ if (operator != null)
+ msgs = ((InternalEObject)operator).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ExpressionPackage.BOOLEAN_OPERATION__OPERATOR, null, msgs);
+ if (newOperator != null)
+ msgs = ((InternalEObject)newOperator).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ExpressionPackage.BOOLEAN_OPERATION__OPERATOR, null, msgs);
+ msgs = basicSetOperator(newOperator, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ExpressionPackage.BOOLEAN_OPERATION__OPERATOR, newOperator, newOperator));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case ExpressionPackage.BOOLEAN_OPERATION__LEFT:
+ return basicSetLeft(null, msgs);
+ case ExpressionPackage.BOOLEAN_OPERATION__RIGHT:
+ return basicSetRight(null, msgs);
+ case ExpressionPackage.BOOLEAN_OPERATION__OPERATOR:
+ return basicSetOperator(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 ExpressionPackage.BOOLEAN_OPERATION__LEFT:
+ return getLeft();
+ case ExpressionPackage.BOOLEAN_OPERATION__RIGHT:
+ return getRight();
+ case ExpressionPackage.BOOLEAN_OPERATION__OPERATOR:
+ return getOperator();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case ExpressionPackage.BOOLEAN_OPERATION__LEFT:
+ setLeft((AbstractExpression)newValue);
+ return;
+ case ExpressionPackage.BOOLEAN_OPERATION__RIGHT:
+ setRight((AbstractExpression)newValue);
+ return;
+ case ExpressionPackage.BOOLEAN_OPERATION__OPERATOR:
+ setOperator((Identifier)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case ExpressionPackage.BOOLEAN_OPERATION__LEFT:
+ setLeft((AbstractExpression)null);
+ return;
+ case ExpressionPackage.BOOLEAN_OPERATION__RIGHT:
+ setRight((AbstractExpression)null);
+ return;
+ case ExpressionPackage.BOOLEAN_OPERATION__OPERATOR:
+ setOperator((Identifier)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case ExpressionPackage.BOOLEAN_OPERATION__LEFT:
+ return left != null;
+ case ExpressionPackage.BOOLEAN_OPERATION__RIGHT:
+ return right != null;
+ case ExpressionPackage.BOOLEAN_OPERATION__OPERATOR:
+ return operator != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //BooleanOperationImpl
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/impl/CaseImpl.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/impl/CaseImpl.java
new file mode 100644
index 0000000..56075c0
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/impl/CaseImpl.java
@@ -0,0 +1,247 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: CaseImpl.java,v 1.1 2008/02/27 13:21:08 sefftinge Exp $
+ */
+package org.eclipse.xpand3.expression.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.xpand3.expression.AbstractExpression;
+import org.eclipse.xpand3.expression.Case;
+import org.eclipse.xpand3.expression.ExpressionPackage;
+
+import org.eclipse.xpand3.impl.SyntaxElementImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Case</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.xpand3.expression.impl.CaseImpl#getCondition <em>Condition</em>}</li>
+ * <li>{@link org.eclipse.xpand3.expression.impl.CaseImpl#getThenPart <em>Then Part</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class CaseImpl extends SyntaxElementImpl implements Case {
+ /**
+ * The cached value of the '{@link #getCondition() <em>Condition</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getCondition()
+ * @generated
+ * @ordered
+ */
+ protected AbstractExpression condition;
+
+ /**
+ * The cached value of the '{@link #getThenPart() <em>Then Part</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getThenPart()
+ * @generated
+ * @ordered
+ */
+ protected AbstractExpression thenPart;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected CaseImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ExpressionPackage.Literals.CASE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public AbstractExpression getCondition() {
+ return condition;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetCondition(AbstractExpression newCondition, NotificationChain msgs) {
+ AbstractExpression oldCondition = condition;
+ condition = newCondition;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ExpressionPackage.CASE__CONDITION, oldCondition, newCondition);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setCondition(AbstractExpression newCondition) {
+ if (newCondition != condition) {
+ NotificationChain msgs = null;
+ if (condition != null)
+ msgs = ((InternalEObject)condition).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ExpressionPackage.CASE__CONDITION, null, msgs);
+ if (newCondition != null)
+ msgs = ((InternalEObject)newCondition).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ExpressionPackage.CASE__CONDITION, null, msgs);
+ msgs = basicSetCondition(newCondition, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ExpressionPackage.CASE__CONDITION, newCondition, newCondition));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public AbstractExpression getThenPart() {
+ return thenPart;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetThenPart(AbstractExpression newThenPart, NotificationChain msgs) {
+ AbstractExpression oldThenPart = thenPart;
+ thenPart = newThenPart;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ExpressionPackage.CASE__THEN_PART, oldThenPart, newThenPart);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setThenPart(AbstractExpression newThenPart) {
+ if (newThenPart != thenPart) {
+ NotificationChain msgs = null;
+ if (thenPart != null)
+ msgs = ((InternalEObject)thenPart).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ExpressionPackage.CASE__THEN_PART, null, msgs);
+ if (newThenPart != null)
+ msgs = ((InternalEObject)newThenPart).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ExpressionPackage.CASE__THEN_PART, null, msgs);
+ msgs = basicSetThenPart(newThenPart, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ExpressionPackage.CASE__THEN_PART, newThenPart, newThenPart));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case ExpressionPackage.CASE__CONDITION:
+ return basicSetCondition(null, msgs);
+ case ExpressionPackage.CASE__THEN_PART:
+ return basicSetThenPart(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 ExpressionPackage.CASE__CONDITION:
+ return getCondition();
+ case ExpressionPackage.CASE__THEN_PART:
+ return getThenPart();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case ExpressionPackage.CASE__CONDITION:
+ setCondition((AbstractExpression)newValue);
+ return;
+ case ExpressionPackage.CASE__THEN_PART:
+ setThenPart((AbstractExpression)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case ExpressionPackage.CASE__CONDITION:
+ setCondition((AbstractExpression)null);
+ return;
+ case ExpressionPackage.CASE__THEN_PART:
+ setThenPart((AbstractExpression)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case ExpressionPackage.CASE__CONDITION:
+ return condition != null;
+ case ExpressionPackage.CASE__THEN_PART:
+ return thenPart != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //CaseImpl
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/impl/CastImpl.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/impl/CastImpl.java
new file mode 100644
index 0000000..62a0f9d
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/impl/CastImpl.java
@@ -0,0 +1,247 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: CastImpl.java,v 1.1 2008/02/27 13:21:08 sefftinge Exp $
+ */
+package org.eclipse.xpand3.expression.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.xpand3.Identifier;
+
+import org.eclipse.xpand3.expression.AbstractExpression;
+import org.eclipse.xpand3.expression.Cast;
+import org.eclipse.xpand3.expression.ExpressionPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Cast</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.xpand3.expression.impl.CastImpl#getType <em>Type</em>}</li>
+ * <li>{@link org.eclipse.xpand3.expression.impl.CastImpl#getTarget <em>Target</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class CastImpl extends AbstractExpressionImpl implements Cast {
+ /**
+ * The cached value of the '{@link #getType() <em>Type</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getType()
+ * @generated
+ * @ordered
+ */
+ protected Identifier type;
+
+ /**
+ * The cached value of the '{@link #getTarget() <em>Target</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTarget()
+ * @generated
+ * @ordered
+ */
+ protected AbstractExpression target;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected CastImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ExpressionPackage.Literals.CAST;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Identifier getType() {
+ return type;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetType(Identifier newType, NotificationChain msgs) {
+ Identifier oldType = type;
+ type = newType;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ExpressionPackage.CAST__TYPE, oldType, newType);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setType(Identifier newType) {
+ if (newType != type) {
+ NotificationChain msgs = null;
+ if (type != null)
+ msgs = ((InternalEObject)type).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ExpressionPackage.CAST__TYPE, null, msgs);
+ if (newType != null)
+ msgs = ((InternalEObject)newType).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ExpressionPackage.CAST__TYPE, null, msgs);
+ msgs = basicSetType(newType, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ExpressionPackage.CAST__TYPE, newType, newType));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public AbstractExpression getTarget() {
+ return target;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetTarget(AbstractExpression newTarget, NotificationChain msgs) {
+ AbstractExpression oldTarget = target;
+ target = newTarget;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ExpressionPackage.CAST__TARGET, oldTarget, newTarget);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setTarget(AbstractExpression newTarget) {
+ if (newTarget != target) {
+ NotificationChain msgs = null;
+ if (target != null)
+ msgs = ((InternalEObject)target).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ExpressionPackage.CAST__TARGET, null, msgs);
+ if (newTarget != null)
+ msgs = ((InternalEObject)newTarget).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ExpressionPackage.CAST__TARGET, null, msgs);
+ msgs = basicSetTarget(newTarget, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ExpressionPackage.CAST__TARGET, newTarget, newTarget));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case ExpressionPackage.CAST__TYPE:
+ return basicSetType(null, msgs);
+ case ExpressionPackage.CAST__TARGET:
+ return basicSetTarget(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 ExpressionPackage.CAST__TYPE:
+ return getType();
+ case ExpressionPackage.CAST__TARGET:
+ return getTarget();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case ExpressionPackage.CAST__TYPE:
+ setType((Identifier)newValue);
+ return;
+ case ExpressionPackage.CAST__TARGET:
+ setTarget((AbstractExpression)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case ExpressionPackage.CAST__TYPE:
+ setType((Identifier)null);
+ return;
+ case ExpressionPackage.CAST__TARGET:
+ setTarget((AbstractExpression)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case ExpressionPackage.CAST__TYPE:
+ return type != null;
+ case ExpressionPackage.CAST__TARGET:
+ return target != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //CastImpl
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/impl/ChainExpressionImpl.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/impl/ChainExpressionImpl.java
new file mode 100644
index 0000000..03b5c1f
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/impl/ChainExpressionImpl.java
@@ -0,0 +1,245 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: ChainExpressionImpl.java,v 1.1 2008/02/27 13:21:08 sefftinge Exp $
+ */
+package org.eclipse.xpand3.expression.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.xpand3.expression.AbstractExpression;
+import org.eclipse.xpand3.expression.ChainExpression;
+import org.eclipse.xpand3.expression.ExpressionPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Chain Expression</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.xpand3.expression.impl.ChainExpressionImpl#getFirst <em>First</em>}</li>
+ * <li>{@link org.eclipse.xpand3.expression.impl.ChainExpressionImpl#getNext <em>Next</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ChainExpressionImpl extends AbstractExpressionImpl implements ChainExpression {
+ /**
+ * The cached value of the '{@link #getFirst() <em>First</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getFirst()
+ * @generated
+ * @ordered
+ */
+ protected AbstractExpression first;
+
+ /**
+ * The cached value of the '{@link #getNext() <em>Next</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getNext()
+ * @generated
+ * @ordered
+ */
+ protected AbstractExpression next;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ChainExpressionImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ExpressionPackage.Literals.CHAIN_EXPRESSION;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public AbstractExpression getFirst() {
+ return first;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetFirst(AbstractExpression newFirst, NotificationChain msgs) {
+ AbstractExpression oldFirst = first;
+ first = newFirst;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ExpressionPackage.CHAIN_EXPRESSION__FIRST, oldFirst, newFirst);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setFirst(AbstractExpression newFirst) {
+ if (newFirst != first) {
+ NotificationChain msgs = null;
+ if (first != null)
+ msgs = ((InternalEObject)first).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ExpressionPackage.CHAIN_EXPRESSION__FIRST, null, msgs);
+ if (newFirst != null)
+ msgs = ((InternalEObject)newFirst).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ExpressionPackage.CHAIN_EXPRESSION__FIRST, null, msgs);
+ msgs = basicSetFirst(newFirst, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ExpressionPackage.CHAIN_EXPRESSION__FIRST, newFirst, newFirst));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public AbstractExpression getNext() {
+ return next;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetNext(AbstractExpression newNext, NotificationChain msgs) {
+ AbstractExpression oldNext = next;
+ next = newNext;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ExpressionPackage.CHAIN_EXPRESSION__NEXT, oldNext, newNext);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setNext(AbstractExpression newNext) {
+ if (newNext != next) {
+ NotificationChain msgs = null;
+ if (next != null)
+ msgs = ((InternalEObject)next).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ExpressionPackage.CHAIN_EXPRESSION__NEXT, null, msgs);
+ if (newNext != null)
+ msgs = ((InternalEObject)newNext).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ExpressionPackage.CHAIN_EXPRESSION__NEXT, null, msgs);
+ msgs = basicSetNext(newNext, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ExpressionPackage.CHAIN_EXPRESSION__NEXT, newNext, newNext));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case ExpressionPackage.CHAIN_EXPRESSION__FIRST:
+ return basicSetFirst(null, msgs);
+ case ExpressionPackage.CHAIN_EXPRESSION__NEXT:
+ return basicSetNext(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 ExpressionPackage.CHAIN_EXPRESSION__FIRST:
+ return getFirst();
+ case ExpressionPackage.CHAIN_EXPRESSION__NEXT:
+ return getNext();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case ExpressionPackage.CHAIN_EXPRESSION__FIRST:
+ setFirst((AbstractExpression)newValue);
+ return;
+ case ExpressionPackage.CHAIN_EXPRESSION__NEXT:
+ setNext((AbstractExpression)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case ExpressionPackage.CHAIN_EXPRESSION__FIRST:
+ setFirst((AbstractExpression)null);
+ return;
+ case ExpressionPackage.CHAIN_EXPRESSION__NEXT:
+ setNext((AbstractExpression)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case ExpressionPackage.CHAIN_EXPRESSION__FIRST:
+ return first != null;
+ case ExpressionPackage.CHAIN_EXPRESSION__NEXT:
+ return next != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //ChainExpressionImpl
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/impl/CollectionExpressionImpl.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/impl/CollectionExpressionImpl.java
new file mode 100644
index 0000000..f6b119d
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/impl/CollectionExpressionImpl.java
@@ -0,0 +1,247 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: CollectionExpressionImpl.java,v 1.1 2008/02/27 13:21:08 sefftinge Exp $
+ */
+package org.eclipse.xpand3.expression.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.xpand3.Identifier;
+
+import org.eclipse.xpand3.expression.AbstractExpression;
+import org.eclipse.xpand3.expression.CollectionExpression;
+import org.eclipse.xpand3.expression.ExpressionPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Collection Expression</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.xpand3.expression.impl.CollectionExpressionImpl#getClosure <em>Closure</em>}</li>
+ * <li>{@link org.eclipse.xpand3.expression.impl.CollectionExpressionImpl#getEleName <em>Ele Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class CollectionExpressionImpl extends FeatureCallImpl implements CollectionExpression {
+ /**
+ * The cached value of the '{@link #getClosure() <em>Closure</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getClosure()
+ * @generated
+ * @ordered
+ */
+ protected AbstractExpression closure;
+
+ /**
+ * The cached value of the '{@link #getEleName() <em>Ele Name</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getEleName()
+ * @generated
+ * @ordered
+ */
+ protected Identifier eleName;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected CollectionExpressionImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ExpressionPackage.Literals.COLLECTION_EXPRESSION;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public AbstractExpression getClosure() {
+ return closure;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetClosure(AbstractExpression newClosure, NotificationChain msgs) {
+ AbstractExpression oldClosure = closure;
+ closure = newClosure;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ExpressionPackage.COLLECTION_EXPRESSION__CLOSURE, oldClosure, newClosure);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setClosure(AbstractExpression newClosure) {
+ if (newClosure != closure) {
+ NotificationChain msgs = null;
+ if (closure != null)
+ msgs = ((InternalEObject)closure).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ExpressionPackage.COLLECTION_EXPRESSION__CLOSURE, null, msgs);
+ if (newClosure != null)
+ msgs = ((InternalEObject)newClosure).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ExpressionPackage.COLLECTION_EXPRESSION__CLOSURE, null, msgs);
+ msgs = basicSetClosure(newClosure, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ExpressionPackage.COLLECTION_EXPRESSION__CLOSURE, newClosure, newClosure));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Identifier getEleName() {
+ return eleName;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetEleName(Identifier newEleName, NotificationChain msgs) {
+ Identifier oldEleName = eleName;
+ eleName = newEleName;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ExpressionPackage.COLLECTION_EXPRESSION__ELE_NAME, oldEleName, newEleName);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setEleName(Identifier newEleName) {
+ if (newEleName != eleName) {
+ NotificationChain msgs = null;
+ if (eleName != null)
+ msgs = ((InternalEObject)eleName).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ExpressionPackage.COLLECTION_EXPRESSION__ELE_NAME, null, msgs);
+ if (newEleName != null)
+ msgs = ((InternalEObject)newEleName).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ExpressionPackage.COLLECTION_EXPRESSION__ELE_NAME, null, msgs);
+ msgs = basicSetEleName(newEleName, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ExpressionPackage.COLLECTION_EXPRESSION__ELE_NAME, newEleName, newEleName));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case ExpressionPackage.COLLECTION_EXPRESSION__CLOSURE:
+ return basicSetClosure(null, msgs);
+ case ExpressionPackage.COLLECTION_EXPRESSION__ELE_NAME:
+ return basicSetEleName(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 ExpressionPackage.COLLECTION_EXPRESSION__CLOSURE:
+ return getClosure();
+ case ExpressionPackage.COLLECTION_EXPRESSION__ELE_NAME:
+ return getEleName();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case ExpressionPackage.COLLECTION_EXPRESSION__CLOSURE:
+ setClosure((AbstractExpression)newValue);
+ return;
+ case ExpressionPackage.COLLECTION_EXPRESSION__ELE_NAME:
+ setEleName((Identifier)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case ExpressionPackage.COLLECTION_EXPRESSION__CLOSURE:
+ setClosure((AbstractExpression)null);
+ return;
+ case ExpressionPackage.COLLECTION_EXPRESSION__ELE_NAME:
+ setEleName((Identifier)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case ExpressionPackage.COLLECTION_EXPRESSION__CLOSURE:
+ return closure != null;
+ case ExpressionPackage.COLLECTION_EXPRESSION__ELE_NAME:
+ return eleName != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //CollectionExpressionImpl
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/impl/ConstructorCallExpressionImpl.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/impl/ConstructorCallExpressionImpl.java
new file mode 100644
index 0000000..1603917
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/impl/ConstructorCallExpressionImpl.java
@@ -0,0 +1,180 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: ConstructorCallExpressionImpl.java,v 1.1 2008/02/27 13:21:08 sefftinge Exp $
+ */
+package org.eclipse.xpand3.expression.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.xpand3.Identifier;
+
+import org.eclipse.xpand3.expression.ConstructorCallExpression;
+import org.eclipse.xpand3.expression.ExpressionPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Constructor Call Expression</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.xpand3.expression.impl.ConstructorCallExpressionImpl#getType <em>Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ConstructorCallExpressionImpl extends AbstractExpressionImpl implements ConstructorCallExpression {
+ /**
+ * The cached value of the '{@link #getType() <em>Type</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getType()
+ * @generated
+ * @ordered
+ */
+ protected Identifier type;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ConstructorCallExpressionImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ExpressionPackage.Literals.CONSTRUCTOR_CALL_EXPRESSION;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Identifier getType() {
+ return type;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetType(Identifier newType, NotificationChain msgs) {
+ Identifier oldType = type;
+ type = newType;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ExpressionPackage.CONSTRUCTOR_CALL_EXPRESSION__TYPE, oldType, newType);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setType(Identifier newType) {
+ if (newType != type) {
+ NotificationChain msgs = null;
+ if (type != null)
+ msgs = ((InternalEObject)type).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ExpressionPackage.CONSTRUCTOR_CALL_EXPRESSION__TYPE, null, msgs);
+ if (newType != null)
+ msgs = ((InternalEObject)newType).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ExpressionPackage.CONSTRUCTOR_CALL_EXPRESSION__TYPE, null, msgs);
+ msgs = basicSetType(newType, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ExpressionPackage.CONSTRUCTOR_CALL_EXPRESSION__TYPE, newType, newType));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case ExpressionPackage.CONSTRUCTOR_CALL_EXPRESSION__TYPE:
+ return basicSetType(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 ExpressionPackage.CONSTRUCTOR_CALL_EXPRESSION__TYPE:
+ return getType();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case ExpressionPackage.CONSTRUCTOR_CALL_EXPRESSION__TYPE:
+ setType((Identifier)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case ExpressionPackage.CONSTRUCTOR_CALL_EXPRESSION__TYPE:
+ setType((Identifier)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case ExpressionPackage.CONSTRUCTOR_CALL_EXPRESSION__TYPE:
+ return type != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //ConstructorCallExpressionImpl
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/impl/ExpressionFactoryImpl.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/impl/ExpressionFactoryImpl.java
new file mode 100644
index 0000000..c15e269
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/impl/ExpressionFactoryImpl.java
@@ -0,0 +1,297 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: ExpressionFactoryImpl.java,v 1.1 2008/02/27 13:21:08 sefftinge Exp $
+ */
+package org.eclipse.xpand3.expression.impl;
+
+import org.eclipse.emf.ecore.EClass;
+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.xpand3.expression.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ExpressionFactoryImpl extends EFactoryImpl implements ExpressionFactory {
+ /**
+ * Creates the default factory implementation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static ExpressionFactory init() {
+ try {
+ ExpressionFactory theExpressionFactory = (ExpressionFactory)EPackage.Registry.INSTANCE.getEFactory("http://www.eclipse.org/m2t/xpand/xpand3/expession");
+ if (theExpressionFactory != null) {
+ return theExpressionFactory;
+ }
+ }
+ catch (Exception exception) {
+ EcorePlugin.INSTANCE.log(exception);
+ }
+ return new ExpressionFactoryImpl();
+ }
+
+ /**
+ * Creates an instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ExpressionFactoryImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EObject create(EClass eClass) {
+ switch (eClass.getClassifierID()) {
+ case ExpressionPackage.BOOLEAN_OPERATION: return createBooleanOperation();
+ case ExpressionPackage.CAST: return createCast();
+ case ExpressionPackage.CHAIN_EXPRESSION: return createChainExpression();
+ case ExpressionPackage.CONSTRUCTOR_CALL_EXPRESSION: return createConstructorCallExpression();
+ case ExpressionPackage.FEATURE_CALL: return createFeatureCall();
+ case ExpressionPackage.COLLECTION_EXPRESSION: return createCollectionExpression();
+ case ExpressionPackage.OPERATION_CALL: return createOperationCall();
+ case ExpressionPackage.TYPE_SELECT_EXPRESSION: return createTypeSelectExpression();
+ case ExpressionPackage.GLOBAL_VAR_EXPRESSION: return createGlobalVarExpression();
+ case ExpressionPackage.IF_EXPRESSION: return createIfExpression();
+ case ExpressionPackage.LET_EXPRESSION: return createLetExpression();
+ case ExpressionPackage.LIST_LITERAL: return createListLiteral();
+ case ExpressionPackage.BOOLEAN_LITERAL: return createBooleanLiteral();
+ case ExpressionPackage.INTEGER_LITERAL: return createIntegerLiteral();
+ case ExpressionPackage.NULL_LITERAL: return createNullLiteral();
+ case ExpressionPackage.REAL_LITERAL: return createRealLiteral();
+ case ExpressionPackage.STRING_LITERAL: return createStringLiteral();
+ case ExpressionPackage.SWITCH_EXPRESSION: return createSwitchExpression();
+ case ExpressionPackage.CASE: return createCase();
+ default:
+ throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public BooleanOperation createBooleanOperation() {
+ BooleanOperationImpl booleanOperation = new BooleanOperationImpl();
+ return booleanOperation;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Cast createCast() {
+ CastImpl cast = new CastImpl();
+ return cast;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ChainExpression createChainExpression() {
+ ChainExpressionImpl chainExpression = new ChainExpressionImpl();
+ return chainExpression;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ConstructorCallExpression createConstructorCallExpression() {
+ ConstructorCallExpressionImpl constructorCallExpression = new ConstructorCallExpressionImpl();
+ return constructorCallExpression;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FeatureCall createFeatureCall() {
+ FeatureCallImpl featureCall = new FeatureCallImpl();
+ return featureCall;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CollectionExpression createCollectionExpression() {
+ CollectionExpressionImpl collectionExpression = new CollectionExpressionImpl();
+ return collectionExpression;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public OperationCall createOperationCall() {
+ OperationCallImpl operationCall = new OperationCallImpl();
+ return operationCall;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TypeSelectExpression createTypeSelectExpression() {
+ TypeSelectExpressionImpl typeSelectExpression = new TypeSelectExpressionImpl();
+ return typeSelectExpression;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public GlobalVarExpression createGlobalVarExpression() {
+ GlobalVarExpressionImpl globalVarExpression = new GlobalVarExpressionImpl();
+ return globalVarExpression;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public IfExpression createIfExpression() {
+ IfExpressionImpl ifExpression = new IfExpressionImpl();
+ return ifExpression;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LetExpression createLetExpression() {
+ LetExpressionImpl letExpression = new LetExpressionImpl();
+ return letExpression;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ListLiteral createListLiteral() {
+ ListLiteralImpl listLiteral = new ListLiteralImpl();
+ return listLiteral;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public BooleanLiteral createBooleanLiteral() {
+ BooleanLiteralImpl booleanLiteral = new BooleanLiteralImpl();
+ return booleanLiteral;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public IntegerLiteral createIntegerLiteral() {
+ IntegerLiteralImpl integerLiteral = new IntegerLiteralImpl();
+ return integerLiteral;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NullLiteral createNullLiteral() {
+ NullLiteralImpl nullLiteral = new NullLiteralImpl();
+ return nullLiteral;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public RealLiteral createRealLiteral() {
+ RealLiteralImpl realLiteral = new RealLiteralImpl();
+ return realLiteral;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public StringLiteral createStringLiteral() {
+ StringLiteralImpl stringLiteral = new StringLiteralImpl();
+ return stringLiteral;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SwitchExpression createSwitchExpression() {
+ SwitchExpressionImpl switchExpression = new SwitchExpressionImpl();
+ return switchExpression;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Case createCase() {
+ CaseImpl case_ = new CaseImpl();
+ return case_;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ExpressionPackage getExpressionPackage() {
+ return (ExpressionPackage)getEPackage();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @deprecated
+ * @generated
+ */
+ @Deprecated
+ public static ExpressionPackage getPackage() {
+ return ExpressionPackage.eINSTANCE;
+ }
+
+} //ExpressionFactoryImpl
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/impl/ExpressionPackageImpl.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/impl/ExpressionPackageImpl.java
new file mode 100644
index 0000000..b7892d8
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/impl/ExpressionPackageImpl.java
@@ -0,0 +1,949 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: ExpressionPackageImpl.java,v 1.1 2008/02/27 13:21:08 sefftinge Exp $
+ */
+package org.eclipse.xpand3.expression.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+import org.eclipse.xpand3.Xpand3Package;
+
+import org.eclipse.xpand3.declaration.DeclarationPackage;
+
+import org.eclipse.xpand3.declaration.impl.DeclarationPackageImpl;
+
+import org.eclipse.xpand3.expression.AbstractExpression;
+import org.eclipse.xpand3.expression.BooleanLiteral;
+import org.eclipse.xpand3.expression.BooleanOperation;
+import org.eclipse.xpand3.expression.Case;
+import org.eclipse.xpand3.expression.Cast;
+import org.eclipse.xpand3.expression.ChainExpression;
+import org.eclipse.xpand3.expression.CollectionExpression;
+import org.eclipse.xpand3.expression.ConstructorCallExpression;
+import org.eclipse.xpand3.expression.ExpressionFactory;
+import org.eclipse.xpand3.expression.ExpressionPackage;
+import org.eclipse.xpand3.expression.FeatureCall;
+import org.eclipse.xpand3.expression.GlobalVarExpression;
+import org.eclipse.xpand3.expression.IfExpression;
+import org.eclipse.xpand3.expression.IntegerLiteral;
+import org.eclipse.xpand3.expression.LetExpression;
+import org.eclipse.xpand3.expression.ListLiteral;
+import org.eclipse.xpand3.expression.Literal;
+import org.eclipse.xpand3.expression.NullLiteral;
+import org.eclipse.xpand3.expression.OperationCall;
+import org.eclipse.xpand3.expression.RealLiteral;
+import org.eclipse.xpand3.expression.StringLiteral;
+import org.eclipse.xpand3.expression.SwitchExpression;
+import org.eclipse.xpand3.expression.TypeSelectExpression;
+
+import org.eclipse.xpand3.impl.Xpand3PackageImpl;
+
+import org.eclipse.xpand3.statement.StatementPackage;
+
+import org.eclipse.xpand3.statement.impl.StatementPackageImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ExpressionPackageImpl extends EPackageImpl implements ExpressionPackage {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass abstractExpressionEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass booleanOperationEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass castEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass chainExpressionEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass constructorCallExpressionEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass featureCallEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass collectionExpressionEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass operationCallEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass typeSelectExpressionEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass globalVarExpressionEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass ifExpressionEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass letExpressionEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass listLiteralEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass literalEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass booleanLiteralEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass integerLiteralEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass nullLiteralEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass realLiteralEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass stringLiteralEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass switchExpressionEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass caseEClass = 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.xpand3.expression.ExpressionPackage#eNS_URI
+ * @see #init()
+ * @generated
+ */
+ private ExpressionPackageImpl() {
+ super(eNS_URI, ExpressionFactory.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 ExpressionPackage init() {
+ if (isInited) return (ExpressionPackage)EPackage.Registry.INSTANCE.getEPackage(ExpressionPackage.eNS_URI);
+
+ // Obtain or create and register package
+ ExpressionPackageImpl theExpressionPackage = (ExpressionPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(eNS_URI) instanceof ExpressionPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(eNS_URI) : new ExpressionPackageImpl());
+
+ isInited = true;
+
+ // Obtain or create and register interdependencies
+ Xpand3PackageImpl theXpand3Package = (Xpand3PackageImpl)(EPackage.Registry.INSTANCE.getEPackage(Xpand3Package.eNS_URI) instanceof Xpand3PackageImpl ? EPackage.Registry.INSTANCE.getEPackage(Xpand3Package.eNS_URI) : Xpand3Package.eINSTANCE);
+ StatementPackageImpl theStatementPackage = (StatementPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(StatementPackage.eNS_URI) instanceof StatementPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(StatementPackage.eNS_URI) : StatementPackage.eINSTANCE);
+ DeclarationPackageImpl theDeclarationPackage = (DeclarationPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(DeclarationPackage.eNS_URI) instanceof DeclarationPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(DeclarationPackage.eNS_URI) : DeclarationPackage.eINSTANCE);
+
+ // Create package meta-data objects
+ theExpressionPackage.createPackageContents();
+ theXpand3Package.createPackageContents();
+ theStatementPackage.createPackageContents();
+ theDeclarationPackage.createPackageContents();
+
+ // Initialize created meta-data
+ theExpressionPackage.initializePackageContents();
+ theXpand3Package.initializePackageContents();
+ theStatementPackage.initializePackageContents();
+ theDeclarationPackage.initializePackageContents();
+
+ // Mark meta-data to indicate it can't be changed
+ theExpressionPackage.freeze();
+
+ return theExpressionPackage;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getAbstractExpression() {
+ return abstractExpressionEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getBooleanOperation() {
+ return booleanOperationEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getBooleanOperation_Left() {
+ return (EReference)booleanOperationEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getBooleanOperation_Right() {
+ return (EReference)booleanOperationEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getBooleanOperation_Operator() {
+ return (EReference)booleanOperationEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getCast() {
+ return castEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getCast_Type() {
+ return (EReference)castEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getCast_Target() {
+ return (EReference)castEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getChainExpression() {
+ return chainExpressionEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getChainExpression_First() {
+ return (EReference)chainExpressionEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getChainExpression_Next() {
+ return (EReference)chainExpressionEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getConstructorCallExpression() {
+ return constructorCallExpressionEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getConstructorCallExpression_Type() {
+ return (EReference)constructorCallExpressionEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getFeatureCall() {
+ return featureCallEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getFeatureCall_Target() {
+ return (EReference)featureCallEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getFeatureCall_Name() {
+ return (EReference)featureCallEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getCollectionExpression() {
+ return collectionExpressionEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getCollectionExpression_Closure() {
+ return (EReference)collectionExpressionEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getCollectionExpression_EleName() {
+ return (EReference)collectionExpressionEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getOperationCall() {
+ return operationCallEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getOperationCall_Params() {
+ return (EReference)operationCallEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getTypeSelectExpression() {
+ return typeSelectExpressionEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getTypeSelectExpression_TypeLiteral() {
+ return (EReference)typeSelectExpressionEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getGlobalVarExpression() {
+ return globalVarExpressionEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getGlobalVarExpression_GlobalVarName() {
+ return (EReference)globalVarExpressionEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getIfExpression() {
+ return ifExpressionEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getIfExpression_Condition() {
+ return (EReference)ifExpressionEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getIfExpression_ThenPart() {
+ return (EReference)ifExpressionEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getIfExpression_ElsePart() {
+ return (EReference)ifExpressionEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getLetExpression() {
+ return letExpressionEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getLetExpression_VarExpression() {
+ return (EReference)letExpressionEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getLetExpression_TargetExpression() {
+ return (EReference)letExpressionEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getLetExpression_VarName() {
+ return (EReference)letExpressionEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getListLiteral() {
+ return listLiteralEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getListLiteral_Elements() {
+ return (EReference)listLiteralEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getLiteral() {
+ return literalEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getLiteral_LiteralValue() {
+ return (EReference)literalEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getBooleanLiteral() {
+ return booleanLiteralEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getIntegerLiteral() {
+ return integerLiteralEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getNullLiteral() {
+ return nullLiteralEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getRealLiteral() {
+ return realLiteralEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getStringLiteral() {
+ return stringLiteralEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getSwitchExpression() {
+ return switchExpressionEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getSwitchExpression_SwitchExpr() {
+ return (EReference)switchExpressionEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getSwitchExpression_DefaultExpr() {
+ return (EReference)switchExpressionEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getSwitchExpression_Cases() {
+ return (EReference)switchExpressionEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getCase() {
+ return caseEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getCase_Condition() {
+ return (EReference)caseEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getCase_ThenPart() {
+ return (EReference)caseEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ExpressionFactory getExpressionFactory() {
+ return (ExpressionFactory)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
+ abstractExpressionEClass = createEClass(ABSTRACT_EXPRESSION);
+
+ booleanOperationEClass = createEClass(BOOLEAN_OPERATION);
+ createEReference(booleanOperationEClass, BOOLEAN_OPERATION__LEFT);
+ createEReference(booleanOperationEClass, BOOLEAN_OPERATION__RIGHT);
+ createEReference(booleanOperationEClass, BOOLEAN_OPERATION__OPERATOR);
+
+ castEClass = createEClass(CAST);
+ createEReference(castEClass, CAST__TYPE);
+ createEReference(castEClass, CAST__TARGET);
+
+ chainExpressionEClass = createEClass(CHAIN_EXPRESSION);
+ createEReference(chainExpressionEClass, CHAIN_EXPRESSION__FIRST);
+ createEReference(chainExpressionEClass, CHAIN_EXPRESSION__NEXT);
+
+ constructorCallExpressionEClass = createEClass(CONSTRUCTOR_CALL_EXPRESSION);
+ createEReference(constructorCallExpressionEClass, CONSTRUCTOR_CALL_EXPRESSION__TYPE);
+
+ featureCallEClass = createEClass(FEATURE_CALL);
+ createEReference(featureCallEClass, FEATURE_CALL__TARGET);
+ createEReference(featureCallEClass, FEATURE_CALL__NAME);
+
+ collectionExpressionEClass = createEClass(COLLECTION_EXPRESSION);
+ createEReference(collectionExpressionEClass, COLLECTION_EXPRESSION__CLOSURE);
+ createEReference(collectionExpressionEClass, COLLECTION_EXPRESSION__ELE_NAME);
+
+ operationCallEClass = createEClass(OPERATION_CALL);
+ createEReference(operationCallEClass, OPERATION_CALL__PARAMS);
+
+ typeSelectExpressionEClass = createEClass(TYPE_SELECT_EXPRESSION);
+ createEReference(typeSelectExpressionEClass, TYPE_SELECT_EXPRESSION__TYPE_LITERAL);
+
+ globalVarExpressionEClass = createEClass(GLOBAL_VAR_EXPRESSION);
+ createEReference(globalVarExpressionEClass, GLOBAL_VAR_EXPRESSION__GLOBAL_VAR_NAME);
+
+ ifExpressionEClass = createEClass(IF_EXPRESSION);
+ createEReference(ifExpressionEClass, IF_EXPRESSION__CONDITION);
+ createEReference(ifExpressionEClass, IF_EXPRESSION__THEN_PART);
+ createEReference(ifExpressionEClass, IF_EXPRESSION__ELSE_PART);
+
+ letExpressionEClass = createEClass(LET_EXPRESSION);
+ createEReference(letExpressionEClass, LET_EXPRESSION__VAR_EXPRESSION);
+ createEReference(letExpressionEClass, LET_EXPRESSION__TARGET_EXPRESSION);
+ createEReference(letExpressionEClass, LET_EXPRESSION__VAR_NAME);
+
+ listLiteralEClass = createEClass(LIST_LITERAL);
+ createEReference(listLiteralEClass, LIST_LITERAL__ELEMENTS);
+
+ literalEClass = createEClass(LITERAL);
+ createEReference(literalEClass, LITERAL__LITERAL_VALUE);
+
+ booleanLiteralEClass = createEClass(BOOLEAN_LITERAL);
+
+ integerLiteralEClass = createEClass(INTEGER_LITERAL);
+
+ nullLiteralEClass = createEClass(NULL_LITERAL);
+
+ realLiteralEClass = createEClass(REAL_LITERAL);
+
+ stringLiteralEClass = createEClass(STRING_LITERAL);
+
+ switchExpressionEClass = createEClass(SWITCH_EXPRESSION);
+ createEReference(switchExpressionEClass, SWITCH_EXPRESSION__SWITCH_EXPR);
+ createEReference(switchExpressionEClass, SWITCH_EXPRESSION__DEFAULT_EXPR);
+ createEReference(switchExpressionEClass, SWITCH_EXPRESSION__CASES);
+
+ caseEClass = createEClass(CASE);
+ createEReference(caseEClass, CASE__CONDITION);
+ createEReference(caseEClass, CASE__THEN_PART);
+ }
+
+ /**
+ * <!-- 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
+ Xpand3Package theXpand3Package = (Xpand3Package)EPackage.Registry.INSTANCE.getEPackage(Xpand3Package.eNS_URI);
+
+ // Create type parameters
+
+ // Set bounds for type parameters
+
+ // Add supertypes to classes
+ abstractExpressionEClass.getESuperTypes().add(theXpand3Package.getSyntaxElement());
+ booleanOperationEClass.getESuperTypes().add(this.getAbstractExpression());
+ castEClass.getESuperTypes().add(this.getAbstractExpression());
+ chainExpressionEClass.getESuperTypes().add(this.getAbstractExpression());
+ constructorCallExpressionEClass.getESuperTypes().add(this.getAbstractExpression());
+ featureCallEClass.getESuperTypes().add(this.getAbstractExpression());
+ collectionExpressionEClass.getESuperTypes().add(this.getFeatureCall());
+ operationCallEClass.getESuperTypes().add(this.getFeatureCall());
+ typeSelectExpressionEClass.getESuperTypes().add(this.getFeatureCall());
+ globalVarExpressionEClass.getESuperTypes().add(this.getAbstractExpression());
+ ifExpressionEClass.getESuperTypes().add(this.getAbstractExpression());
+ letExpressionEClass.getESuperTypes().add(this.getAbstractExpression());
+ listLiteralEClass.getESuperTypes().add(this.getAbstractExpression());
+ literalEClass.getESuperTypes().add(this.getAbstractExpression());
+ booleanLiteralEClass.getESuperTypes().add(this.getLiteral());
+ integerLiteralEClass.getESuperTypes().add(this.getLiteral());
+ nullLiteralEClass.getESuperTypes().add(this.getLiteral());
+ realLiteralEClass.getESuperTypes().add(this.getLiteral());
+ stringLiteralEClass.getESuperTypes().add(this.getLiteral());
+ switchExpressionEClass.getESuperTypes().add(this.getAbstractExpression());
+ caseEClass.getESuperTypes().add(theXpand3Package.getSyntaxElement());
+
+ // Initialize classes and features; add operations and parameters
+ initEClass(abstractExpressionEClass, AbstractExpression.class, "AbstractExpression", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(booleanOperationEClass, BooleanOperation.class, "BooleanOperation", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getBooleanOperation_Left(), this.getAbstractExpression(), null, "left", null, 0, 1, BooleanOperation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getBooleanOperation_Right(), this.getAbstractExpression(), null, "right", null, 0, 1, BooleanOperation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getBooleanOperation_Operator(), theXpand3Package.getIdentifier(), null, "operator", null, 0, 1, BooleanOperation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(castEClass, Cast.class, "Cast", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getCast_Type(), theXpand3Package.getIdentifier(), null, "type", null, 0, 1, Cast.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getCast_Target(), this.getAbstractExpression(), null, "target", null, 0, 1, Cast.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(chainExpressionEClass, ChainExpression.class, "ChainExpression", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getChainExpression_First(), this.getAbstractExpression(), null, "first", null, 0, 1, ChainExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getChainExpression_Next(), this.getAbstractExpression(), null, "next", null, 0, 1, ChainExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(constructorCallExpressionEClass, ConstructorCallExpression.class, "ConstructorCallExpression", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getConstructorCallExpression_Type(), theXpand3Package.getIdentifier(), null, "type", null, 0, 1, ConstructorCallExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(featureCallEClass, FeatureCall.class, "FeatureCall", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getFeatureCall_Target(), this.getAbstractExpression(), null, "target", null, 0, 1, FeatureCall.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getFeatureCall_Name(), theXpand3Package.getIdentifier(), null, "name", null, 0, 1, FeatureCall.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(collectionExpressionEClass, CollectionExpression.class, "CollectionExpression", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getCollectionExpression_Closure(), this.getAbstractExpression(), null, "closure", null, 0, 1, CollectionExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getCollectionExpression_EleName(), theXpand3Package.getIdentifier(), null, "eleName", null, 0, 1, CollectionExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(operationCallEClass, OperationCall.class, "OperationCall", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getOperationCall_Params(), this.getAbstractExpression(), null, "params", null, 0, -1, OperationCall.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(typeSelectExpressionEClass, TypeSelectExpression.class, "TypeSelectExpression", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getTypeSelectExpression_TypeLiteral(), theXpand3Package.getIdentifier(), null, "typeLiteral", null, 0, 1, TypeSelectExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(globalVarExpressionEClass, GlobalVarExpression.class, "GlobalVarExpression", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getGlobalVarExpression_GlobalVarName(), theXpand3Package.getIdentifier(), null, "globalVarName", null, 0, 1, GlobalVarExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(ifExpressionEClass, IfExpression.class, "IfExpression", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getIfExpression_Condition(), this.getAbstractExpression(), null, "condition", null, 0, 1, IfExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getIfExpression_ThenPart(), this.getAbstractExpression(), null, "thenPart", null, 0, 1, IfExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getIfExpression_ElsePart(), this.getAbstractExpression(), null, "elsePart", null, 0, 1, IfExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(letExpressionEClass, LetExpression.class, "LetExpression", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getLetExpression_VarExpression(), this.getAbstractExpression(), null, "varExpression", null, 0, 1, LetExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getLetExpression_TargetExpression(), this.getAbstractExpression(), null, "targetExpression", null, 0, 1, LetExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getLetExpression_VarName(), theXpand3Package.getIdentifier(), null, "varName", null, 0, 1, LetExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(listLiteralEClass, ListLiteral.class, "ListLiteral", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getListLiteral_Elements(), this.getAbstractExpression(), null, "elements", null, 0, -1, ListLiteral.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(literalEClass, Literal.class, "Literal", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getLiteral_LiteralValue(), theXpand3Package.getIdentifier(), null, "literalValue", null, 0, 1, Literal.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(booleanLiteralEClass, BooleanLiteral.class, "BooleanLiteral", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(integerLiteralEClass, IntegerLiteral.class, "IntegerLiteral", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(nullLiteralEClass, NullLiteral.class, "NullLiteral", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(realLiteralEClass, RealLiteral.class, "RealLiteral", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(stringLiteralEClass, StringLiteral.class, "StringLiteral", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(switchExpressionEClass, SwitchExpression.class, "SwitchExpression", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getSwitchExpression_SwitchExpr(), this.getAbstractExpression(), null, "switchExpr", null, 0, 1, SwitchExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getSwitchExpression_DefaultExpr(), this.getAbstractExpression(), null, "defaultExpr", null, 0, 1, SwitchExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getSwitchExpression_Cases(), this.getCase(), null, "cases", null, 0, -1, SwitchExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(caseEClass, Case.class, "Case", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getCase_Condition(), this.getAbstractExpression(), null, "condition", null, 0, 1, Case.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getCase_ThenPart(), this.getAbstractExpression(), null, "thenPart", null, 0, 1, Case.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ }
+
+} //ExpressionPackageImpl
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/impl/FeatureCallImpl.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/impl/FeatureCallImpl.java
new file mode 100644
index 0000000..e4818c4
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/impl/FeatureCallImpl.java
@@ -0,0 +1,247 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: FeatureCallImpl.java,v 1.1 2008/02/27 13:21:08 sefftinge Exp $
+ */
+package org.eclipse.xpand3.expression.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.xpand3.Identifier;
+
+import org.eclipse.xpand3.expression.AbstractExpression;
+import org.eclipse.xpand3.expression.ExpressionPackage;
+import org.eclipse.xpand3.expression.FeatureCall;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Feature Call</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.xpand3.expression.impl.FeatureCallImpl#getTarget <em>Target</em>}</li>
+ * <li>{@link org.eclipse.xpand3.expression.impl.FeatureCallImpl#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class FeatureCallImpl extends AbstractExpressionImpl implements FeatureCall {
+ /**
+ * The cached value of the '{@link #getTarget() <em>Target</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTarget()
+ * @generated
+ * @ordered
+ */
+ protected AbstractExpression target;
+
+ /**
+ * The cached value of the '{@link #getName() <em>Name</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected Identifier name;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected FeatureCallImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ExpressionPackage.Literals.FEATURE_CALL;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public AbstractExpression getTarget() {
+ return target;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetTarget(AbstractExpression newTarget, NotificationChain msgs) {
+ AbstractExpression oldTarget = target;
+ target = newTarget;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ExpressionPackage.FEATURE_CALL__TARGET, oldTarget, newTarget);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setTarget(AbstractExpression newTarget) {
+ if (newTarget != target) {
+ NotificationChain msgs = null;
+ if (target != null)
+ msgs = ((InternalEObject)target).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ExpressionPackage.FEATURE_CALL__TARGET, null, msgs);
+ if (newTarget != null)
+ msgs = ((InternalEObject)newTarget).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ExpressionPackage.FEATURE_CALL__TARGET, null, msgs);
+ msgs = basicSetTarget(newTarget, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ExpressionPackage.FEATURE_CALL__TARGET, newTarget, newTarget));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Identifier getName() {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetName(Identifier newName, NotificationChain msgs) {
+ Identifier oldName = name;
+ name = newName;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ExpressionPackage.FEATURE_CALL__NAME, oldName, newName);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setName(Identifier newName) {
+ if (newName != name) {
+ NotificationChain msgs = null;
+ if (name != null)
+ msgs = ((InternalEObject)name).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ExpressionPackage.FEATURE_CALL__NAME, null, msgs);
+ if (newName != null)
+ msgs = ((InternalEObject)newName).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ExpressionPackage.FEATURE_CALL__NAME, null, msgs);
+ msgs = basicSetName(newName, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ExpressionPackage.FEATURE_CALL__NAME, newName, newName));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case ExpressionPackage.FEATURE_CALL__TARGET:
+ return basicSetTarget(null, msgs);
+ case ExpressionPackage.FEATURE_CALL__NAME:
+ return basicSetName(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 ExpressionPackage.FEATURE_CALL__TARGET:
+ return getTarget();
+ case ExpressionPackage.FEATURE_CALL__NAME:
+ return getName();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case ExpressionPackage.FEATURE_CALL__TARGET:
+ setTarget((AbstractExpression)newValue);
+ return;
+ case ExpressionPackage.FEATURE_CALL__NAME:
+ setName((Identifier)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case ExpressionPackage.FEATURE_CALL__TARGET:
+ setTarget((AbstractExpression)null);
+ return;
+ case ExpressionPackage.FEATURE_CALL__NAME:
+ setName((Identifier)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case ExpressionPackage.FEATURE_CALL__TARGET:
+ return target != null;
+ case ExpressionPackage.FEATURE_CALL__NAME:
+ return name != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //FeatureCallImpl
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/impl/GlobalVarExpressionImpl.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/impl/GlobalVarExpressionImpl.java
new file mode 100644
index 0000000..d3148d2
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/impl/GlobalVarExpressionImpl.java
@@ -0,0 +1,180 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: GlobalVarExpressionImpl.java,v 1.1 2008/02/27 13:21:08 sefftinge Exp $
+ */
+package org.eclipse.xpand3.expression.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.xpand3.Identifier;
+
+import org.eclipse.xpand3.expression.ExpressionPackage;
+import org.eclipse.xpand3.expression.GlobalVarExpression;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Global Var Expression</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.xpand3.expression.impl.GlobalVarExpressionImpl#getGlobalVarName <em>Global Var Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class GlobalVarExpressionImpl extends AbstractExpressionImpl implements GlobalVarExpression {
+ /**
+ * The cached value of the '{@link #getGlobalVarName() <em>Global Var Name</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getGlobalVarName()
+ * @generated
+ * @ordered
+ */
+ protected Identifier globalVarName;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected GlobalVarExpressionImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ExpressionPackage.Literals.GLOBAL_VAR_EXPRESSION;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Identifier getGlobalVarName() {
+ return globalVarName;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetGlobalVarName(Identifier newGlobalVarName, NotificationChain msgs) {
+ Identifier oldGlobalVarName = globalVarName;
+ globalVarName = newGlobalVarName;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ExpressionPackage.GLOBAL_VAR_EXPRESSION__GLOBAL_VAR_NAME, oldGlobalVarName, newGlobalVarName);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setGlobalVarName(Identifier newGlobalVarName) {
+ if (newGlobalVarName != globalVarName) {
+ NotificationChain msgs = null;
+ if (globalVarName != null)
+ msgs = ((InternalEObject)globalVarName).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ExpressionPackage.GLOBAL_VAR_EXPRESSION__GLOBAL_VAR_NAME, null, msgs);
+ if (newGlobalVarName != null)
+ msgs = ((InternalEObject)newGlobalVarName).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ExpressionPackage.GLOBAL_VAR_EXPRESSION__GLOBAL_VAR_NAME, null, msgs);
+ msgs = basicSetGlobalVarName(newGlobalVarName, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ExpressionPackage.GLOBAL_VAR_EXPRESSION__GLOBAL_VAR_NAME, newGlobalVarName, newGlobalVarName));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case ExpressionPackage.GLOBAL_VAR_EXPRESSION__GLOBAL_VAR_NAME:
+ return basicSetGlobalVarName(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 ExpressionPackage.GLOBAL_VAR_EXPRESSION__GLOBAL_VAR_NAME:
+ return getGlobalVarName();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case ExpressionPackage.GLOBAL_VAR_EXPRESSION__GLOBAL_VAR_NAME:
+ setGlobalVarName((Identifier)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case ExpressionPackage.GLOBAL_VAR_EXPRESSION__GLOBAL_VAR_NAME:
+ setGlobalVarName((Identifier)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case ExpressionPackage.GLOBAL_VAR_EXPRESSION__GLOBAL_VAR_NAME:
+ return globalVarName != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //GlobalVarExpressionImpl
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/impl/IfExpressionImpl.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/impl/IfExpressionImpl.java
new file mode 100644
index 0000000..026ea1a
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/impl/IfExpressionImpl.java
@@ -0,0 +1,311 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: IfExpressionImpl.java,v 1.1 2008/02/27 13:21:07 sefftinge Exp $
+ */
+package org.eclipse.xpand3.expression.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.xpand3.expression.AbstractExpression;
+import org.eclipse.xpand3.expression.ExpressionPackage;
+import org.eclipse.xpand3.expression.IfExpression;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>If Expression</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.xpand3.expression.impl.IfExpressionImpl#getCondition <em>Condition</em>}</li>
+ * <li>{@link org.eclipse.xpand3.expression.impl.IfExpressionImpl#getThenPart <em>Then Part</em>}</li>
+ * <li>{@link org.eclipse.xpand3.expression.impl.IfExpressionImpl#getElsePart <em>Else Part</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class IfExpressionImpl extends AbstractExpressionImpl implements IfExpression {
+ /**
+ * The cached value of the '{@link #getCondition() <em>Condition</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getCondition()
+ * @generated
+ * @ordered
+ */
+ protected AbstractExpression condition;
+
+ /**
+ * The cached value of the '{@link #getThenPart() <em>Then Part</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getThenPart()
+ * @generated
+ * @ordered
+ */
+ protected AbstractExpression thenPart;
+
+ /**
+ * The cached value of the '{@link #getElsePart() <em>Else Part</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getElsePart()
+ * @generated
+ * @ordered
+ */
+ protected AbstractExpression elsePart;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IfExpressionImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ExpressionPackage.Literals.IF_EXPRESSION;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public AbstractExpression getCondition() {
+ return condition;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetCondition(AbstractExpression newCondition, NotificationChain msgs) {
+ AbstractExpression oldCondition = condition;
+ condition = newCondition;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ExpressionPackage.IF_EXPRESSION__CONDITION, oldCondition, newCondition);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setCondition(AbstractExpression newCondition) {
+ if (newCondition != condition) {
+ NotificationChain msgs = null;
+ if (condition != null)
+ msgs = ((InternalEObject)condition).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ExpressionPackage.IF_EXPRESSION__CONDITION, null, msgs);
+ if (newCondition != null)
+ msgs = ((InternalEObject)newCondition).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ExpressionPackage.IF_EXPRESSION__CONDITION, null, msgs);
+ msgs = basicSetCondition(newCondition, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ExpressionPackage.IF_EXPRESSION__CONDITION, newCondition, newCondition));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public AbstractExpression getThenPart() {
+ return thenPart;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetThenPart(AbstractExpression newThenPart, NotificationChain msgs) {
+ AbstractExpression oldThenPart = thenPart;
+ thenPart = newThenPart;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ExpressionPackage.IF_EXPRESSION__THEN_PART, oldThenPart, newThenPart);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setThenPart(AbstractExpression newThenPart) {
+ if (newThenPart != thenPart) {
+ NotificationChain msgs = null;
+ if (thenPart != null)
+ msgs = ((InternalEObject)thenPart).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ExpressionPackage.IF_EXPRESSION__THEN_PART, null, msgs);
+ if (newThenPart != null)
+ msgs = ((InternalEObject)newThenPart).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ExpressionPackage.IF_EXPRESSION__THEN_PART, null, msgs);
+ msgs = basicSetThenPart(newThenPart, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ExpressionPackage.IF_EXPRESSION__THEN_PART, newThenPart, newThenPart));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public AbstractExpression getElsePart() {
+ return elsePart;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetElsePart(AbstractExpression newElsePart, NotificationChain msgs) {
+ AbstractExpression oldElsePart = elsePart;
+ elsePart = newElsePart;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ExpressionPackage.IF_EXPRESSION__ELSE_PART, oldElsePart, newElsePart);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setElsePart(AbstractExpression newElsePart) {
+ if (newElsePart != elsePart) {
+ NotificationChain msgs = null;
+ if (elsePart != null)
+ msgs = ((InternalEObject)elsePart).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ExpressionPackage.IF_EXPRESSION__ELSE_PART, null, msgs);
+ if (newElsePart != null)
+ msgs = ((InternalEObject)newElsePart).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ExpressionPackage.IF_EXPRESSION__ELSE_PART, null, msgs);
+ msgs = basicSetElsePart(newElsePart, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ExpressionPackage.IF_EXPRESSION__ELSE_PART, newElsePart, newElsePart));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case ExpressionPackage.IF_EXPRESSION__CONDITION:
+ return basicSetCondition(null, msgs);
+ case ExpressionPackage.IF_EXPRESSION__THEN_PART:
+ return basicSetThenPart(null, msgs);
+ case ExpressionPackage.IF_EXPRESSION__ELSE_PART:
+ return basicSetElsePart(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 ExpressionPackage.IF_EXPRESSION__CONDITION:
+ return getCondition();
+ case ExpressionPackage.IF_EXPRESSION__THEN_PART:
+ return getThenPart();
+ case ExpressionPackage.IF_EXPRESSION__ELSE_PART:
+ return getElsePart();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case ExpressionPackage.IF_EXPRESSION__CONDITION:
+ setCondition((AbstractExpression)newValue);
+ return;
+ case ExpressionPackage.IF_EXPRESSION__THEN_PART:
+ setThenPart((AbstractExpression)newValue);
+ return;
+ case ExpressionPackage.IF_EXPRESSION__ELSE_PART:
+ setElsePart((AbstractExpression)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case ExpressionPackage.IF_EXPRESSION__CONDITION:
+ setCondition((AbstractExpression)null);
+ return;
+ case ExpressionPackage.IF_EXPRESSION__THEN_PART:
+ setThenPart((AbstractExpression)null);
+ return;
+ case ExpressionPackage.IF_EXPRESSION__ELSE_PART:
+ setElsePart((AbstractExpression)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case ExpressionPackage.IF_EXPRESSION__CONDITION:
+ return condition != null;
+ case ExpressionPackage.IF_EXPRESSION__THEN_PART:
+ return thenPart != null;
+ case ExpressionPackage.IF_EXPRESSION__ELSE_PART:
+ return elsePart != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //IfExpressionImpl
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/impl/IntegerLiteralImpl.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/impl/IntegerLiteralImpl.java
new file mode 100644
index 0000000..754d8cd
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/impl/IntegerLiteralImpl.java
@@ -0,0 +1,43 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: IntegerLiteralImpl.java,v 1.1 2008/02/27 13:21:08 sefftinge Exp $
+ */
+package org.eclipse.xpand3.expression.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.xpand3.expression.ExpressionPackage;
+import org.eclipse.xpand3.expression.IntegerLiteral;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Integer Literal</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class IntegerLiteralImpl extends LiteralImpl implements IntegerLiteral {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IntegerLiteralImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ExpressionPackage.Literals.INTEGER_LITERAL;
+ }
+
+} //IntegerLiteralImpl
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/impl/LetExpressionImpl.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/impl/LetExpressionImpl.java
new file mode 100644
index 0000000..52f2c9c
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/impl/LetExpressionImpl.java
@@ -0,0 +1,313 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: LetExpressionImpl.java,v 1.1 2008/02/27 13:21:08 sefftinge Exp $
+ */
+package org.eclipse.xpand3.expression.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.xpand3.Identifier;
+
+import org.eclipse.xpand3.expression.AbstractExpression;
+import org.eclipse.xpand3.expression.ExpressionPackage;
+import org.eclipse.xpand3.expression.LetExpression;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Let Expression</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.xpand3.expression.impl.LetExpressionImpl#getVarExpression <em>Var Expression</em>}</li>
+ * <li>{@link org.eclipse.xpand3.expression.impl.LetExpressionImpl#getTargetExpression <em>Target Expression</em>}</li>
+ * <li>{@link org.eclipse.xpand3.expression.impl.LetExpressionImpl#getVarName <em>Var Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LetExpressionImpl extends AbstractExpressionImpl implements LetExpression {
+ /**
+ * The cached value of the '{@link #getVarExpression() <em>Var Expression</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getVarExpression()
+ * @generated
+ * @ordered
+ */
+ protected AbstractExpression varExpression;
+
+ /**
+ * The cached value of the '{@link #getTargetExpression() <em>Target Expression</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTargetExpression()
+ * @generated
+ * @ordered
+ */
+ protected AbstractExpression targetExpression;
+
+ /**
+ * The cached value of the '{@link #getVarName() <em>Var Name</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getVarName()
+ * @generated
+ * @ordered
+ */
+ protected Identifier varName;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected LetExpressionImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ExpressionPackage.Literals.LET_EXPRESSION;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public AbstractExpression getVarExpression() {
+ return varExpression;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetVarExpression(AbstractExpression newVarExpression, NotificationChain msgs) {
+ AbstractExpression oldVarExpression = varExpression;
+ varExpression = newVarExpression;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ExpressionPackage.LET_EXPRESSION__VAR_EXPRESSION, oldVarExpression, newVarExpression);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setVarExpression(AbstractExpression newVarExpression) {
+ if (newVarExpression != varExpression) {
+ NotificationChain msgs = null;
+ if (varExpression != null)
+ msgs = ((InternalEObject)varExpression).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ExpressionPackage.LET_EXPRESSION__VAR_EXPRESSION, null, msgs);
+ if (newVarExpression != null)
+ msgs = ((InternalEObject)newVarExpression).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ExpressionPackage.LET_EXPRESSION__VAR_EXPRESSION, null, msgs);
+ msgs = basicSetVarExpression(newVarExpression, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ExpressionPackage.LET_EXPRESSION__VAR_EXPRESSION, newVarExpression, newVarExpression));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public AbstractExpression getTargetExpression() {
+ return targetExpression;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetTargetExpression(AbstractExpression newTargetExpression, NotificationChain msgs) {
+ AbstractExpression oldTargetExpression = targetExpression;
+ targetExpression = newTargetExpression;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ExpressionPackage.LET_EXPRESSION__TARGET_EXPRESSION, oldTargetExpression, newTargetExpression);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setTargetExpression(AbstractExpression newTargetExpression) {
+ if (newTargetExpression != targetExpression) {
+ NotificationChain msgs = null;
+ if (targetExpression != null)
+ msgs = ((InternalEObject)targetExpression).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ExpressionPackage.LET_EXPRESSION__TARGET_EXPRESSION, null, msgs);
+ if (newTargetExpression != null)
+ msgs = ((InternalEObject)newTargetExpression).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ExpressionPackage.LET_EXPRESSION__TARGET_EXPRESSION, null, msgs);
+ msgs = basicSetTargetExpression(newTargetExpression, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ExpressionPackage.LET_EXPRESSION__TARGET_EXPRESSION, newTargetExpression, newTargetExpression));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Identifier getVarName() {
+ return varName;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetVarName(Identifier newVarName, NotificationChain msgs) {
+ Identifier oldVarName = varName;
+ varName = newVarName;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ExpressionPackage.LET_EXPRESSION__VAR_NAME, oldVarName, newVarName);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setVarName(Identifier newVarName) {
+ if (newVarName != varName) {
+ NotificationChain msgs = null;
+ if (varName != null)
+ msgs = ((InternalEObject)varName).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ExpressionPackage.LET_EXPRESSION__VAR_NAME, null, msgs);
+ if (newVarName != null)
+ msgs = ((InternalEObject)newVarName).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ExpressionPackage.LET_EXPRESSION__VAR_NAME, null, msgs);
+ msgs = basicSetVarName(newVarName, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ExpressionPackage.LET_EXPRESSION__VAR_NAME, newVarName, newVarName));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case ExpressionPackage.LET_EXPRESSION__VAR_EXPRESSION:
+ return basicSetVarExpression(null, msgs);
+ case ExpressionPackage.LET_EXPRESSION__TARGET_EXPRESSION:
+ return basicSetTargetExpression(null, msgs);
+ case ExpressionPackage.LET_EXPRESSION__VAR_NAME:
+ return basicSetVarName(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 ExpressionPackage.LET_EXPRESSION__VAR_EXPRESSION:
+ return getVarExpression();
+ case ExpressionPackage.LET_EXPRESSION__TARGET_EXPRESSION:
+ return getTargetExpression();
+ case ExpressionPackage.LET_EXPRESSION__VAR_NAME:
+ return getVarName();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case ExpressionPackage.LET_EXPRESSION__VAR_EXPRESSION:
+ setVarExpression((AbstractExpression)newValue);
+ return;
+ case ExpressionPackage.LET_EXPRESSION__TARGET_EXPRESSION:
+ setTargetExpression((AbstractExpression)newValue);
+ return;
+ case ExpressionPackage.LET_EXPRESSION__VAR_NAME:
+ setVarName((Identifier)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case ExpressionPackage.LET_EXPRESSION__VAR_EXPRESSION:
+ setVarExpression((AbstractExpression)null);
+ return;
+ case ExpressionPackage.LET_EXPRESSION__TARGET_EXPRESSION:
+ setTargetExpression((AbstractExpression)null);
+ return;
+ case ExpressionPackage.LET_EXPRESSION__VAR_NAME:
+ setVarName((Identifier)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case ExpressionPackage.LET_EXPRESSION__VAR_EXPRESSION:
+ return varExpression != null;
+ case ExpressionPackage.LET_EXPRESSION__TARGET_EXPRESSION:
+ return targetExpression != null;
+ case ExpressionPackage.LET_EXPRESSION__VAR_NAME:
+ return varName != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //LetExpressionImpl
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/impl/ListLiteralImpl.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/impl/ListLiteralImpl.java
new file mode 100644
index 0000000..f97e080
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/impl/ListLiteralImpl.java
@@ -0,0 +1,154 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: ListLiteralImpl.java,v 1.1 2008/02/27 13:21:08 sefftinge Exp $
+ */
+package org.eclipse.xpand3.expression.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.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.xpand3.expression.AbstractExpression;
+import org.eclipse.xpand3.expression.ExpressionPackage;
+import org.eclipse.xpand3.expression.ListLiteral;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>List Literal</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.xpand3.expression.impl.ListLiteralImpl#getElements <em>Elements</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ListLiteralImpl extends AbstractExpressionImpl implements ListLiteral {
+ /**
+ * The cached value of the '{@link #getElements() <em>Elements</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getElements()
+ * @generated
+ * @ordered
+ */
+ protected EList<AbstractExpression> elements;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ListLiteralImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ExpressionPackage.Literals.LIST_LITERAL;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<AbstractExpression> getElements() {
+ if (elements == null) {
+ elements = new EObjectContainmentEList<AbstractExpression>(AbstractExpression.class, this, ExpressionPackage.LIST_LITERAL__ELEMENTS);
+ }
+ return elements;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case ExpressionPackage.LIST_LITERAL__ELEMENTS:
+ return ((InternalEList<?>)getElements()).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 ExpressionPackage.LIST_LITERAL__ELEMENTS:
+ return getElements();
+ }
+ 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 ExpressionPackage.LIST_LITERAL__ELEMENTS:
+ getElements().clear();
+ getElements().addAll((Collection<? extends AbstractExpression>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case ExpressionPackage.LIST_LITERAL__ELEMENTS:
+ getElements().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case ExpressionPackage.LIST_LITERAL__ELEMENTS:
+ return elements != null && !elements.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //ListLiteralImpl
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/impl/LiteralImpl.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/impl/LiteralImpl.java
new file mode 100644
index 0000000..342b609
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/expression/impl/LiteralImpl.java
@@ -0,0 +1,180 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: LiteralImpl.java,v 1.1 2008/02/27 13:21:08 sefftinge Exp $
+ */
+package org.eclipse.xpand3.expression.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.xpand3.Identifier;
+
+import org.eclipse.xpand3.expression.ExpressionPackage;
+import org.eclipse.xpand3.expression.Literal;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Literal</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.xpand3.expression.impl.LiteralImpl#getLiteralValue <em>Literal Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class LiteralImpl extends AbstractExpressionImpl implements Literal {
+ /**
+ * The cached value of the '{@link #getLiteralValue() <em>Literal Value</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLiteralValue()
+ * @generated
+ * @ordered
+ */
+ protected Identifier literalValue;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected LiteralImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ExpressionPackage.Literals.LITERAL;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Identifier getLiteralValue() {
+ return literalValue;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetLiteralValue(Identifier newLiteralValue, NotificationChain msgs) {
+ Identifier oldLiteralValue = literalValue;
+ literalValue = newLiteralValue;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ExpressionPackage.LITERAL__LITERAL_VALUE, oldLiteralValue, newLiteralValue);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setLiteralValue(Identifier newLiteralValue) {
+ if (newLiteralValue != literalValue) {
+ NotificationChain msgs = null;