Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorcletavernie2011-10-25 13:17:14 +0000
committercletavernie2011-10-25 13:17:14 +0000
commitfd7c7cafac4b92a3cee707f1232b9216e891630e (patch)
treecbed1949de3f058cb16c706b13b00cfa8d853cbd /plugins
parent957f5ab03dc547473a1d193f727e03c2060d0432 (diff)
downloadorg.eclipse.papyrus-fd7c7cafac4b92a3cee707f1232b9216e891630e.tar.gz
org.eclipse.papyrus-fd7c7cafac4b92a3cee707f1232b9216e891630e.tar.xz
org.eclipse.papyrus-fd7c7cafac4b92a3cee707f1232b9216e891630e.zip
359057: [Architecture - SVN - Build] The Papyrus architecture should be refactored
https://bugs.eclipse.org/bugs/show_bug.cgi?id=359057
Diffstat (limited to 'plugins')
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/.antlr-generator-3.0.1.jarbin0 -> 1227462 bytes
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/.antlr-generator-3.2.0.jarbin0 -> 1482584 bytes
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/.classpath9
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/.project40
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/META-INF/MANIFEST.MF36
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/about.html28
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/build.properties10
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/model/Ecore.ecore522
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/model/Ecore.genmodel346
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/model/UML.ecore16088
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/model/UML.genmodel4474
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/plugin.properties12
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/plugin.xml18
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/plugin.xml_gen17
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/AbstractVSLRuntimeModule.java117
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore808
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.genmodel342
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.xmi1124
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSLStandaloneSetupGenerated.java43
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parseTreeConstruction/VSLParsetreeConstructor.java6975
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/VSLAntlrTokenFileProvider.java15
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/VSLParser.java39
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g2754
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.tokens84
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSLLexer.java3295
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSLParser.java7225
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/services/VSLGrammarAccess.java2141
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/AdditiveExpression.java94
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/AndOrXorExpression.java94
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/BooleanLiteralRule.java53
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/CollectionOrTuple.java85
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/ConditionalExpression.java94
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/DataTypeName.java113
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/DateTimeLiteralRule.java53
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/DefaultLiteralRule.java53
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/DurationObsExpression.java139
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/DurationObsName.java113
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/EqualityExpression.java94
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/Expression.java85
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/InstantObsExpression.java139
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/InstantObsName.java113
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/IntegerLiteralRule.java53
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/Interval.java166
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/JitterExp.java112
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/ListOfValueNamePairs.java77
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/ListOfValues.java77
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/Literal.java85
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/MultiplicativeExpression.java94
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/NameOrChoiceOrBehaviorCall.java140
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/NullLiteralRule.java53
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/NumberLiteralRule.java53
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/OperationCallExpression.java113
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/PrimaryExpression.java112
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/PropertyCallExpression.java86
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/QualifiedName.java113
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/RealLiteralRule.java53
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/RelationalExpression.java94
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/StringLiteralRule.java53
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/SuffixExpression.java85
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/TimeExpression.java53
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/Tuple.java85
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/UnaryExpression.java139
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/UnlimitedLiteralRule.java53
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/VSLFactory.java389
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/VSLPackage.java3277
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/ValueNamePair.java113
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/ValueSpecification.java53
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/VariableDeclaration.java166
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/AdditiveExpressionImpl.java259
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/AndOrXorExpressionImpl.java259
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/BooleanLiteralRuleImpl.java80
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/CollectionOrTupleImpl.java231
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/ConditionalExpressionImpl.java259
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/DataTypeNameImpl.java298
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/DateTimeLiteralRuleImpl.java80
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/DefaultLiteralRuleImpl.java80
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/DurationObsExpressionImpl.java374
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/DurationObsNameImpl.java298
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/EqualityExpressionImpl.java259
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/ExpressionImpl.java231
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/InstantObsExpressionImpl.java374
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/InstantObsNameImpl.java298
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/IntegerLiteralRuleImpl.java80
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/IntervalImpl.java429
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/JitterExpImpl.java302
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/ListOfValueNamePairsImpl.java205
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/ListOfValuesImpl.java205
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/LiteralImpl.java214
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/MultiplicativeExpressionImpl.java259
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/NameOrChoiceOrBehaviorCallImpl.java369
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/NullLiteralRuleImpl.java80
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/NumberLiteralRuleImpl.java80
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/OperationCallExpressionImpl.java297
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/PrimaryExpressionImpl.java304
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/PropertyCallExpressionImpl.java210
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/QualifiedNameImpl.java297
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/RealLiteralRuleImpl.java80
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/RelationalExpressionImpl.java259
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/StringLiteralRuleImpl.java80
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/SuffixExpressionImpl.java231
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/TimeExpressionImpl.java80
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/TupleImpl.java231
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/UnaryExpressionImpl.java374
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/UnlimitedLiteralRuleImpl.java80
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/VSLFactoryImpl.java566
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/VSLPackageImpl.java1990
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/ValueNamePairImpl.java298
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/ValueSpecificationImpl.java82
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/VariableDeclarationImpl.java430
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/util/VSLAdapterFactory.java896
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/util/VSLResourceFactoryImpl.java59
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/util/VSLResourceImpl.java34
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/util/VSLSwitch.java1034
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/util/VSLXMLProcessor.java58
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/validation/AbstractVSLJavaValidator.java20
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src/org/eclipse/papyrus/marte/vsl/Copy of VSLPostProcessor.ext51
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src/org/eclipse/papyrus/marte/vsl/GenerateVSL.mwe2110
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src/org/eclipse/papyrus/marte/vsl/VSL.xtext208
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src/org/eclipse/papyrus/marte/vsl/VSLPostProcessor.ext84
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src/org/eclipse/papyrus/marte/vsl/VSLRuntimeModule.java21
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src/org/eclipse/papyrus/marte/vsl/VSLStandaloneSetup.java27
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src/org/eclipse/papyrus/marte/vsl/extensions/CopyOfVSLContextUtil.java310
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src/org/eclipse/papyrus/marte/vsl/extensions/VSLContextUtil.java257
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src/org/eclipse/papyrus/marte/vsl/extensions/VSLSerializationUtil.java380
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src/org/eclipse/papyrus/marte/vsl/extensions/VSLTypeInferenceUtil.java718
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src/org/eclipse/papyrus/marte/vsl/extensions/XtendUtil.java41
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src/org/eclipse/papyrus/marte/vsl/formatting/VSLFormatter.java39
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src/org/eclipse/papyrus/marte/vsl/scoping/VSLScopeProvider.java1028
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src/org/eclipse/papyrus/marte/vsl/scoping/visitors/ScopingVisitors.java600
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src/org/eclipse/papyrus/marte/vsl/scoping/visitors/Visitor.java20
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src/org/eclipse/papyrus/marte/vsl/validation/VSLErrorMessage.java162
-rw-r--r--plugins/marte/org.eclipse.papyrus.marte.vsl/src/org/eclipse/papyrus/marte/vsl/validation/VSLJavaValidator.java1199
132 files changed, 72679 insertions, 0 deletions
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/.antlr-generator-3.0.1.jar b/plugins/marte/org.eclipse.papyrus.marte.vsl/.antlr-generator-3.0.1.jar
new file mode 100644
index 00000000000..4332d046be1
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/.antlr-generator-3.0.1.jar
Binary files differ
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/.antlr-generator-3.2.0.jar b/plugins/marte/org.eclipse.papyrus.marte.vsl/.antlr-generator-3.2.0.jar
new file mode 100644
index 00000000000..42434924055
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/.antlr-generator-3.2.0.jar
Binary files differ
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/.classpath b/plugins/marte/org.eclipse.papyrus.marte.vsl/.classpath
new file mode 100644
index 00000000000..48aa7f6e91a
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/.classpath
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="xtend-gen"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="src" path="src-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"/>
+</classpath>
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/.project b/plugins/marte/org.eclipse.papyrus.marte.vsl/.project
new file mode 100644
index 00000000000..a58c8750303
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/.project
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.papyrus.marte.vsl</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.xtend.shared.ui.xtendBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+ <nature>org.eclipse.xtend.shared.ui.xtendXPandNature</nature>
+ </natures>
+</projectDescription>
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/META-INF/MANIFEST.MF b/plugins/marte/org.eclipse.papyrus.marte.vsl/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..781ae1be4ca
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/META-INF/MANIFEST.MF
@@ -0,0 +1,36 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-Vendor: %providerName
+Bundle-Version: 0.9.0.qualifier
+Bundle-SymbolicName: org.eclipse.papyrus.marte.vsl; singleton:=true
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.eclipse.xtext,
+ org.eclipse.xtext.generator;resolution:=optional,
+ org.apache.commons.logging;resolution:=optional,
+ org.eclipse.emf.codegen.ecore;resolution:=optional,
+ org.eclipse.emf.mwe.utils;resolution:=optional,
+ org.eclipse.emf.mwe2.launch;resolution:=optional,
+ com.ibm.icu;resolution:=optional,
+ org.eclipse.xtext.xtend;resolution:=optional,
+ org.eclipse.xtext.util,
+ org.eclipse.emf.ecore,
+ org.eclipse.emf.common,
+ org.antlr.runtime,
+ org.eclipse.uml2.uml;bundle-version="3.1.0",
+ org.eclipse.uml2.codegen.ecore;bundle-version="1.6.0"
+Import-Package: org.apache.log4j
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Export-Package: org.eclipse.papyrus.marte.vsl,
+ org.eclipse.papyrus.marte.vsl.extensions,
+ org.eclipse.papyrus.marte.vsl.parseTreeConstruction,
+ org.eclipse.papyrus.marte.vsl.parser.antlr,
+ org.eclipse.papyrus.marte.vsl.parser.antlr.internal,
+ org.eclipse.papyrus.marte.vsl.scoping,
+ org.eclipse.papyrus.marte.vsl.scoping.visitors,
+ org.eclipse.papyrus.marte.vsl.services,
+ org.eclipse.papyrus.marte.vsl.vSL,
+ org.eclipse.papyrus.marte.vsl.vSL.impl,
+ org.eclipse.papyrus.marte.vsl.vSL.util,
+ org.eclipse.papyrus.marte.vsl.validation
+Bundle-ClassPath: .
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/about.html b/plugins/marte/org.eclipse.papyrus.marte.vsl/about.html
new file mode 100644
index 00000000000..82d49bf5f81
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>June 5, 2007</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/build.properties b/plugins/marte/org.eclipse.papyrus.marte.vsl/build.properties
new file mode 100644
index 00000000000..1f2e279b4ef
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/build.properties
@@ -0,0 +1,10 @@
+source.. = src/,\
+ src-gen/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml,\
+ about.html,\
+ plugin.properties,\
+ model/
+source.. = src/,\
+ src-gen/
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/model/Ecore.ecore b/plugins/marte/org.eclipse.papyrus.marte.vsl/model/Ecore.ecore
new file mode 100644
index 00000000000..c94b1e50ec4
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/model/Ecore.ecore
@@ -0,0 +1,522 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="ecore"
+ nsURI="http://www.eclipse.org/emf/2002/Ecore" nsPrefix="ecore">
+ <eClassifiers xsi:type="ecore:EClass" name="EAttribute" eSuperTypes="#//EStructuralFeature">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
+ <details key="constraints" value="ConsistentTransient"/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="iD" eType="#//EBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eAttributeType" lowerBound="1"
+ eType="#//EDataType" changeable="false" volatile="true" transient="true" derived="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="EAnnotation" eSuperTypes="#//EModelElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
+ <details key="constraints" value="WellFormedSourceURI"/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="source" eType="#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="details" upperBound="-1"
+ eType="#//EStringToStringMapEntry" containment="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eModelElement" eType="#//EModelElement"
+ transient="true" resolveProxies="false" eOpposite="#//EModelElement/eAnnotations"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="contents" upperBound="-1"
+ eType="#//EObject" containment="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="references" upperBound="-1"
+ eType="#//EObject"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="EClass" eSuperTypes="#//EClassifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
+ <details key="constraints" value="InterfaceIsAbstract AtMostOneID UniqueFeatureNames UniqueOperationSignatures NoCircularSuperTypes WellFormedMapEntryClass ConsistentSuperTypes DisjointFeatureAndOperationSignatures"/>
+ </eAnnotations>
+ <eOperations name="isSuperTypeOf" eType="#//EBoolean">
+ <eParameters name="someClass" eType="#//EClass"/>
+ </eOperations>
+ <eOperations name="getFeatureCount" eType="#//EInt"/>
+ <eOperations name="getEStructuralFeature" eType="#//EStructuralFeature">
+ <eParameters name="featureID" eType="#//EInt"/>
+ </eOperations>
+ <eOperations name="getFeatureID" eType="#//EInt">
+ <eParameters name="feature" eType="#//EStructuralFeature"/>
+ </eOperations>
+ <eOperations name="getEStructuralFeature" eType="#//EStructuralFeature">
+ <eParameters name="featureName" eType="#//EString"/>
+ </eOperations>
+ <eOperations name="getOperationCount" eType="#//EInt"/>
+ <eOperations name="getEOperation" eType="#//EOperation">
+ <eParameters name="operationID" eType="#//EInt"/>
+ </eOperations>
+ <eOperations name="getOperationID" eType="#//EInt">
+ <eParameters name="operation" eType="#//EOperation"/>
+ </eOperations>
+ <eOperations name="getOverride" eType="#//EOperation">
+ <eParameters name="operation" eType="#//EOperation"/>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="abstract" eType="#//EBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="interface" eType="#//EBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eSuperTypes" upperBound="-1"
+ eType="#//EClass" unsettable="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="suppressedIsSetVisibility" value="true"/>
+ <details key="suppressedUnsetVisibility" value="true"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eOperations" upperBound="-1"
+ eType="#//EOperation" containment="true" resolveProxies="false" eOpposite="#//EOperation/eContainingClass"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eAllAttributes" upperBound="-1"
+ eType="#//EAttribute" changeable="false" volatile="true" transient="true"
+ derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eAllReferences" upperBound="-1"
+ eType="#//EReference" changeable="false" volatile="true" transient="true"
+ derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eReferences" upperBound="-1"
+ eType="#//EReference" changeable="false" volatile="true" transient="true"
+ derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eAttributes" upperBound="-1"
+ eType="#//EAttribute" changeable="false" volatile="true" transient="true"
+ derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eAllContainments" upperBound="-1"
+ eType="#//EReference" changeable="false" volatile="true" transient="true"
+ derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eAllOperations" upperBound="-1"
+ eType="#//EOperation" changeable="false" volatile="true" transient="true"
+ derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eAllStructuralFeatures"
+ upperBound="-1" eType="#//EStructuralFeature" changeable="false" volatile="true"
+ transient="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eAllSuperTypes" upperBound="-1"
+ eType="#//EClass" changeable="false" volatile="true" transient="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eIDAttribute" eType="#//EAttribute"
+ changeable="false" volatile="true" transient="true" derived="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eStructuralFeatures" upperBound="-1"
+ eType="#//EStructuralFeature" containment="true" resolveProxies="false" eOpposite="#//EStructuralFeature/eContainingClass"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eGenericSuperTypes" upperBound="-1"
+ eType="#//EGenericType" unsettable="true" containment="true" resolveProxies="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="suppressedIsSetVisibility" value="true"/>
+ <details key="suppressedUnsetVisibility" value="true"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eAllGenericSuperTypes"
+ upperBound="-1" eType="#//EGenericType" changeable="false" volatile="true"
+ transient="true" derived="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="EClassifier" abstract="true" eSuperTypes="#//ENamedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
+ <details key="constraints" value="WellFormedInstanceTypeName UniqueTypeParameterNames"/>
+ </eAnnotations>
+ <eOperations name="isInstance" eType="#//EBoolean">
+ <eParameters name="object" eType="#//EJavaObject"/>
+ </eOperations>
+ <eOperations name="getClassifierID" eType="#//EInt"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="instanceClassName" eType="#//EString"
+ volatile="true" unsettable="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="suppressedIsSetVisibility" value="true"/>
+ <details key="suppressedUnsetVisibility" value="true"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="instanceClass" changeable="false"
+ volatile="true" transient="true" derived="true">
+ <eGenericType eClassifier="#//EJavaClass">
+ <eTypeArguments/>
+ </eGenericType>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="defaultValue" eType="#//EJavaObject"
+ changeable="false" volatile="true" transient="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="instanceTypeName" eType="#//EString"
+ volatile="true" unsettable="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="suppressedIsSetVisibility" value="true"/>
+ <details key="suppressedUnsetVisibility" value="true"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ePackage" eType="#//EPackage"
+ changeable="false" transient="true" eOpposite="#//EPackage/eClassifiers"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eTypeParameters" upperBound="-1"
+ eType="#//ETypeParameter" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="EDataType" eSuperTypes="#//EClassifier">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="serializable" eType="#//EBoolean"
+ defaultValueLiteral="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="EEnum" eSuperTypes="#//EDataType">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
+ <details key="constraints" value="UniqueEnumeratorNames UniqueEnumeratorLiterals"/>
+ </eAnnotations>
+ <eOperations name="getEEnumLiteral" eType="#//EEnumLiteral">
+ <eParameters name="name" eType="#//EString"/>
+ </eOperations>
+ <eOperations name="getEEnumLiteral" eType="#//EEnumLiteral">
+ <eParameters name="value" eType="#//EInt"/>
+ </eOperations>
+ <eOperations name="getEEnumLiteralByLiteral" eType="#//EEnumLiteral">
+ <eParameters name="literal" eType="#//EString"/>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eLiterals" upperBound="-1"
+ eType="#//EEnumLiteral" containment="true" resolveProxies="false" eOpposite="#//EEnumLiteral/eEnum"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="EEnumLiteral" eSuperTypes="#//ENamedElement">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="#//EInt"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="instance" eType="#//EEnumerator"
+ transient="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="literal" eType="#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eEnum" eType="#//EEnum"
+ changeable="false" transient="true" resolveProxies="false" eOpposite="#//EEnum/eLiterals"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="EFactory" eSuperTypes="#//EModelElement">
+ <eOperations name="create" eType="#//EObject">
+ <eParameters name="eClass" eType="#//EClass"/>
+ </eOperations>
+ <eOperations name="createFromString" eType="#//EJavaObject">
+ <eParameters name="eDataType" eType="#//EDataType"/>
+ <eParameters name="literalValue" eType="#//EString"/>
+ </eOperations>
+ <eOperations name="convertToString" eType="#//EString">
+ <eParameters name="eDataType" eType="#//EDataType"/>
+ <eParameters name="instanceValue" eType="#//EJavaObject"/>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ePackage" lowerBound="1"
+ eType="#//EPackage" transient="true" resolveProxies="false" eOpposite="#//EPackage/eFactoryInstance"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="EModelElement" abstract="true">
+ <eOperations name="getEAnnotation" eType="#//EAnnotation">
+ <eParameters name="source" eType="#//EString"/>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eAnnotations" upperBound="-1"
+ eType="#//EAnnotation" containment="true" resolveProxies="false" eOpposite="#//EAnnotation/eModelElement"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ENamedElement" abstract="true" eSuperTypes="#//EModelElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
+ <details key="constraints" value="WellFormedName"/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="EObject">
+ <eOperations name="eClass" eType="#//EClass"/>
+ <eOperations name="eIsProxy" eType="#//EBoolean"/>
+ <eOperations name="eResource" eType="#//EResource"/>
+ <eOperations name="eContainer" eType="#//EObject"/>
+ <eOperations name="eContainingFeature" eType="#//EStructuralFeature"/>
+ <eOperations name="eContainmentFeature" eType="#//EReference"/>
+ <eOperations name="eContents">
+ <eGenericType eClassifier="#//EEList">
+ <eTypeArguments eClassifier="#//EObject"/>
+ </eGenericType>
+ </eOperations>
+ <eOperations name="eAllContents">
+ <eGenericType eClassifier="#//ETreeIterator">
+ <eTypeArguments eClassifier="#//EObject"/>
+ </eGenericType>
+ </eOperations>
+ <eOperations name="eCrossReferences">
+ <eGenericType eClassifier="#//EEList">
+ <eTypeArguments eClassifier="#//EObject"/>
+ </eGenericType>
+ </eOperations>
+ <eOperations name="eGet" eType="#//EJavaObject">
+ <eParameters name="feature" eType="#//EStructuralFeature"/>
+ </eOperations>
+ <eOperations name="eGet" eType="#//EJavaObject">
+ <eParameters name="feature" eType="#//EStructuralFeature"/>
+ <eParameters name="resolve" eType="#//EBoolean"/>
+ </eOperations>
+ <eOperations name="eSet">
+ <eParameters name="feature" eType="#//EStructuralFeature"/>
+ <eParameters name="newValue" eType="#//EJavaObject"/>
+ </eOperations>
+ <eOperations name="eIsSet" eType="#//EBoolean">
+ <eParameters name="feature" eType="#//EStructuralFeature"/>
+ </eOperations>
+ <eOperations name="eUnset">
+ <eParameters name="feature" eType="#//EStructuralFeature"/>
+ </eOperations>
+ <eOperations name="eInvoke" eType="#//EJavaObject" eExceptions="#//EInvocationTargetException">
+ <eParameters name="operation" eType="#//EOperation"/>
+ <eParameters name="arguments">
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
+ <eTypeArguments/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="EOperation" eSuperTypes="#//ETypedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
+ <details key="constraints" value="UniqueParameterNames UniqueTypeParameterNames NoRepeatingVoid"/>
+ </eAnnotations>
+ <eOperations name="getOperationID" eType="#//EInt"/>
+ <eOperations name="isOverrideOf" eType="#//EBoolean">
+ <eParameters name="someOperation" eType="#//EOperation"/>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eContainingClass" eType="#//EClass"
+ changeable="false" transient="true" resolveProxies="false" eOpposite="#//EClass/eOperations"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eTypeParameters" upperBound="-1"
+ eType="#//ETypeParameter" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eParameters" upperBound="-1"
+ eType="#//EParameter" containment="true" resolveProxies="false" eOpposite="#//EParameter/eOperation"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eExceptions" upperBound="-1"
+ eType="#//EClassifier" unsettable="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="suppressedIsSetVisibility" value="true"/>
+ <details key="suppressedUnsetVisibility" value="true"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eGenericExceptions" upperBound="-1"
+ eType="#//EGenericType" unsettable="true" containment="true" resolveProxies="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="suppressedIsSetVisibility" value="true"/>
+ <details key="suppressedUnsetVisibility" value="true"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="EPackage" eSuperTypes="#//ENamedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
+ <details key="constraints" value="WellFormedNsURI WellFormedNsPrefix UniqueSubpackageNames UniqueClassifierNames UniqueNsURIs"/>
+ </eAnnotations>
+ <eOperations name="getEClassifier" eType="#//EClassifier">
+ <eParameters name="name" eType="#//EString"/>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="nsURI" eType="#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="nsPrefix" eType="#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eFactoryInstance" lowerBound="1"
+ eType="#//EFactory" transient="true" resolveProxies="false" eOpposite="#//EFactory/ePackage"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eClassifiers" upperBound="-1"
+ eType="#//EClassifier" containment="true" eOpposite="#//EClassifier/ePackage"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eSubpackages" upperBound="-1"
+ eType="#//EPackage" containment="true" eOpposite="#//EPackage/eSuperPackage"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eSuperPackage" eType="#//EPackage"
+ changeable="false" transient="true" eOpposite="#//EPackage/eSubpackages"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="EParameter" eSuperTypes="#//ETypedElement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eOperation" eType="#//EOperation"
+ changeable="false" transient="true" resolveProxies="false" eOpposite="#//EOperation/eParameters"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="EReference" eSuperTypes="#//EStructuralFeature">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
+ <details key="constraints" value="ConsistentOpposite SingleContainer ConsistentKeys ConsistentUnique"/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="containment" eType="#//EBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="container" eType="#//EBoolean"
+ changeable="false" volatile="true" transient="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="resolveProxies" eType="#//EBoolean"
+ defaultValueLiteral="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eOpposite" eType="#//EReference"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eReferenceType" lowerBound="1"
+ eType="#//EClass" changeable="false" volatile="true" transient="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eKeys" upperBound="-1"
+ eType="#//EAttribute"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="EStructuralFeature" abstract="true"
+ eSuperTypes="#//ETypedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
+ <details key="constraints" value="ValidDefaultValueLiteral"/>
+ </eAnnotations>
+ <eOperations name="getFeatureID" eType="#//EInt"/>
+ <eOperations name="getContainerClass">
+ <eGenericType eClassifier="#//EJavaClass">
+ <eTypeArguments/>
+ </eGenericType>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="changeable" eType="#//EBoolean"
+ defaultValueLiteral="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="volatile" eType="#//EBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="transient" eType="#//EBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="defaultValueLiteral" eType="#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="defaultValue" eType="#//EJavaObject"
+ changeable="false" volatile="true" transient="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="unsettable" eType="#//EBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="derived" eType="#//EBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eContainingClass" eType="#//EClass"
+ changeable="false" transient="true" resolveProxies="false" eOpposite="#//EClass/eStructuralFeatures"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ETypedElement" abstract="true" eSuperTypes="#//ENamedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
+ <details key="constraints" value="ValidLowerBound ValidUpperBound ConsistentBounds ValidType"/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="ordered" eType="#//EBoolean"
+ defaultValueLiteral="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="unique" eType="#//EBoolean"
+ defaultValueLiteral="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="lowerBound" eType="#//EInt"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="upperBound" eType="#//EInt"
+ defaultValueLiteral="1"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="many" eType="#//EBoolean"
+ changeable="false" volatile="true" transient="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="required" eType="#//EBoolean"
+ changeable="false" volatile="true" transient="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eType" eType="#//EClassifier"
+ volatile="true" unsettable="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="suppressedIsSetVisibility" value="true"/>
+ <details key="suppressedUnsetVisibility" value="true"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eGenericType" eType="#//EGenericType"
+ volatile="true" unsettable="true" containment="true" resolveProxies="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="suppressedIsSetVisibility" value="true"/>
+ <details key="suppressedUnsetVisibility" value="true"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="EBigDecimal" instanceClassName="java.math.BigDecimal">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="baseType" value="http://www.w3.org/2001/XMLSchema#decimal"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="EBigInteger" instanceClassName="java.math.BigInteger">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="baseType" value="http://www.w3.org/2001/XMLSchema#integer"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="EBoolean" instanceClassName="boolean">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="baseType" value="http://www.w3.org/2001/XMLSchema#boolean"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="EBooleanObject" instanceClassName="java.lang.Boolean">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="baseType" value="EBoolean"/>
+ <details key="name" value="EBoolean:Object"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="EByte" instanceClassName="byte">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="baseType" value="http://www.w3.org/2001/XMLSchema#byte"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="EByteArray" instanceClassName="byte[]">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="baseType" value="http://www.w3.org/2001/XMLSchema#hexBinary"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="EByteObject" instanceClassName="java.lang.Byte">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="baseType" value="EByte"/>
+ <details key="name" value="EByte:Object"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="EChar" instanceClassName="char"/>
+ <eClassifiers xsi:type="ecore:EDataType" name="ECharacterObject" instanceClassName="java.lang.Character">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="baseType" value="EChar"/>
+ <details key="name" value="EChar:Object"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="EDate" instanceClassName="java.util.Date"/>
+ <eClassifiers xsi:type="ecore:EDataType" name="EDiagnosticChain" instanceClassName="org.eclipse.emf.common.util.DiagnosticChain"
+ serializable="false"/>
+ <eClassifiers xsi:type="ecore:EDataType" name="EDouble" instanceClassName="double">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="baseType" value="http://www.w3.org/2001/XMLSchema#double"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="EDoubleObject" instanceClassName="java.lang.Double">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="baseType" value="EDouble"/>
+ <details key="name" value="EDouble:Object"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="EEList" instanceClassName="org.eclipse.emf.common.util.EList"
+ serializable="false">
+ <eTypeParameters name="E"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="EEnumerator" instanceClassName="org.eclipse.emf.common.util.Enumerator"
+ serializable="false"/>
+ <eClassifiers xsi:type="ecore:EDataType" name="EFeatureMap" instanceClassName="org.eclipse.emf.ecore.util.FeatureMap"
+ serializable="false"/>
+ <eClassifiers xsi:type="ecore:EDataType" name="EFeatureMapEntry" instanceClassName="org.eclipse.emf.ecore.util.FeatureMap$Entry"
+ serializable="false"/>
+ <eClassifiers xsi:type="ecore:EDataType" name="EFloat" instanceClassName="float">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="baseType" value="http://www.w3.org/2001/XMLSchema#float"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="EFloatObject" instanceClassName="java.lang.Float">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="baseType" value="EFloat"/>
+ <details key="name" value="EFloat:Object"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="EInt" instanceClassName="int">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="baseType" value="http://www.w3.org/2001/XMLSchema#int"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="EIntegerObject" instanceClassName="java.lang.Integer">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="baseType" value="EInt"/>
+ <details key="name" value="EInt:Object"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="EJavaClass" instanceClassName="java.lang.Class">
+ <eTypeParameters name="T"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="EJavaObject" instanceClassName="java.lang.Object"/>
+ <eClassifiers xsi:type="ecore:EDataType" name="ELong" instanceClassName="long">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="baseType" value="http://www.w3.org/2001/XMLSchema#long"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="ELongObject" instanceClassName="java.lang.Long">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="baseType" value="ELong"/>
+ <details key="name" value="ELong:Object"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="EMap" instanceClassName="java.util.Map"
+ serializable="false">
+ <eTypeParameters name="K"/>
+ <eTypeParameters name="V"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="EResource" instanceClassName="org.eclipse.emf.ecore.resource.Resource"
+ serializable="false"/>
+ <eClassifiers xsi:type="ecore:EDataType" name="EResourceSet" instanceClassName="org.eclipse.emf.ecore.resource.ResourceSet"
+ serializable="false"/>
+ <eClassifiers xsi:type="ecore:EDataType" name="EShort" instanceClassName="short">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="baseType" value="http://www.w3.org/2001/XMLSchema#short"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="EShortObject" instanceClassName="java.lang.Short">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="baseType" value="EShort"/>
+ <details key="name" value="EShort:Object"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="EString" instanceClassName="java.lang.String">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="baseType" value="http://www.w3.org/2001/XMLSchema#string"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="EStringToStringMapEntry" instanceClassName="java.util.Map$Entry">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="key" eType="#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="ETreeIterator" instanceClassName="org.eclipse.emf.common.util.TreeIterator"
+ serializable="false">
+ <eTypeParameters name="E"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="EGenericType">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
+ <details key="constraints" value="ConsistentType ConsistentBounds ConsistentArguments"/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eUpperBound" eType="#//EGenericType"
+ containment="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eTypeArguments" upperBound="-1"
+ eType="#//EGenericType" containment="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eRawType" lowerBound="1"
+ eType="#//EClassifier" changeable="false" transient="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eLowerBound" eType="#//EGenericType"
+ containment="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eTypeParameter" eType="#//ETypeParameter"
+ resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eClassifier" eType="#//EClassifier"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ETypeParameter" eSuperTypes="#//ENamedElement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eBounds" upperBound="-1"
+ eType="#//EGenericType" containment="true" resolveProxies="false"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="EInvocationTargetException" instanceClassName="java.lang.reflect.InvocationTargetException"
+ serializable="false"/>
+</ecore:EPackage>
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/model/Ecore.genmodel b/plugins/marte/org.eclipse.papyrus.marte.vsl/model/Ecore.genmodel
new file mode 100644
index 00000000000..dfa353c7157
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/model/Ecore.genmodel
@@ -0,0 +1,346 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+ xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" modelDirectory="/org.eclipse.emf.ecore/src"
+ modelPluginID="org.eclipse.emf.ecore" runtimeJar="true" modelName="Ecore" updateClasspath="false"
+ testsDirectory="" booleanFlagsField="eFlags" booleanFlagsReservedBits="8" importerID="org.eclipse.emf.importer.ecore"
+ containmentProxies="true" minimalReflectiveMethods="false" complianceLevel="5.0"
+ language="en" operationReflection="true">
+ <genAnnotations source="http://www.eclipse.org/emf/2002/GenModel/exporter/org.eclipse.xsd.ecore.exporter">
+ <genAnnotations source="selectedPackages">
+ <details key="http://www.eclipse.org/emf/2002/Ecore" value="Ecore.xsd"/>
+ </genAnnotations>
+ <details key="directoryURI" value="."/>
+ </genAnnotations>
+ <genAnnotations source="http://www.eclipse.org/emf/2002/GenModel/exporter/org.eclipse.xsd.ecore.exporter.xmi">
+ <genAnnotations source="selectedPackages">
+ <details key="http://www.eclipse.org/emf/2002/Ecore" value="EcoreXMI.xsd"/>
+ </genAnnotations>
+ <details key="directoryURI" value="."/>
+ </genAnnotations>
+ <foreignModel>Ecore.ecore</foreignModel>
+ <genPackages prefix="Ecore" basePackage="org.eclipse.emf" disposableProviderFactory="true"
+ multipleEditorPages="false" contentTypeIdentifier="org.eclipse.emf.ecore" ecorePackage="Ecore.ecore#/">
+ <genAnnotations source="http://www.eclipse.org/emf/2002/GenModel/exporter/org.eclipse.xsd.ecore.exporter">
+ <genAnnotations source="Ecore.xsd"/>
+ </genAnnotations>
+ <genAnnotations source="http://www.eclipse.org/emf/2002/GenModel/exporter/org.eclipse.xsd.ecore.exporter.xmi">
+ <genAnnotations source="EcoreXMI.xsd"/>
+ </genAnnotations>
+ <genDataTypes ecoreDataType="Ecore.ecore#//EBigDecimal"/>
+ <genDataTypes ecoreDataType="Ecore.ecore#//EBigInteger"/>
+ <genDataTypes ecoreDataType="Ecore.ecore#//EBoolean"/>
+ <genDataTypes ecoreDataType="Ecore.ecore#//EBooleanObject"/>
+ <genDataTypes ecoreDataType="Ecore.ecore#//EByte"/>
+ <genDataTypes ecoreDataType="Ecore.ecore#//EByteArray"/>
+ <genDataTypes ecoreDataType="Ecore.ecore#//EByteObject"/>
+ <genDataTypes ecoreDataType="Ecore.ecore#//EChar"/>
+ <genDataTypes ecoreDataType="Ecore.ecore#//ECharacterObject"/>
+ <genDataTypes ecoreDataType="Ecore.ecore#//EDate"/>
+ <genDataTypes ecoreDataType="Ecore.ecore#//EDiagnosticChain"/>
+ <genDataTypes ecoreDataType="Ecore.ecore#//EDouble"/>
+ <genDataTypes ecoreDataType="Ecore.ecore#//EDoubleObject"/>
+ <genDataTypes ecoreDataType="Ecore.ecore#//EEList">
+ <genTypeParameters ecoreTypeParameter="Ecore.ecore#//EEList/E"/>
+ </genDataTypes>
+ <genDataTypes ecoreDataType="Ecore.ecore#//EEnumerator"/>
+ <genDataTypes ecoreDataType="Ecore.ecore#//EFeatureMap"/>
+ <genDataTypes ecoreDataType="Ecore.ecore#//EFeatureMapEntry"/>
+ <genDataTypes ecoreDataType="Ecore.ecore#//EFloat"/>
+ <genDataTypes ecoreDataType="Ecore.ecore#//EFloatObject"/>
+ <genDataTypes ecoreDataType="Ecore.ecore#//EInt"/>
+ <genDataTypes ecoreDataType="Ecore.ecore#//EIntegerObject"/>
+ <genDataTypes ecoreDataType="Ecore.ecore#//EJavaClass">
+ <genTypeParameters ecoreTypeParameter="Ecore.ecore#//EJavaClass/T"/>
+ </genDataTypes>
+ <genDataTypes ecoreDataType="Ecore.ecore#//EJavaObject"/>
+ <genDataTypes ecoreDataType="Ecore.ecore#//ELong"/>
+ <genDataTypes ecoreDataType="Ecore.ecore#//ELongObject"/>
+ <genDataTypes ecoreDataType="Ecore.ecore#//EMap">
+ <genTypeParameters ecoreTypeParameter="Ecore.ecore#//EMap/K"/>
+ <genTypeParameters ecoreTypeParameter="Ecore.ecore#//EMap/V"/>
+ </genDataTypes>
+ <genDataTypes ecoreDataType="Ecore.ecore#//EResource"/>
+ <genDataTypes ecoreDataType="Ecore.ecore#//EResourceSet"/>
+ <genDataTypes ecoreDataType="Ecore.ecore#//EShort"/>
+ <genDataTypes ecoreDataType="Ecore.ecore#//EShortObject"/>
+ <genDataTypes ecoreDataType="Ecore.ecore#//EString"/>
+ <genDataTypes ecoreDataType="Ecore.ecore#//ETreeIterator">
+ <genTypeParameters ecoreTypeParameter="Ecore.ecore#//ETreeIterator/E"/>
+ </genDataTypes>
+ <genDataTypes ecoreDataType="Ecore.ecore#//EInvocationTargetException"/>
+ <genClasses ecoreClass="Ecore.ecore#//EAttribute">
+ <genFeatures createChild="false" propertyDescription="Whether the value of this attribute uniquely identifies an object within its containing resource"
+ ecoreFeature="ecore:EAttribute Ecore.ecore#//EAttribute/iD"/>
+ <genFeatures property="Readonly" createChild="false" propertyDescription="The data type of this attribute"
+ ecoreFeature="ecore:EReference Ecore.ecore#//EAttribute/eAttributeType"/>
+ </genClasses>
+ <genClasses ecoreClass="Ecore.ecore#//EAnnotation">
+ <genFeatures createChild="false" propertyDescription="An identifier, typically an absolute URI, that uniquely identifies this kind of annotation"
+ ecoreFeature="ecore:EAttribute Ecore.ecore#//EAnnotation/source"/>
+ <genFeatures property="None" children="true" createChild="false" ecoreFeature="ecore:EReference Ecore.ecore#//EAnnotation/details"/>
+ <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference Ecore.ecore#//EAnnotation/eModelElement"/>
+ <genFeatures property="None" children="true" createChild="false" ecoreFeature="ecore:EReference Ecore.ecore#//EAnnotation/contents"/>
+ <genFeatures notify="false" createChild="false" propertyDescription="Objects referenced by this annotation"
+ propertySortChoices="true" ecoreFeature="ecore:EReference Ecore.ecore#//EAnnotation/references"/>
+ </genClasses>
+ <genClasses ecoreClass="Ecore.ecore#//EClass">
+ <genFeatures createChild="false" propertyDescription="Whether instances of this class can be created"
+ ecoreFeature="ecore:EAttribute Ecore.ecore#//EClass/abstract"/>
+ <genFeatures createChild="false" propertyDescription="Whether no corresponding implementation will be generated for this class"
+ ecoreFeature="ecore:EAttribute Ecore.ecore#//EClass/interface"/>
+ <genFeatures createChild="false" propertyDescription="The immediate super types of this class"
+ propertySortChoices="true" ecoreFeature="ecore:EReference Ecore.ecore#//EClass/eSuperTypes"/>
+ <genFeatures property="None" children="true" createChild="true" propertyCategory=""
+ propertyDescription="The operations defined by this class" ecoreFeature="ecore:EReference Ecore.ecore#//EClass/eOperations"/>
+ <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference Ecore.ecore#//EClass/eAllAttributes"/>
+ <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference Ecore.ecore#//EClass/eAllReferences"/>
+ <genFeatures property="None" createChild="false" ecoreFeature="ecore:EReference Ecore.ecore#//EClass/eReferences"/>
+ <genFeatures property="None" createChild="false" ecoreFeature="ecore:EReference Ecore.ecore#//EClass/eAttributes"/>
+ <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference Ecore.ecore#//EClass/eAllContainments"/>
+ <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference Ecore.ecore#//EClass/eAllOperations"/>
+ <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference Ecore.ecore#//EClass/eAllStructuralFeatures"/>
+ <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference Ecore.ecore#//EClass/eAllSuperTypes"/>
+ <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference Ecore.ecore#//EClass/eIDAttribute"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Ecore.ecore#//EClass/eStructuralFeatures"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Ecore.ecore#//EClass/eGenericSuperTypes"/>
+ <genFeatures property="None" notify="false" createChild="false" propertySortChoices="true"
+ ecoreFeature="ecore:EReference Ecore.ecore#//EClass/eAllGenericSuperTypes"/>
+ <genOperations ecoreOperation="Ecore.ecore#//EClass/isSuperTypeOf">
+ <genParameters ecoreParameter="Ecore.ecore#//EClass/isSuperTypeOf/someClass"/>
+ </genOperations>
+ <genOperations ecoreOperation="Ecore.ecore#//EClass/getFeatureCount"/>
+ <genOperations ecoreOperation="Ecore.ecore#//EClass/getEStructuralFeature">
+ <genParameters ecoreParameter="Ecore.ecore#//EClass/getEStructuralFeature/featureID"/>
+ </genOperations>
+ <genOperations ecoreOperation="Ecore.ecore#//EClass/getFeatureID">
+ <genParameters ecoreParameter="Ecore.ecore#//EClass/getFeatureID/feature"/>
+ </genOperations>
+ <genOperations ecoreOperation="Ecore.ecore#//EClass/getEStructuralFeature.1">
+ <genParameters ecoreParameter="Ecore.ecore#//EClass/getEStructuralFeature.1/featureName"/>
+ </genOperations>
+ <genOperations ecoreOperation="Ecore.ecore#//EClass/getOperationCount"/>
+ <genOperations ecoreOperation="Ecore.ecore#//EClass/getEOperation">
+ <genParameters ecoreParameter="Ecore.ecore#//EClass/getEOperation/operationID"/>
+ </genOperations>
+ <genOperations ecoreOperation="Ecore.ecore#//EClass/getOperationID">
+ <genParameters ecoreParameter="Ecore.ecore#//EClass/getOperationID/operation"/>
+ </genOperations>
+ <genOperations ecoreOperation="Ecore.ecore#//EClass/getOverride">
+ <genParameters ecoreParameter="Ecore.ecore#//EClass/getOverride/operation"/>
+ </genOperations>
+ </genClasses>
+ <genClasses image="false" ecoreClass="Ecore.ecore#//EClassifier">
+ <genFeatures createChild="false" propertyDescription="The erased instance class name denoted by this classifier"
+ ecoreFeature="ecore:EAttribute Ecore.ecore#//EClassifier/instanceClassName">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EAttribute Ecore.ecore#//EClassifier/instanceClass"/>
+ <genFeatures property="Readonly" createChild="false" propertyDescription="The default value for features of this type"
+ ecoreFeature="ecore:EAttribute Ecore.ecore#//EClassifier/defaultValue"/>
+ <genFeatures createChild="false" propertyDescription="The full instance type name denoted by this classifier"
+ ecoreFeature="ecore:EAttribute Ecore.ecore#//EClassifier/instanceTypeName"/>
+ <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference Ecore.ecore#//EClassifier/ePackage"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Ecore.ecore#//EClassifier/eTypeParameters"/>
+ <genOperations ecoreOperation="Ecore.ecore#//EClassifier/isInstance">
+ <genParameters ecoreParameter="Ecore.ecore#//EClassifier/isInstance/object"/>
+ </genOperations>
+ <genOperations ecoreOperation="Ecore.ecore#//EClassifier/getClassifierID"/>
+ </genClasses>
+ <genClasses ecoreClass="Ecore.ecore#//EDataType">
+ <genFeatures createChild="false" propertyDescription="Whether a value of this data type can be serialized using the factory"
+ ecoreFeature="ecore:EAttribute Ecore.ecore#//EDataType/serializable"/>
+ </genClasses>
+ <genClasses ecoreClass="Ecore.ecore#//EEnum">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Ecore.ecore#//EEnum/eLiterals"/>
+ <genOperations ecoreOperation="Ecore.ecore#//EEnum/getEEnumLiteral">
+ <genParameters ecoreParameter="Ecore.ecore#//EEnum/getEEnumLiteral/name"/>
+ </genOperations>
+ <genOperations ecoreOperation="Ecore.ecore#//EEnum/getEEnumLiteral.1">
+ <genParameters ecoreParameter="Ecore.ecore#//EEnum/getEEnumLiteral.1/value"/>
+ </genOperations>
+ <genOperations ecoreOperation="Ecore.ecore#//EEnum/getEEnumLiteralByLiteral">
+ <genParameters ecoreParameter="Ecore.ecore#//EEnum/getEEnumLiteralByLiteral/literal"/>
+ </genOperations>
+ </genClasses>
+ <genClasses ecoreClass="Ecore.ecore#//EEnumLiteral">
+ <genFeatures createChild="false" propertyDescription="The integer value associated with this enumerator"
+ ecoreFeature="ecore:EAttribute Ecore.ecore#//EEnumLiteral/value"/>
+ <genFeatures property="None" createChild="false" ecoreFeature="ecore:EAttribute Ecore.ecore#//EEnumLiteral/instance"/>
+ <genFeatures createChild="false" propertyDescription="The literal value associated with this enumerator"
+ ecoreFeature="ecore:EAttribute Ecore.ecore#//EEnumLiteral/literal"/>
+ <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference Ecore.ecore#//EEnumLiteral/eEnum"/>
+ </genClasses>
+ <genClasses ecoreClass="Ecore.ecore#//EFactory">
+ <genFeatures property="Readonly" createChild="false" propertyDescription="The package corresponding to this factory"
+ ecoreFeature="ecore:EReference Ecore.ecore#//EFactory/ePackage"/>
+ <genOperations ecoreOperation="Ecore.ecore#//EFactory/create">
+ <genParameters ecoreParameter="Ecore.ecore#//EFactory/create/eClass"/>
+ </genOperations>
+ <genOperations ecoreOperation="Ecore.ecore#//EFactory/createFromString">
+ <genParameters ecoreParameter="Ecore.ecore#//EFactory/createFromString/eDataType"/>
+ <genParameters ecoreParameter="Ecore.ecore#//EFactory/createFromString/literalValue"/>
+ </genOperations>
+ <genOperations ecoreOperation="Ecore.ecore#//EFactory/convertToString">
+ <genParameters ecoreParameter="Ecore.ecore#//EFactory/convertToString/eDataType"/>
+ <genParameters ecoreParameter="Ecore.ecore#//EFactory/convertToString/instanceValue"/>
+ </genOperations>
+ </genClasses>
+ <genClasses image="false" ecoreClass="Ecore.ecore#//EModelElement">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Ecore.ecore#//EModelElement/eAnnotations"/>
+ <genOperations ecoreOperation="Ecore.ecore#//EModelElement/getEAnnotation">
+ <genParameters ecoreParameter="Ecore.ecore#//EModelElement/getEAnnotation/source"/>
+ </genOperations>
+ </genClasses>
+ <genClasses image="false" ecoreClass="Ecore.ecore#//ENamedElement">
+ <genFeatures createChild="false" propertyDescription="The name of this model element"
+ ecoreFeature="ecore:EAttribute Ecore.ecore#//ENamedElement/name"/>
+ </genClasses>
+ <genClasses ecoreClass="Ecore.ecore#//EObject">
+ <genOperations ecoreOperation="Ecore.ecore#//EObject/eClass"/>
+ <genOperations ecoreOperation="Ecore.ecore#//EObject/eIsProxy"/>
+ <genOperations ecoreOperation="Ecore.ecore#//EObject/eResource"/>
+ <genOperations ecoreOperation="Ecore.ecore#//EObject/eContainer"/>
+ <genOperations ecoreOperation="Ecore.ecore#//EObject/eContainingFeature"/>
+ <genOperations ecoreOperation="Ecore.ecore#//EObject/eContainmentFeature"/>
+ <genOperations ecoreOperation="Ecore.ecore#//EObject/eContents"/>
+ <genOperations ecoreOperation="Ecore.ecore#//EObject/eAllContents"/>
+ <genOperations ecoreOperation="Ecore.ecore#//EObject/eCrossReferences"/>
+ <genOperations ecoreOperation="Ecore.ecore#//EObject/eGet">
+ <genParameters ecoreParameter="Ecore.ecore#//EObject/eGet/feature"/>
+ </genOperations>
+ <genOperations ecoreOperation="Ecore.ecore#//EObject/eGet.1">
+ <genParameters ecoreParameter="Ecore.ecore#//EObject/eGet.1/feature"/>
+ <genParameters ecoreParameter="Ecore.ecore#//EObject/eGet.1/resolve"/>
+ </genOperations>
+ <genOperations ecoreOperation="Ecore.ecore#//EObject/eSet">
+ <genParameters ecoreParameter="Ecore.ecore#//EObject/eSet/feature"/>
+ <genParameters ecoreParameter="Ecore.ecore#//EObject/eSet/newValue"/>
+ </genOperations>
+ <genOperations ecoreOperation="Ecore.ecore#//EObject/eIsSet">
+ <genParameters ecoreParameter="Ecore.ecore#//EObject/eIsSet/feature"/>
+ </genOperations>
+ <genOperations ecoreOperation="Ecore.ecore#//EObject/eUnset">
+ <genParameters ecoreParameter="Ecore.ecore#//EObject/eUnset/feature"/>
+ </genOperations>
+ <genOperations ecoreOperation="Ecore.ecore#//EObject/eInvoke">
+ <genParameters ecoreParameter="Ecore.ecore#//EObject/eInvoke/operation"/>
+ <genParameters ecoreParameter="Ecore.ecore#//EObject/eInvoke/arguments"/>
+ </genOperations>
+ </genClasses>
+ <genClasses ecoreClass="Ecore.ecore#//EOperation">
+ <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference Ecore.ecore#//EOperation/eContainingClass"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Ecore.ecore#//EOperation/eTypeParameters"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Ecore.ecore#//EOperation/eParameters"/>
+ <genFeatures notify="false" createChild="false" propertyDescription="The exceptions thrown by this operation"
+ propertySortChoices="true" ecoreFeature="ecore:EReference Ecore.ecore#//EOperation/eExceptions"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Ecore.ecore#//EOperation/eGenericExceptions"/>
+ <genOperations ecoreOperation="Ecore.ecore#//EOperation/getOperationID"/>
+ <genOperations ecoreOperation="Ecore.ecore#//EOperation/isOverrideOf">
+ <genParameters ecoreParameter="Ecore.ecore#//EOperation/isOverrideOf/someOperation"/>
+ </genOperations>
+ </genClasses>
+ <genClasses ecoreClass="Ecore.ecore#//EPackage">
+ <genFeatures createChild="false" propertyCategory="" propertyDescription="The universally unique namespace identifier, typically an absolute URI, for this package"
+ ecoreFeature="ecore:EAttribute Ecore.ecore#//EPackage/nsURI"/>
+ <genFeatures createChild="false" propertyDescription="The namespace prefix used by default when serializing instances of the package's classes"
+ ecoreFeature="ecore:EAttribute Ecore.ecore#//EPackage/nsPrefix"/>
+ <genFeatures property="Readonly" createChild="false" propertyDescription="The factory corresponding to this package"
+ ecoreFeature="ecore:EReference Ecore.ecore#//EPackage/eFactoryInstance">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Ecore.ecore#//EPackage/eClassifiers"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Ecore.ecore#//EPackage/eSubpackages"/>
+ <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference Ecore.ecore#//EPackage/eSuperPackage"/>
+ <genOperations ecoreOperation="Ecore.ecore#//EPackage/getEClassifier">
+ <genParameters ecoreParameter="Ecore.ecore#//EPackage/getEClassifier/name"/>
+ </genOperations>
+ </genClasses>
+ <genClasses ecoreClass="Ecore.ecore#//EParameter">
+ <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference Ecore.ecore#//EParameter/eOperation"/>
+ </genClasses>
+ <genClasses ecoreClass="Ecore.ecore#//EReference">
+ <genFeatures createChild="false" propertyDescription="Whether this reference represents a composite relationship"
+ ecoreFeature="ecore:EAttribute Ecore.ecore#//EReference/containment"/>
+ <genFeatures property="Readonly" createChild="false" propertyDescription="Whether this reference has as its opposite a containment reference"
+ ecoreFeature="ecore:EAttribute Ecore.ecore#//EReference/container"/>
+ <genFeatures createChild="false" propertyDescription="Whether this reference resolves proxies automatically"
+ ecoreFeature="ecore:EAttribute Ecore.ecore#//EReference/resolveProxies"/>
+ <genFeatures createChild="false" propertyDescription="The reference that represents the bidirectional opposite of this reference"
+ propertySortChoices="true" ecoreFeature="ecore:EReference Ecore.ecore#//EReference/eOpposite"/>
+ <genFeatures property="Readonly" createChild="false" propertyDescription="The target class of the reference"
+ ecoreFeature="ecore:EReference Ecore.ecore#//EReference/eReferenceType">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures notify="false" createChild="false" propertyDescription="The attributes of the referenced class that uniquely identify a referenced instance"
+ propertySortChoices="true" ecoreFeature="ecore:EReference Ecore.ecore#//EReference/eKeys"/>
+ </genClasses>
+ <genClasses image="false" ecoreClass="Ecore.ecore#//EStructuralFeature">
+ <genFeatures createChild="false" propertyDescription="Whether the value of this feature can be changed"
+ ecoreFeature="ecore:EAttribute Ecore.ecore#//EStructuralFeature/changeable"/>
+ <genFeatures createChild="false" propertyDescription="Whether no field will be generated for this feature"
+ ecoreFeature="ecore:EAttribute Ecore.ecore#//EStructuralFeature/volatile"/>
+ <genFeatures createChild="false" propertyDescription="Whether the value of this feature will be serialized"
+ ecoreFeature="ecore:EAttribute Ecore.ecore#//EStructuralFeature/transient"/>
+ <genFeatures createChild="false" propertyDescription="The literal representation of the default value for this feature"
+ ecoreFeature="ecore:EAttribute Ecore.ecore#//EStructuralFeature/defaultValueLiteral"/>
+ <genFeatures property="Readonly" createChild="false" propertyDescription="The default value for this feature"
+ ecoreFeature="ecore:EAttribute Ecore.ecore#//EStructuralFeature/defaultValue">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures createChild="false" propertyDescription="Whether the value space for this feature includes the state of not being set"
+ ecoreFeature="ecore:EAttribute Ecore.ecore#//EStructuralFeature/unsettable"/>
+ <genFeatures createChild="false" propertyDescription="Whether the value of this feature is derived from the values of other features"
+ ecoreFeature="ecore:EAttribute Ecore.ecore#//EStructuralFeature/derived"/>
+ <genFeatures property="Readonly" createChild="false" propertyDescription="The class that defines this feature"
+ ecoreFeature="ecore:EReference Ecore.ecore#//EStructuralFeature/eContainingClass">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations ecoreOperation="Ecore.ecore#//EStructuralFeature/getFeatureID"/>
+ <genOperations ecoreOperation="Ecore.ecore#//EStructuralFeature/getContainerClass"/>
+ </genClasses>
+ <genClasses image="false" ecoreClass="Ecore.ecore#//ETypedElement">
+ <genFeatures createChild="false" propertyDescription="Whether the order in which values occur is meaningful"
+ ecoreFeature="ecore:EAttribute Ecore.ecore#//ETypedElement/ordered"/>
+ <genFeatures createChild="false" propertyDescription="Whether the same value may occur more than once"
+ ecoreFeature="ecore:EAttribute Ecore.ecore#//ETypedElement/unique"/>
+ <genFeatures createChild="false" propertyDescription="The minimum number of values that must occur"
+ ecoreFeature="ecore:EAttribute Ecore.ecore#//ETypedElement/lowerBound"/>
+ <genFeatures createChild="false" propertyDescription="The maximum number of values that may occur; -1 represents unbounded and -2 represents unspecified"
+ ecoreFeature="ecore:EAttribute Ecore.ecore#//ETypedElement/upperBound"/>
+ <genFeatures property="Readonly" createChild="false" propertyDescription="Whether more than one value may occur"
+ ecoreFeature="ecore:EAttribute Ecore.ecore#//ETypedElement/many">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures property="Readonly" createChild="false" propertyDescription="Whether at least one value must occur"
+ ecoreFeature="ecore:EAttribute Ecore.ecore#//ETypedElement/required">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures createChild="false" propertyDescription="The type of this element"
+ propertySortChoices="true" ecoreFeature="ecore:EReference Ecore.ecore#//ETypedElement/eType"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Ecore.ecore#//ETypedElement/eGenericType"/>
+ </genClasses>
+ <genClasses ecoreClass="Ecore.ecore#//EStringToStringMapEntry">
+ <genFeatures createChild="false" propertyCategory="" propertyDescription="The key of this map entry"
+ ecoreFeature="ecore:EAttribute Ecore.ecore#//EStringToStringMapEntry/key"/>
+ <genFeatures createChild="false" propertyDescription="The value of this map entry"
+ propertyMultiLine="true" ecoreFeature="ecore:EAttribute Ecore.ecore#//EStringToStringMapEntry/value"/>
+ </genClasses>
+ <genClasses ecoreClass="Ecore.ecore#//EGenericType">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Ecore.ecore#//EGenericType/eUpperBound"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Ecore.ecore#//EGenericType/eTypeArguments"/>
+ <genFeatures property="Readonly" notify="false" createChild="false" propertyDescription="The erased type denoted by this generic type"
+ propertySortChoices="true" ecoreFeature="ecore:EReference Ecore.ecore#//EGenericType/eRawType">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Ecore.ecore#//EGenericType/eLowerBound"/>
+ <genFeatures notify="false" createChild="false" propertyDescription="The type parameter denoted by this generic type"
+ propertySortChoices="true" ecoreFeature="ecore:EReference Ecore.ecore#//EGenericType/eTypeParameter"/>
+ <genFeatures notify="false" createChild="false" propertyDescription="The classifier denoted by this generic type"
+ propertySortChoices="true" ecoreFeature="ecore:EReference Ecore.ecore#//EGenericType/eClassifier"/>
+ </genClasses>
+ <genClasses ecoreClass="Ecore.ecore#//ETypeParameter">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Ecore.ecore#//ETypeParameter/eBounds"/>
+ </genClasses>
+ </genPackages>
+</genmodel:GenModel>
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/model/UML.ecore b/plugins/marte/org.eclipse.papyrus.marte.vsl/model/UML.ecore
new file mode 100644
index 00000000000..80bbc7baa11
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/model/UML.ecore
@@ -0,0 +1,16088 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="uml"
+ nsURI="http://www.eclipse.org/uml2/3.0.0/UML" nsPrefix="uml">
+ <eClassifiers xsi:type="ecore:EDataType" name="Integer" instanceClassName="int">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An integer is a primitive type representing integer values."/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="Boolean" instanceClassName="boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A Boolean type is used for logical expression, consisting of the predefined values true and false."/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="String" instanceClassName="java.lang.String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A string is a sequence of characters in some suitable character set used to display information about the model. Character sets may include non-Roman alphabets and characters."/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="UnlimitedNatural" instanceClassName="int">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An unlimited natural is a primitive type representing unlimited natural values."/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Comment" eSuperTypes="#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A comment is a textual annotation that can be attached to a set of elements."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="body" ordered="false" eType="#//String"
+ unsettable="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies a string that is the comment."/>
+ </eAnnotations>
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="element"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="annotatedElement" ordered="false"
+ upperBound="-1" eType="#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the Element(s) being commented."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Element" abstract="true" eSuperTypes="platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EModelElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An element is a constituent of a model. As such, it has the capability of owning other elements."/>
+ </eAnnotations>
+ <eOperations name="not_own_self" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An element may not directly or indirectly own itself.&#xD;&#xA;not self.allOwnedElements()->includes(self)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="has_owner" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Elements that must be owned must have an owner.&#xD;&#xA;self.mustBeOwned() implies owner->notEmpty()"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="destroy" ordered="false" lowerBound="1">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Destroys this element by removing all cross references to/from it and removing it from its containing resource or object."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="hasKeyword" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Determines whether this element has the specified keyword."/>
+ </eAnnotations>
+ <eParameters name="keyword" ordered="false" lowerBound="1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The keyword in question."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getKeywords" ordered="false" upperBound="-1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the keywords for this element."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="addKeyword" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Adds the specified keyword to this element."/>
+ </eAnnotations>
+ <eParameters name="keyword" ordered="false" lowerBound="1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The keyword to add."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="removeKeyword" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Removes the specified keyword from this element."/>
+ </eAnnotations>
+ <eParameters name="keyword" ordered="false" lowerBound="1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The keyword to remove."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getNearestPackage" ordered="false" eType="#//Package">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the nearest package that owns (either directly or indirectly) this element, or the element itself (if it is a package)."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getModel" ordered="false" eType="#//Model">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the model that owns (either directly or indirectly) this element."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="isStereotypeApplicable" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Determines whether the specified stereotype is applicable to this element."/>
+ </eAnnotations>
+ <eParameters name="stereotype" ordered="false" lowerBound="1" eType="#//Stereotype">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The stereotype in question."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="isStereotypeRequired" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Determines whether the specified stereotype is required for this element."/>
+ </eAnnotations>
+ <eParameters name="stereotype" ordered="false" lowerBound="1" eType="#//Stereotype">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The stereotype in question."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="isStereotypeApplied" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Determines whether the specified stereotype is applied to this element."/>
+ </eAnnotations>
+ <eParameters name="stereotype" ordered="false" lowerBound="1" eType="#//Stereotype">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The stereotype in question."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="applyStereotype" ordered="false" lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EObject">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Applies the specified stereotype to this element."/>
+ </eAnnotations>
+ <eParameters name="stereotype" ordered="false" lowerBound="1" eType="#//Stereotype">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The stereotype to apply."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="unapplyStereotype" ordered="false" lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EObject">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Unapplies the specified stereotype from this element."/>
+ </eAnnotations>
+ <eParameters name="stereotype" ordered="false" lowerBound="1" eType="#//Stereotype">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The stereotype to unapply."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getApplicableStereotypes" ordered="false" upperBound="-1" eType="#//Stereotype">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the stereotypes that are applicable to this element, including those that are required and/or may already be applied."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getApplicableStereotype" ordered="false" eType="#//Stereotype">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the stereotype with the specified qualified name that is applicable to this element, or null if no such stereotype is applicable."/>
+ </eAnnotations>
+ <eParameters name="qualifiedName" ordered="false" lowerBound="1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The qualified name of the applicable stereotype to retrieve."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getStereotypeApplications" ordered="false" upperBound="-1"
+ eType="ecore:EClass platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EObject">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the stereotype applications for this element."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getStereotypeApplication" ordered="false" eType="ecore:EClass platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EObject">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the application of the specified stereotype for this element, or null if no such stereotype application exists."/>
+ </eAnnotations>
+ <eParameters name="stereotype" ordered="false" lowerBound="1" eType="#//Stereotype">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The stereotype for which to retrieve an application."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getRequiredStereotypes" ordered="false" upperBound="-1" eType="#//Stereotype">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the stereotypes that are required for this element."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getRequiredStereotype" ordered="false" eType="#//Stereotype">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the stereotype with the specified qualified name that is required for this element, or null if no such stereotype is required."/>
+ </eAnnotations>
+ <eParameters name="qualifiedName" ordered="false" lowerBound="1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The qualified name of the required stereotype to retrieve."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getAppliedStereotypes" ordered="false" upperBound="-1" eType="#//Stereotype">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the stereotypes that are applied to this element."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getAppliedStereotype" ordered="false" eType="#//Stereotype">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the stereotype with the specified qualified name that is applied to this element, or null if no such stereotype is applied."/>
+ </eAnnotations>
+ <eParameters name="qualifiedName" ordered="false" lowerBound="1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The qualified name of the applied stereotype to retrieve."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getAppliedSubstereotypes" ordered="false" upperBound="-1" eType="#//Stereotype">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the substereotypes of the specified stereotype that are applied to this element."/>
+ </eAnnotations>
+ <eParameters name="stereotype" ordered="false" lowerBound="1" eType="#//Stereotype">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The superstereotype of the applied substereotypes to retrieve."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getAppliedSubstereotype" ordered="false" eType="#//Stereotype">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the substereotype of the specified stereotype with the specified qualified name that is applied to this element, or null if no such stereotype is applied."/>
+ </eAnnotations>
+ <eParameters name="stereotype" ordered="false" lowerBound="1" eType="#//Stereotype">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The superstereotype of the applied substereotype to retrieve."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="qualifiedName" ordered="false" lowerBound="1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The qualified name of the applied substereotype to retrieve."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="hasValue" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Determines whether this element has a (non-default) value for the property with the specified name in the specified stereotype."/>
+ </eAnnotations>
+ <eParameters name="stereotype" ordered="false" lowerBound="1" eType="#//Stereotype">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The stereotype for which to test the property."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="propertyName" ordered="false" lowerBound="1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The name of the property in question."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getValue" ordered="false" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EJavaObject">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the value of the property with the specified name in the specified stereotype for this element."/>
+ </eAnnotations>
+ <eParameters name="stereotype" ordered="false" lowerBound="1" eType="#//Stereotype">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The stereotype for which to retrieve the value."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="propertyName" ordered="false" lowerBound="1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The name of the property whose value to retrieve."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="setValue" ordered="false" lowerBound="1">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Sets the value of the property with the specified name in the specified stereotype for this element."/>
+ </eAnnotations>
+ <eParameters name="stereotype" ordered="false" lowerBound="1" eType="#//Stereotype">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The stereotype for which to set the value."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="propertyName" ordered="false" lowerBound="1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The name of the property whose value to set."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="newValue" ordered="false" lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EJavaObject">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The new value for the property."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="createEAnnotation" ordered="false" lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EAnnotation">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Creates an annotation with the specified source and this element as its model element."/>
+ </eAnnotations>
+ <eParameters name="source" ordered="false" lowerBound="1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The source for the new annotation."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getRelationships" ordered="false" upperBound="-1" eType="#//Relationship">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the relationships in which this element is involved."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getRelationships" ordered="false" upperBound="-1" eType="#//Relationship">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the relationships of the specified type in which this element is involved."/>
+ </eAnnotations>
+ <eParameters name="eClass" ordered="false" lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EClass">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The (meta)type of the relationships to retrieve."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getSourceDirectedRelationships" ordered="false" upperBound="-1"
+ eType="#//DirectedRelationship">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the directed relationships for which this element is a source."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getSourceDirectedRelationships" ordered="false" upperBound="-1"
+ eType="#//DirectedRelationship">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the directed relationships of the specified type for which this element is a source."/>
+ </eAnnotations>
+ <eParameters name="eClass" ordered="false" lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EClass">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The (meta)type of the directed relationships to retrieve."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getTargetDirectedRelationships" ordered="false" upperBound="-1"
+ eType="#//DirectedRelationship">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the directed relationships for which this element is a target."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getTargetDirectedRelationships" ordered="false" upperBound="-1"
+ eType="#//DirectedRelationship">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the directed relationships of the specified type for which this element is a target."/>
+ </eAnnotations>
+ <eParameters name="eClass" ordered="false" lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EClass">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The (meta)type of the directed relationships to retrieve."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="allOwnedElements" ordered="false" upperBound="-1" eType="#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query allOwnedElements() gives all of the direct and indirect owned elements of an element.&#xD;&#xA;result = ownedElement->union(ownedElement->collect(e | e.allOwnedElements()))"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="mustBeOwned" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query mustBeOwned() indicates whether elements of this type must have an owner. Subclasses of Element that do not require an owner must override this operation.&#xD;&#xA;result = true"/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ownedElement" ordered="false"
+ upperBound="-1" eType="#//Element" changeable="false" volatile="true" transient="true"
+ derived="true" eOpposite="#//Element/owner">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The Elements owned by this element."/>
+ </eAnnotations>
+ <eAnnotations source="union"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="owner" ordered="false"
+ eType="#//Element" changeable="false" volatile="true" transient="true" derived="true"
+ eOpposite="#//Element/ownedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The Element that owns this element."/>
+ </eAnnotations>
+ <eAnnotations source="union"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ownedComment" ordered="false"
+ upperBound="-1" eType="#//Comment" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The Comments owned by this element."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Package" eSuperTypes="#//Namespace #//PackageableElement #//TemplateableElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A package is used to group elements, and provides a namespace for the grouped elements.&#xD;&#xA;A package can have one or more profile applications to indicate which profiles have been applied. Because a profile is a package, it is possible to apply a profile not only to packages, but also to profiles.&#xD;&#xA;Package specializes TemplateableElement and PackageableElement specializes ParameterableElement to specify that a package can be used as a template and a PackageableElement as a template parameter."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EOperation" name="mustBeOwned" ordered="false" lowerBound="1"
+ eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query mustBeOwned() indicates whether elements of this type must have an owner.&#xD;&#xA;result = false"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//Element/mustBeOwned"/>
+ </contents>
+ </eAnnotations>
+ <eOperations name="elements_public_or_private" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If an element that is owned by a package has visibility, it is public or private.&#xD;&#xA;self.ownedElements->forAll(e | e.visibility->notEmpty() implies e.visbility = #public or e.visibility = #private)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="createOwnedClass" ordered="false" lowerBound="1" eType="#//Class">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Creates a(n) (abstract) class with the specified name as an owned type of this package."/>
+ </eAnnotations>
+ <eParameters name="name" ordered="false" lowerBound="1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The name for the new class, or null."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="isAbstract" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Whether the new class should be abstract."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="createOwnedEnumeration" ordered="false" lowerBound="1" eType="#//Enumeration">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Creates a enumeration with the specified name as an owned type of this package."/>
+ </eAnnotations>
+ <eParameters name="name" ordered="false" lowerBound="1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The name for the new enumeration, or null."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="createOwnedPrimitiveType" ordered="false" lowerBound="1" eType="#//PrimitiveType">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Creates a primitive type with the specified name as an owned type of this package."/>
+ </eAnnotations>
+ <eParameters name="name" ordered="false" lowerBound="1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The name for the new primitive type, or null."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="createOwnedInterface" ordered="false" lowerBound="1" eType="#//Interface">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Creates an interface with the specified name as an owned type of this package."/>
+ </eAnnotations>
+ <eParameters name="name" ordered="false" lowerBound="1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The name for the new interface, or null."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="isProfileApplied" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Determines whether the specified profile is applied to this package."/>
+ </eAnnotations>
+ <eParameters name="profile" ordered="false" lowerBound="1" eType="#//Profile">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The profile in question."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="applyProfile" ordered="false" upperBound="-1" eType="ecore:EClass platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EObject">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Applies the current definition of the specified profile to this package and automatically applies required stereotypes in the profile to elements within this package's namespace hieararchy. If a different definition is already applied, automatically migrates any associated stereotype values on a &quot;best effort&quot; basis (matching classifiers and structural features by name)."/>
+ </eAnnotations>
+ <eParameters name="profile" ordered="false" lowerBound="1" eType="#//Profile">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The profile to apply."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="unapplyProfile" ordered="false" upperBound="-1" eType="ecore:EClass platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EObject">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Unapplies the specified profile from this package and automatically unapplies stereotypes in the profile from elements within this package's namespace hieararchy."/>
+ </eAnnotations>
+ <eParameters name="profile" ordered="false" lowerBound="1" eType="#//Profile">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The profile to unapply."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getAppliedProfiles" ordered="false" upperBound="-1" eType="#//Profile">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the profiles that are applied to this package."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getAllAppliedProfiles" ordered="false" upperBound="-1" eType="#//Profile">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves all the profiles that are applied to this package, including profiles applied to its nesting package(s)."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getAppliedProfile" ordered="false" eType="#//Profile">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the profile with the specified qualified name that is applied to this package, or null if no such profile is applied."/>
+ </eAnnotations>
+ <eParameters name="qualifiedName" ordered="false" lowerBound="1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The qualified name of the applied profile to retrieve."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getAppliedProfile" ordered="false" eType="#//Profile">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the profile with the specified qualified name that is applied to this package or any of its nesting packages (if indicated), or null if no such profile is applied."/>
+ </eAnnotations>
+ <eParameters name="qualifiedName" ordered="false" lowerBound="1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The qualified name of the applied profile to retrieve."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="recurse" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Whether to look in nesting packages."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getAllProfileApplications" ordered="false" upperBound="-1"
+ eType="#//ProfileApplication">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves all the profile applications for this package, including profile applications for its nesting package(s)."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getProfileApplication" ordered="false" eType="#//ProfileApplication">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the application of the specified profile to this package, or null if no such profile is applied."/>
+ </eAnnotations>
+ <eParameters name="profile" ordered="false" lowerBound="1" eType="#//Profile">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The profile whose application to retrieve."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getProfileApplication" ordered="false" eType="#//ProfileApplication">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the application of the specified profile to this package or any of its nesting packages (if indicated), or null if no such profile is applied."/>
+ </eAnnotations>
+ <eParameters name="profile" ordered="false" lowerBound="1" eType="#//Profile">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The profile whose application to retrieve."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="recurse" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Whether to look in nesting packages."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="isModelLibrary" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Determines whether this package is a model library."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="visibleMembers" ordered="false" upperBound="-1" eType="#//PackageableElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query visibleMembers() defines which members of a Package can be accessed outside it.&#xD;&#xA;result = member->select( m | self.makesVisible(m))"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="makesVisible" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query makesVisible() defines whether a Package makes an element visible outside itself. Elements with no visibility and elements with public visibility are made visible.&#xD;&#xA;self.member->includes(el)&#xD;&#xA;result = (ownedMember->includes(el)) or&#xA;(elementImport->select(ei|ei.importedElement = #public)->collect(ei|ei.importedElement)->includes(el)) or&#xA;(packageImport->select(pi|pi.visibility = #public)->collect(pi|pi.importedPackage.member->includes(el))->notEmpty())"/>
+ </eAnnotations>
+ <eParameters name="el" ordered="false" lowerBound="1" eType="#//NamedElement"/>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ownedType" ordered="false"
+ upperBound="-1" eType="#//Type" volatile="true" transient="true" derived="true"
+ eOpposite="#//Type/package">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the packaged elements that are Types."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Package/packagedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="packageMerge" ordered="false"
+ upperBound="-1" eType="#//PackageMerge" containment="true" eOpposite="#//PackageMerge/receivingPackage">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the PackageMerges that are owned by this Package."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="packagedElement" ordered="false"
+ upperBound="-1" eType="#//PackageableElement" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies the packageable elements that are owned by this Package."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="nestedPackage" ordered="false"
+ upperBound="-1" eType="#//Package" volatile="true" transient="true" derived="true"
+ eOpposite="#//Package/nestingPackage">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the packaged elements that are Packages."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Package/packagedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="nestingPackage" ordered="false"
+ eType="#//Package" volatile="true" transient="true" derived="true" eOpposite="#//Package/nestedPackage">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the Package that owns this Package."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//NamedElement/namespace"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="profileApplication" ordered="false"
+ upperBound="-1" eType="#//ProfileApplication" containment="true" eOpposite="#//ProfileApplication/applyingPackage">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the ProfileApplications that indicate which profiles have been applied to the Package."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="PackageableElement" abstract="true"
+ eSuperTypes="#//NamedElement #//ParameterableElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A packageable element indicates a named element that may be owned directly by a package.&#xD;&#xA;Packageable elements are able to serve as a template parameter."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EAttribute" name="visibility" ordered="false" eType="#//VisibilityKind"
+ defaultValueLiteral="public">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Indicates that packageable elements must always have a visibility, i.e., visibility is not optional."/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//NamedElement/visibility"/>
+ </contents>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="NamedElement" abstract="true" eSuperTypes="#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A named element is an element in a model that may have a name.&#xD;&#xA;A named element supports using a string expression to specify its name. This allows names of model elements to involve template parameters. The actual name is evaluated from the string expression only when it is sensible to do so (e.g., when a template is bound)."/>
+ </eAnnotations>
+ <eOperations name="has_no_qualified_name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If there is no name, or one of the containing namespaces has no name, there is no qualified name.&#xD;&#xA;(self.name->isEmpty() or self.allNamespaces()->select(ns | ns.name->isEmpty())->notEmpty())&#xD;&#xA; implies self.qualifiedName->isEmpty()"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="has_qualified_name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="When there is a name, and all of the containing namespaces have a name, the qualified name is constructed from the names of the containing namespaces.&#xD;&#xA;(self.name->notEmpty() and self.allNamespaces()->select(ns | ns.name->isEmpty())->isEmpty()) implies&#xA; self.qualifiedName = self.allNamespaces()->iterate( ns : Namespace; result: String = self.name | ns.name->union(self.separator())->union(result))"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="visibility_needs_ownership" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If a NamedElement is not owned by a Namespace, it does not have a visibility.&#xD;&#xA;namespace->isEmpty() implies visibility->isEmpty()"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="createDependency" ordered="false" lowerBound="1" eType="#//Dependency">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Creates a dependency between this named element and the specified supplier, owned by this named element's nearest package."/>
+ </eAnnotations>
+ <eParameters name="supplier" ordered="false" lowerBound="1" eType="#//NamedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The supplier for the new dependency."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getLabel" ordered="false" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves a localized label for this named element."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getLabel" ordered="false" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves a label for this named element, localized if indicated."/>
+ </eAnnotations>
+ <eParameters name="localize" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Whether to localize the label."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="createUsage" ordered="false" lowerBound="1" eType="#//Usage">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Creates a usage between this named element and the specified supplier, owned by this named element's nearest package."/>
+ </eAnnotations>
+ <eParameters name="supplier" ordered="false" lowerBound="1" eType="#//NamedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The supplier for the new usage."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getQualifiedName" ordered="false" lowerBound="1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="When there is a name, and all of the containing namespaces have a name, the qualified name is constructed from the names of the containing namespaces.&#xD;&#xA;result = if self.name->notEmpty() and self.allNamespaces()->select(ns | ns.name->isEmpty())->isEmpty()&#xA;then &#xA; self.allNamespaces()->iterate( ns : Namespace; result: String = self.name | ns.name->union(self.separator())->union(result))&#xA;else&#xA; Set{}&#xA;endif"/>
+ <details key="suppressedVisibility" value="true"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="allNamespaces" upperBound="-1" eType="#//Namespace">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query allNamespaces() gives the sequence of namespaces in which the NamedElement is nested, working outwards.&#xD;&#xA;result = if self.namespace->isEmpty()&#xA;then Sequence{}&#xA;else self.namespace.allNamespaces()->prepend(self.namespace)&#xA;endif"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="isDistinguishableFrom" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query isDistinguishableFrom() determines whether two NamedElements may logically co-exist within a Namespace. By default, two named elements are distinguishable if (a) they have unrelated types or (b) they have related types but different names.&#xD;&#xA;result = if self.oclIsKindOf(n.oclType) or n.oclIsKindOf(self.oclType)&#xA;then ns.getNamesOfMember(self)->intersection(ns.getNamesOfMember(n))->isEmpty()&#xA;else true&#xA;endif"/>
+ </eAnnotations>
+ <eParameters name="n" ordered="false" lowerBound="1" eType="#//NamedElement"/>
+ <eParameters name="ns" ordered="false" lowerBound="1" eType="#//Namespace"/>
+ </eOperations>
+ <eOperations name="separator" ordered="false" lowerBound="1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query separator() gives the string that is used to separate names when constructing a qualified name.&#xD;&#xA;result = '::'"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="allOwningPackages" ordered="false" upperBound="-1" eType="#//Package">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query allOwningPackages() returns all the directly or indirectly owning packages.&#xD;&#xA;result = self.namespace->select(p | p.oclIsKindOf(Package))->union(p.allOwningPackages())"/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" ordered="false" eType="#//String"
+ unsettable="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The name of the NamedElement."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="visibility" ordered="false"
+ eType="#//VisibilityKind" unsettable="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Determines where the NamedElement appears within different Namespaces within the overall model, and its accessibility."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="qualifiedName" ordered="false"
+ eType="#//String" changeable="false" volatile="true" transient="true" derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A name which allows the NamedElement to be identified within a hierarchy of nested Namespaces. It is constructed from the names of the containing namespaces starting at the root of the hierarchy and ending with the name of the NamedElement itself."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="clientDependency" ordered="false"
+ upperBound="-1" eType="#//Dependency" eOpposite="#//Dependency/client">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Indicates the dependencies that reference the client."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="namespace" ordered="false"
+ eType="#//Namespace" changeable="false" volatile="true" transient="true" derived="true"
+ eOpposite="#//Namespace/ownedMember">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies the namespace that owns the NamedElement."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/owner"/>
+ <eAnnotations source="union"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="nameExpression" ordered="false"
+ eType="#//StringExpression" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The string expression used to define the name of this named element."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="VisibilityKind">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="VisibilityKind is an enumeration type that defines literals to determine the visibility of elements in a model."/>
+ </eAnnotations>
+ <eLiterals name="public">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A public element is visible to all elements that can access the contents of the namespace that owns it."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="private" value="1">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A private element is only visible inside the namespace that owns it."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="protected" value="2">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A protected element is visible to elements that have a generalization relationship to the namespace that owns it."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="package" value="3">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A package element is owned by a namespace that is not a package, and is visible to elements that are in the same package as its owning namespace. Only named elements that are not owned by packages can be marked as having package visibility. Any element marked as having package visibility is visible to all elements within the nearest enclosing package (given that other owning elements have proper visibility). Outside the nearest enclosing package, an element marked as having package visibility is not visible."/>
+ </eAnnotations>
+ </eLiterals>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Dependency" eSuperTypes="#//PackageableElement #//DirectedRelationship">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A dependency is a relationship that signifies that a single or a set of model elements requires other model elements for their specification or implementation. This means that the complete semantics of the depending elements is either semantically or structurally dependent on the definition of the supplier element(s)."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="supplier" ordered="false"
+ lowerBound="1" upperBound="-1" eType="#//NamedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The element(s) independent of the client element(s), in the same respect and the same dependency relationship. In some directed dependency relationships (such as Refinement Abstractions), a common convention in the domain of class-based OO software is to put the more abstract element in this role. Despite this convention, users of UML may stipulate a sense of dependency suitable for their domain, which makes a more abstract element dependent on that which is more specific."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//DirectedRelationship/target"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="client" ordered="false"
+ lowerBound="1" upperBound="-1" eType="#//NamedElement" eOpposite="#//NamedElement/clientDependency">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The element(s) dependent on the supplier element(s). In some cases (such as a Trace Abstraction) the assignment of direction (that is, the designation of the client element) is at the discretion of the modeler, and is a stipulation."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//DirectedRelationship/source"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="DirectedRelationship" abstract="true"
+ eSuperTypes="#//Relationship">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A directed relationship represents a relationship between a collection of source model elements and a collection of target model elements."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="source" ordered="false"
+ lowerBound="1" upperBound="-1" eType="#//Element" changeable="false" volatile="true"
+ transient="true" derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies the sources of the DirectedRelationship."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Relationship/relatedElement"/>
+ <eAnnotations source="union"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="target" ordered="false"
+ lowerBound="1" upperBound="-1" eType="#//Element" changeable="false" volatile="true"
+ transient="true" derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies the targets of the DirectedRelationship."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Relationship/relatedElement"/>
+ <eAnnotations source="union"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Relationship" abstract="true" eSuperTypes="#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Relationship is an abstract concept that specifies some kind of relationship between elements."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="relatedElement" ordered="false"
+ lowerBound="1" upperBound="-1" eType="#//Element" changeable="false" volatile="true"
+ transient="true" derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies the elements related by the Relationship."/>
+ </eAnnotations>
+ <eAnnotations source="union"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Namespace" abstract="true" eSuperTypes="#//NamedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A namespace is an element in a model that contains a set of named elements that can be identified by name."/>
+ </eAnnotations>
+ <eOperations name="members_distinguishable" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="All the members of a Namespace are distinguishable within it.&#xD;&#xA;membersAreDistinguishable()"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="createElementImport" ordered="false" lowerBound="1" eType="#//ElementImport">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Creates an import of the specified element into this namespace with the specified visibility."/>
+ </eAnnotations>
+ <eParameters name="element" ordered="false" lowerBound="1" eType="#//PackageableElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The element to import."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="visibility" ordered="false" lowerBound="1" eType="#//VisibilityKind">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The visibility for the new element import."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="createPackageImport" ordered="false" lowerBound="1" eType="#//PackageImport">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Creates an import of the specified package into this namespace with the specified visibility."/>
+ </eAnnotations>
+ <eParameters name="package_" ordered="false" lowerBound="1" eType="#//Package">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The package to import."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="visibility" ordered="false" lowerBound="1" eType="#//VisibilityKind">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The visibility for the new package import."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getImportedElements" ordered="false" upperBound="-1" eType="#//PackageableElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the elements imported by this namespace."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getImportedPackages" ordered="false" upperBound="-1" eType="#//Package">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the packages imported by this namespace."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getImportedMembers" ordered="false" upperBound="-1" eType="#//PackageableElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The importedMember property is derived from the ElementImports and the PackageImports. References the PackageableElements that are members of this Namespace as a result of either PackageImports or ElementImports.&#xD;&#xA;result = self.importMembers(self.elementImport.importedElement.asSet()-&#xA;>union(self.packageImport.importedPackage->collect(p | p.visibleMembers())))"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getNamesOfMember" ordered="false" upperBound="-1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query getNamesOfMember() takes importing into account. It gives back the set of names that an element would have in an importing namespace, either because it is owned, or if not owned then imported individually, or if not individually then from a package.&#xD;&#xA;The query getNamesOfMember() gives a set of all of the names that a member would have in a Namespace. In general a member can have multiple names in a Namespace if it is imported more than once with different aliases. The query takes account of importing. It gives back the set of names that an element would have in an importing namespace, either because it is owned, or if not owned then imported individually, or if not individually then from a package.&#xD;&#xA;result = if self.ownedMember ->includes(element)&#xA;then Set{}->include(element.name)&#xA;else let elementImports: ElementImport = self.elementImport->select(ei | ei.importedElement = element) in&#xA; if elementImports->notEmpty()&#xA; then elementImports->collect(el | el.getName())&#xA; else self.packageImport->select(pi | pi.importedPackage.visibleMembers()->includes(element))-> collect(pi | pi.importedPackage.getNamesOfMember(element))&#xA; endif&#xA;endif"/>
+ </eAnnotations>
+ <eParameters name="element" ordered="false" lowerBound="1" eType="#//NamedElement"/>
+ </eOperations>
+ <eOperations name="membersAreDistinguishable" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The Boolean query membersAreDistinguishable() determines whether all of the namespace's members are distinguishable within it.&#xD;&#xA;result = self.member->forAll( memb |&#xA;self.member->excluding(memb)->forAll(other |&#xA;memb.isDistinguishableFrom(other, self)))"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="importMembers" ordered="false" upperBound="-1" eType="#//PackageableElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query importMembers() defines which of a set of PackageableElements are actually imported into the namespace. This excludes hidden ones, i.e., those which have names that conflict with names of owned members, and also excludes elements which would have the same name when imported.&#xD;&#xA;result = self.excludeCollisions(imps)->select(imp | self.ownedMember->forAll(mem |&#xA;mem.imp.isDistinguishableFrom(mem, self)))"/>
+ </eAnnotations>
+ <eParameters name="imps" ordered="false" upperBound="-1" eType="#//PackageableElement"/>
+ </eOperations>
+ <eOperations name="excludeCollisions" ordered="false" upperBound="-1" eType="#//PackageableElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query excludeCollisions() excludes from a set of PackageableElements any that would not be distinguishable from each other in this namespace.&#xD;&#xA;result = imps->reject(imp1 | imps.exists(imp2 | not imp1.isDistinguishableFrom(imp2, self)))"/>
+ </eAnnotations>
+ <eParameters name="imps" ordered="false" upperBound="-1" eType="#//PackageableElement"/>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="elementImport" ordered="false"
+ upperBound="-1" eType="#//ElementImport" containment="true" eOpposite="#//ElementImport/importingNamespace">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the ElementImports owned by the Namespace."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="packageImport" ordered="false"
+ upperBound="-1" eType="#//PackageImport" containment="true" eOpposite="#//PackageImport/importingNamespace">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the PackageImports owned by the Namespace."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ownedRule" ordered="false"
+ upperBound="-1" eType="#//Constraint" containment="true" eOpposite="#//Constraint/context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies a set of Constraints owned by this Namespace."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="member" ordered="false"
+ upperBound="-1" eType="#//NamedElement" changeable="false" volatile="true"
+ transient="true" derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A collection of NamedElements identifiable within the Namespace, either by being owned or by being introduced by importing or inheritance."/>
+ </eAnnotations>
+ <eAnnotations source="union"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="importedMember" ordered="false"
+ upperBound="-1" eType="#//PackageableElement" changeable="false" volatile="true"
+ transient="true" derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the PackageableElements that are members of this Namespace as a result of either PackageImports or ElementImports."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/member"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ownedMember" ordered="false"
+ upperBound="-1" eType="#//NamedElement" changeable="false" volatile="true"
+ transient="true" derived="true" eOpposite="#//NamedElement/namespace">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A collection of NamedElements owned by the Namespace."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/member #//Element/ownedElement"/>
+ <eAnnotations source="union"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ElementImport" eSuperTypes="#//DirectedRelationship">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An element import identifies an element in another package, and allows the element to be referenced using its name without a qualifier."/>
+ </eAnnotations>
+ <eOperations name="visibility_public_or_private" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The visibility of an ElementImport is either public or private.&#xD;&#xA;self.visibility = #public or self.visibility = #private"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="imported_element_is_public" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An importedElement has either public visibility or no visibility at all.&#xD;&#xA;self.importedElement.visibility.notEmpty() implies self.importedElement.visibility = #public"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getName" ordered="false" lowerBound="1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query getName() returns the name under which the imported PackageableElement will be known in the importing namespace.&#xD;&#xA;result = if self.alias->notEmpty() then&#xA; self.alias&#xA;else&#xA; self.importedElement.name&#xA;endif"/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="visibility" ordered="false"
+ lowerBound="1" eType="#//VisibilityKind" defaultValueLiteral="public">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies the visibility of the imported PackageableElement within the importing Package. The default visibility is the same as that of the imported element. If the imported element does not have a visibility, it is possible to add visibility to the element import."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="alias" ordered="false"
+ eType="#//String" unsettable="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies the name that should be added to the namespace of the importing package in lieu of the name of the imported packagable element. The aliased name must not clash with any other member name in the importing package. By default, no alias is used."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="importedElement" ordered="false"
+ lowerBound="1" eType="#//PackageableElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies the PackageableElement whose name is to be added to a Namespace."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//DirectedRelationship/target"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="importingNamespace" ordered="false"
+ lowerBound="1" eType="#//Namespace" eOpposite="#//Namespace/elementImport">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies the Namespace that imports a PackageableElement from another Package."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//DirectedRelationship/source #//Element/owner"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="PackageImport" eSuperTypes="#//DirectedRelationship">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A package import is a relationship that allows the use of unqualified names to refer to package members from other namespaces."/>
+ </eAnnotations>
+ <eOperations name="public_or_private" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The visibility of a PackageImport is either public or private.&#xD;&#xA;self.visibility = #public or self.visibility = #private"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="visibility" ordered="false"
+ lowerBound="1" eType="#//VisibilityKind" defaultValueLiteral="public">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies the visibility of the imported PackageableElements within the importing Namespace, i.e., whether imported elements will in turn be visible to other packages that use that importingPackage as an importedPackage. If the PackageImport is public, the imported elements will be visible outside the package, while if it is private they will not."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="importedPackage" ordered="false"
+ lowerBound="1" eType="#//Package">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies the Package whose members are imported into a Namespace."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//DirectedRelationship/target"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="importingNamespace" ordered="false"
+ lowerBound="1" eType="#//Namespace" eOpposite="#//Namespace/packageImport">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies the Namespace that imports the members from a Package."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//DirectedRelationship/source #//Element/owner"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Constraint" eSuperTypes="#//PackageableElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A constraint is a condition or restriction expressed in natural language text or in a machine readable language for the purpose of declaring some of the semantics of an element."/>
+ </eAnnotations>
+ <eOperations name="not_apply_to_self" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A constraint cannot be applied to itself.&#xD;&#xA;not constrainedElement->includes(self)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="value_specification_boolean" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The value specification for a constraint must evaluate to a Boolean value.&#xD;&#xA;self.specification().booleanValue().isOclKindOf(Boolean)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="boolean_value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The value specification for a constraint must evaluate to a Boolean value.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="no_side_effects" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Evaluating the value specification for a constraint must not have side effects.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="not_applied_to_self" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A constraint cannot be applied to itself.&#xD;&#xA;not constrainedElement->includes(self)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="constrainedElement" upperBound="-1"
+ eType="#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The ordered set of Elements referenced by this Constraint."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="specification" ordered="false"
+ lowerBound="1" eType="#//ValueSpecification" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A condition that must be true when evaluated in order for the constraint to be satisfied."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="context" ordered="false"
+ eType="#//Namespace" eOpposite="#//Namespace/ownedRule">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies the namespace that owns the NamedElement."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//NamedElement/namespace"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ValueSpecification" abstract="true"
+ eSuperTypes="#//PackageableElement #//TypedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A value specification is the specification of a (possibly empty) set of instances, including both objects and data values.&#xD;&#xA;ValueSpecification specializes ParameterableElement to specify that a value specification can be exposed as a formal template parameter, and provided as an actual parameter in a binding of a template."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EOperation" name="isCompatibleWith" ordered="false"
+ lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query isCompatibleWith() determines if this parameterable element is compatible with the specified parameterable element. By default parameterable element P is compatible with parameterable element Q if the kind of P is the same or a subtype as the kind of Q. In addition, for ValueSpecification, the type must be conformant with the type of the specified parameterable element.&#xD;&#xA;&#xD;&#xA;result = p->oclIsKindOf(self.oclType) and self.type.conformsTo(p.oclAsType(TypedElement).type)"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//ParameterableElement/isCompatibleWith"/>
+ <eParameters name="p" ordered="false" lowerBound="1" eType="#//ParameterableElement"/>
+ </contents>
+ </eAnnotations>
+ <eOperations name="isComputable" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query isComputable() determines whether a value specification can be computed in a model. This operation cannot be fully defined in OCL. A conforming implementation is expected to deliver true for this operation for all value specifications that it can compute, and to compute all of those for which the operation is true. A conforming implementation is expected to be able to compute the value of all literals.&#xD;&#xA;result = false"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="integerValue" ordered="false" lowerBound="1" eType="#//Integer">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query integerValue() gives a single Integer value when one can be computed.&#xD;&#xA;result = Set{}"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="booleanValue" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query booleanValue() gives a single Boolean value when one can be computed.&#xD;&#xA;result = Set{}"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="stringValue" ordered="false" lowerBound="1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query stringValue() gives a single String value when one can be computed.&#xD;&#xA;result = Set{}"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="unlimitedValue" ordered="false" lowerBound="1" eType="#//UnlimitedNatural">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query unlimitedValue() gives a single UnlimitedNatural value when one can be computed.&#xD;&#xA;result = Set{}"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="isNull" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query isNull() returns true when it can be computed that the value is null.&#xD;&#xA;result = false"/>
+ </eAnnotations>
+ </eOperations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="TypedElement" abstract="true" eSuperTypes="#//NamedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A typed element is a kind of named element that represents an element with a type.&#xD;&#xA;A typed element has a type."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="type" ordered="false" eType="#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="This information is derived from the return result for this Operation.&#xD;&#xA;The type of the TypedElement."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Type" abstract="true" eSuperTypes="#//PackageableElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A type is a named element that is used as the type for a typed element. A type can be contained in a package.&#xD;&#xA;A type constrains the values represented by a typed element."/>
+ </eAnnotations>
+ <eOperations name="createAssociation" ordered="false" lowerBound="1" eType="#//Association">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Creates a(n) (binary) association between this type and the specified other type, with the specified navigabilities, aggregations, names, lower bounds, and upper bounds, and owned by this type's nearest package."/>
+ </eAnnotations>
+ <eParameters name="end1IsNavigable" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The navigability for the first end of the new association."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="end1Aggregation" ordered="false" lowerBound="1" eType="#//AggregationKind">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The aggregation for the first end of the new association."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="end1Name" ordered="false" lowerBound="1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The name for the first end of the new association."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="end1Lower" ordered="false" lowerBound="1" eType="#//Integer">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The lower bound for the first end of the new association."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="end1Upper" ordered="false" lowerBound="1" eType="#//UnlimitedNatural">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The upper bound for the first end of the new association."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="end1Type" ordered="false" lowerBound="1" eType="#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type for the first end of the new association."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="end2IsNavigable" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The navigability for the second end of the new association."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="end2Aggregation" ordered="false" lowerBound="1" eType="#//AggregationKind">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The aggregation for the second end of the new association."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="end2Name" ordered="false" lowerBound="1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The name for the second end of the new association."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="end2Lower" ordered="false" lowerBound="1" eType="#//Integer">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The lower bound for the second end of the new association."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="end2Upper" ordered="false" lowerBound="1" eType="#//UnlimitedNatural">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The upper bound for the second end of the new association."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getAssociations" ordered="false" upperBound="-1" eType="#//Association">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the associations in which this type is involved."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="conformsTo" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query conformsTo() gives true for a type that conforms to another. By default, two types do not conform to each other. This query is intended to be redefined for specific conformance situations.&#xD;&#xA;result = false"/>
+ </eAnnotations>
+ <eParameters name="other" ordered="false" lowerBound="1" eType="#//Type"/>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="package" ordered="false"
+ eType="#//Package" volatile="true" transient="true" derived="true" eOpposite="#//Package/ownedType">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies the owning package of this classifier, if any."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//NamedElement/namespace"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Association" eSuperTypes="#//Classifier #//Relationship">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An association describes a set of tuples whose values refer to typed instances. An instance of an association is called a link."/>
+ </eAnnotations>
+ <eOperations name="specialized_end_number" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An association specializing another association has the same number of ends as the other association.&#xD;&#xA;self.parents()->forAll(p | p.memberEnd.size() = self.memberEnd.size())"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="specialized_end_types" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="When an association specializes another association, every end of the specific association corresponds to an end of the general association, and the specific end reaches the same type or a subtype of the more general end.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="binary_associations" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Only binary associations can be aggregations.&#xD;&#xA;self.memberEnd->exists(aggregation &lt;> Aggregation::none) implies self.memberEnd->size() = 2"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="association_ends" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Association ends of associations with more than two ends must be owned by the association.&#xD;&#xA;if memberEnd->size() > 2 then ownedEnd->includesAll(memberEnd)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="isBinary" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Determines whether this association is a binary association, i.e. whether it has exactly two member ends."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getEndTypes" upperBound="-1" eType="#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="endType is derived from the types of the member ends.&#xD;&#xA;result = self.memberEnd->collect(e | e.type)"/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ownedEnd" upperBound="-1"
+ eType="#//Property" containment="true" eOpposite="#//Property/owningAssociation">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The ends that are owned by the association itself."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Association/memberEnd #//Classifier/feature #//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="memberEnd" lowerBound="2"
+ upperBound="-1" eType="#//Property" eOpposite="#//Property/association">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Each end represents participation of instances of the classifier connected to the end in links of the association."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/member"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isDerived" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies whether the association is derived from other model elements such as other associations or constraints."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="endType" lowerBound="1"
+ upperBound="-1" eType="#//Type" changeable="false" volatile="true" transient="true"
+ derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the classifiers that are used as types of the ends of the association."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Relationship/relatedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="navigableOwnedEnd" ordered="false"
+ upperBound="-1" eType="#//Property">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The navigable ends that are owned by the association itself."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Association/ownedEnd"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Classifier" abstract="true" eSuperTypes="#//Namespace #//RedefinableElement #//Type #//TemplateableElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A classifier is a classification of instances - it describes a set of instances that have features in common. A classifier can specify a generalization hierarchy by referencing its general classifiers.&#xD;&#xA;A classifier has the capability to own collaboration uses. These collaboration uses link a collaboration with the classifier to give a description of the workings of the classifier.&#xD;&#xA;A classifier has the capability to own use cases. Although the owning classifier typically represents the subject to which the owned use cases apply, this is not necessarily the case. In principle, the same use case can be applied to multiple subjects, as identified by the subject association role of a use case.&#xD;&#xA;Classifier is defined to be a kind of templateable element so that a classifier can be parameterized. It is also defined to be a kind of parameterable element so that a classifier can be a formal template parameter."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EOperation" name="isTemplate" ordered="false" lowerBound="1"
+ eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query isTemplate() returns whether this templateable element is actually a template.&#xD;&#xA;result = oclAsType(TemplatableElement).isTemplate() or general->exists(g | g.isTemplate())"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//TemplateableElement/isTemplate"/>
+ </contents>
+ <contents xsi:type="ecore:EReference" name="ownedTemplateSignature" ordered="false"
+ eType="#//TemplateSignature" containment="true" eOpposite="#//RedefinableTemplateSignature/classifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The optional template signature specifying the formal template parameters."/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//TemplateableElement/ownedTemplateSignature"/>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </contents>
+ <contents xsi:type="ecore:EReference" name="templateParameter" ordered="false"
+ eType="#//TemplateParameter" eOpposite="#//ClassifierTemplateParameter/%duplicates%/parameteredElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The template parameter that exposes this element as a formal parameter."/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//ParameterableElement/templateParameter"/>
+ </contents>
+ </eAnnotations>
+ <eOperations name="no_cycles_in_generalization" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Generalization hierarchies must be directed and acyclical. A classifier can not be both a transitively general and transitively specific classifier of the same classifier.&#xD;&#xA;not self.allParents()->includes(self)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="generalization_hierarchies" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Generalization hierarchies must be directed and acyclical. A classifier can not be both a transitively general and transitively specific classifier of the same classifier.&#xD;&#xA;not self.allParents()->includes(self)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="specialize_type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A classifier may only specialize classifiers of a valid type.&#xD;&#xA;self.parents()->forAll(c | self.maySpecializeType(c))"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="maps_to_generalization_set" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The Classifier that maps to a GeneralizationSet may neither be a specific nor a general Classifier in any of the Generalization relationships defined for that GeneralizationSet. In other words, a power type may not be an instance of itself nor may its instances also be its subclasses.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getAllAttributes" ordered="false" upperBound="-1" eType="#//Property">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves all the attributes of this classifier, including those inherited from its parents."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getOperations" ordered="false" upperBound="-1" eType="#//Operation">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the operations of this classifier."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getAllOperations" ordered="false" upperBound="-1" eType="#//Operation">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves all the operations of this classifier, including those inherited from its parents."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getOperation" ordered="false" eType="#//Operation">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the first operation with the specified name, parameter names, and parameter types from this classifier."/>
+ </eAnnotations>
+ <eParameters name="name" ordered="false" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The name of the operation to retrieve, or null."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="parameterNames" ordered="false" upperBound="-1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The parameter names of the operation to retrieve, or null."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="parameterTypes" ordered="false" upperBound="-1" eType="#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The parameter types of the operation to retrieve, or null."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getOperation" ordered="false" eType="#//Operation">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the first operation with the specified name, parameter names, and parameter types from this classifier, ignoring case if indicated."/>
+ </eAnnotations>
+ <eParameters name="name" ordered="false" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The name of the operation to retrieve, or null."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="parameterNames" ordered="false" upperBound="-1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The parameter names of the operation to retrieve, or null."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="parameterTypes" ordered="false" upperBound="-1" eType="#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The parameter types of the operation to retrieve, or null."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="ignoreCase" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Whether to ignore case in String comparisons."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getUsedInterfaces" ordered="false" upperBound="-1" eType="#//Interface">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the interfaces on which this classifier has a usage dependency."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getAllUsedInterfaces" ordered="false" upperBound="-1" eType="#//Interface">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves all the interfaces on which this classifier or any of its parents has a usage dependency."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getGenerals" ordered="false" upperBound="-1" eType="#//Classifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The general classifiers are the classifiers referenced by the generalization relationships.&#xD;&#xA;result = self.parents()"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getInheritedMembers" ordered="false" upperBound="-1" eType="#//NamedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The inheritedMember association is derived by inheriting the inheritable members of the parents.&#xD;&#xA;result = self.inherit(self.parents()->collect(p | p.inheritableMembers(self))"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="allFeatures" ordered="false" upperBound="-1" eType="#//Feature">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query allFeatures() gives all of the features in the namespace of the classifier. In general, through mechanisms such as inheritance, this will be a larger set than feature.&#xD;&#xA;result = member->select(oclIsKindOf(Feature))"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="parents" ordered="false" upperBound="-1" eType="#//Classifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query parents() gives all of the immediate ancestors of a generalized Classifier.&#xD;&#xA;result = generalization.general"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="inheritableMembers" ordered="false" upperBound="-1" eType="#//NamedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query inheritableMembers() gives all of the members of a classifier that may be inherited in one of its descendants, subject to whatever visibility restrictions apply.&#xD;&#xA;c.allParents()->includes(self)&#xD;&#xA;result = member->select(m | c.hasVisibilityOf(m))"/>
+ </eAnnotations>
+ <eParameters name="c" ordered="false" lowerBound="1" eType="#//Classifier"/>
+ </eOperations>
+ <eOperations name="hasVisibilityOf" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query hasVisibilityOf() determines whether a named element is visible in the classifier. By default all are visible. It is only called when the argument is something owned by a parent.&#xD;&#xA;self.allParents()->collect(c | c.member)->includes(n)&#xD;&#xA;result = if (self.inheritedMember->includes(n)) then (n.visibility &lt;> #private) else true"/>
+ </eAnnotations>
+ <eParameters name="n" ordered="false" lowerBound="1" eType="#//NamedElement"/>
+ </eOperations>
+ <eOperations name="conformsTo" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query conformsTo() gives true for a classifier that defines a type that conforms to another. This is used, for example, in the specification of signature conformance for operations.&#xD;&#xA;result = (self=other) or (self.allParents()->includes(other))"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//Type/conformsTo"/>
+ <eParameters name="other" ordered="false" lowerBound="1" eType="#//Classifier"/>
+ </eOperations>
+ <eOperations name="inherit" ordered="false" upperBound="-1" eType="#//NamedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The inherit operation is overridden to exclude redefined properties.&#xD;&#xA;The query inherit() defines how to inherit a set of elements. Here the operation is defined to inherit them all. It is intended to be redefined in circumstances where inheritance is affected by redefinition.&#xD;&#xA;result = inhs"/>
+ </eAnnotations>
+ <eParameters name="inhs" ordered="false" upperBound="-1" eType="#//NamedElement"/>
+ </eOperations>
+ <eOperations name="maySpecializeType" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query maySpecializeType() determines whether this classifier may have a generalization relationship to classifiers of the specified type. By default a classifier may specialize classifiers of the same or a more general type. It is intended to be redefined by classifiers that have different specialization constraints.&#xD;&#xA;result = self.oclIsKindOf(c.oclType)"/>
+ </eAnnotations>
+ <eParameters name="c" ordered="false" lowerBound="1" eType="#//Classifier"/>
+ </eOperations>
+ <eOperations name="allParents" ordered="false" upperBound="-1" eType="#//Classifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query allParents() gives all of the direct and indirect ancestors of a generalized Classifier.&#xD;&#xA;result = self.parents()->union(self.parents()->collect(p | p.allParents())"/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isAbstract" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If true, the Classifier does not provide a complete declaration and can typically not be instantiated. An abstract classifier is intended to be used by other classifiers e.g. as the target of general metarelationships or generalization relationships.&#xD;&#xA;"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="generalization" ordered="false"
+ upperBound="-1" eType="#//Generalization" containment="true" eOpposite="#//Generalization/specific">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies the Generalization relationships for this Classifier. These Generalizations navigaten to more general classifiers in the generalization hierarchy."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="powertypeExtent" ordered="false"
+ upperBound="-1" eType="#//GeneralizationSet" eOpposite="#//GeneralizationSet/powertype">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Designates the GeneralizationSet of which the associated Classifier is a power type."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="feature" ordered="false"
+ upperBound="-1" eType="#//Feature" changeable="false" volatile="true" transient="true"
+ derived="true" eOpposite="#//Feature/featuringClassifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Note that there may be members of the Classifier that are of the type Feature but are not included in this association, e.g. inherited features.&#xD;&#xA;Specifies each feature defined in the classifier."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/member"/>
+ <eAnnotations source="union"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="inheritedMember" ordered="false"
+ upperBound="-1" eType="#//NamedElement" changeable="false" volatile="true"
+ transient="true" derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies all elements inherited by this classifier from the general classifiers."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/member"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="redefinedClassifier" ordered="false"
+ upperBound="-1" eType="#//Classifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the Classifiers that are redefined by this Classifier."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//RedefinableElement/redefinedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="general" ordered="false"
+ upperBound="-1" eType="#//Classifier" volatile="true" transient="true" derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the general classifier in the Generalization relationship.&#xD;&#xA;Specifies the general Classifiers for this Classifier."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="substitution" ordered="false"
+ upperBound="-1" eType="#//Substitution" containment="true" eOpposite="#//Substitution/substitutingClassifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the substitutions that are owned by this Classifier."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement #//NamedElement/clientDependency"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="attribute" ordered="false"
+ upperBound="-1" eType="#//Property" changeable="false" volatile="true" transient="true"
+ derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Refers to all of the Properties that are direct (i.e. not inherited or imported) attributes of the classifier."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Classifier/feature"/>
+ <eAnnotations source="union"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="representation" ordered="false"
+ eType="#//CollaborationUse">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References a collaboration use which indicates the collaboration that represents this classifier."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Classifier/collaborationUse"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="collaborationUse" ordered="false"
+ upperBound="-1" eType="#//CollaborationUse" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the collaboration uses owned by the classifier."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ownedUseCase" ordered="false"
+ upperBound="-1" eType="#//UseCase" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the use cases owned by this classifier."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="useCase" ordered="false"
+ upperBound="-1" eType="#//UseCase" eOpposite="#//UseCase/subject">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The set of use cases for which this Classifier is the subject."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="RedefinableElement" abstract="true"
+ eSuperTypes="#//NamedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A redefinable element is an element that, when defined in the context of a classifier, can be redefined more specifically or differently in the context of another classifier that specializes (directly or indirectly) the context classifier."/>
+ </eAnnotations>
+ <eOperations name="redefinition_context_valid" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="At least one of the redefinition contexts of the redefining element must be a specialization of at least one of the redefinition contexts for each redefined element.&#xD;&#xA;self.redefinedElement->forAll(e | self.isRedefinitionContextValid(e))"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="redefinition_consistent" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A redefining element must be consistent with each redefined element.&#xD;&#xA;self.redefinedElement->forAll(re | re.isConsistentWith(self))"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="isConsistentWith" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query isConsistentWith() specifies, for any two RedefinableElements in a context in which redefinition is possible, whether redefinition would be logically consistent. By default, this is false; this operation must be overridden for subclasses of RedefinableElement to define the consistency conditions.&#xD;&#xA;redefinee.isRedefinitionContextValid(self)&#xD;&#xA;result = false"/>
+ </eAnnotations>
+ <eParameters name="redefinee" ordered="false" lowerBound="1" eType="#//RedefinableElement"/>
+ </eOperations>
+ <eOperations name="isRedefinitionContextValid" ordered="false" lowerBound="1"
+ eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query isRedefinitionContextValid() specifies whether the redefinition contexts of this RedefinableElement are properly related to the redefinition contexts of the specified RedefinableElement to allow this element to redefine the other. By default at least one of the redefinition contexts of this element must be a specialization of at least one of the redefinition contexts of the specified element.&#xD;&#xA;result = redefinitionContext->exists(c | c.allParents()->includes(redefined.redefinitionContext)))"/>
+ </eAnnotations>
+ <eParameters name="redefined" ordered="false" lowerBound="1" eType="#//RedefinableElement"/>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isLeaf" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Indicates whether it is possible to further specialize a RedefinableElement. If the value is true, then it is not possible to further specialize the RedefinableElement."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="redefinedElement" ordered="false"
+ upperBound="-1" eType="#//RedefinableElement" changeable="false" volatile="true"
+ transient="true" derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The redefinable element that is being redefined by this element."/>
+ </eAnnotations>
+ <eAnnotations source="union"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="redefinitionContext" ordered="false"
+ upperBound="-1" eType="#//Classifier" changeable="false" volatile="true" transient="true"
+ derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the contexts that this element may be redefined from."/>
+ </eAnnotations>
+ <eAnnotations source="union"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="TemplateableElement" abstract="true"
+ eSuperTypes="#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A templateable element is an element that can optionally be defined as a template and bound to other templates."/>
+ </eAnnotations>
+ <eOperations name="parameterableElements" ordered="false" upperBound="-1" eType="#//ParameterableElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query parameterableElements() returns the set of elements that may be used as the parametered elements for a template parameter of this templateable element. By default, this set includes all the owned elements. Subclasses may override this operation if they choose to restrict the set of parameterable elements.&#xD;&#xA;result = allOwnedElements->select(oclIsKindOf(ParameterableElement))"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="isTemplate" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query isTemplate() returns whether this templateable element is actually a template.&#xD;&#xA;result = ownedTemplateSignature->notEmpty()"/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="templateBinding" ordered="false"
+ upperBound="-1" eType="#//TemplateBinding" containment="true" eOpposite="#//TemplateBinding/boundElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The optional bindings from this element to templates."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ownedTemplateSignature"
+ ordered="false" eType="#//TemplateSignature" containment="true" eOpposite="#//TemplateSignature/template">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The optional template signature specifying the formal template parameters."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="TemplateBinding" eSuperTypes="#//DirectedRelationship">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A template binding represents a relationship between a templateable element and a template. A template binding specifies the substitutions of actual parameters for the formal parameters of the template."/>
+ </eAnnotations>
+ <eOperations name="parameter_substitution_formal" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Each parameter substitution must refer to a formal template parameter of the target template signature.&#xD;&#xA;parameterSubstitution->forAll(b | template.parameter->includes(b.formal))"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="one_parameter_substitution" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A binding contains at most one parameter substitution for each formal template parameter of the target template signature.&#xD;&#xA;template.parameter->forAll(p | parameterSubstitution->select(b | b.formal = p)->size() &lt;= 1)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="signature" ordered="false"
+ lowerBound="1" eType="#//TemplateSignature">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The template signature for the template that is the target of the binding."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//DirectedRelationship/target"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="parameterSubstitution"
+ ordered="false" upperBound="-1" eType="#//TemplateParameterSubstitution" containment="true"
+ eOpposite="#//TemplateParameterSubstitution/templateBinding">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The parameter substitutions owned by this template binding."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="boundElement" ordered="false"
+ lowerBound="1" eType="#//TemplateableElement" eOpposite="#//TemplateableElement/templateBinding">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The element that is bound by this binding."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/owner #//DirectedRelationship/source"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="TemplateSignature" eSuperTypes="#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A template signature bundles the set of formal template parameters for a templated element."/>
+ </eAnnotations>
+ <eOperations name="own_elements" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Parameters must own the elements they parameter or those elements must be owned by the element being templated.&#xD;&#xA;templatedElement.ownedElement->includesAll(parameter.parameteredElement - parameter.ownedParameteredElement)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="parameter" lowerBound="1"
+ upperBound="-1" eType="#//TemplateParameter">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The ordered set of all formal template parameters for this template signature."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ownedParameter" upperBound="-1"
+ eType="#//TemplateParameter" containment="true" eOpposite="#//TemplateParameter/signature">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The formal template parameters that are owned by this template signature."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement #//TemplateSignature/parameter"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="template" ordered="false"
+ lowerBound="1" eType="#//TemplateableElement" eOpposite="#//TemplateableElement/ownedTemplateSignature">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The element that owns this template signature."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/owner"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="TemplateParameter" eSuperTypes="#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A template parameter exposes a parameterable element as a formal template parameter of a template."/>
+ </eAnnotations>
+ <eOperations name="must_be_compatible" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The default must be compatible with the formal template parameter.&#xD;&#xA;default->notEmpty() implies default->isCompatibleWith(parameteredElement)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="signature" ordered="false"
+ lowerBound="1" eType="#//TemplateSignature" eOpposite="#//TemplateSignature/ownedParameter">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The template signature that owns this template parameter."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/owner"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="parameteredElement" ordered="false"
+ lowerBound="1" eType="#//ParameterableElement" eOpposite="#//ParameterableElement/templateParameter">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The element exposed by this template parameter."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ownedParameteredElement"
+ ordered="false" eType="#//ParameterableElement" containment="true" eOpposite="#//ParameterableElement/owningTemplateParameter">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The element that is owned by this template parameter."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement #//TemplateParameter/parameteredElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="default" ordered="false"
+ eType="#//ParameterableElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The element that is the default for this formal template parameter."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ownedDefault" ordered="false"
+ eType="#//ParameterableElement" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The element that is owned by this template parameter for the purpose of providing a default."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//TemplateParameter/default #//Element/ownedElement"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ParameterableElement" abstract="true"
+ eSuperTypes="#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A parameterable element is an element that can be exposed as a formal template parameter for a template, or specified as an actual parameter in a binding of a template."/>
+ </eAnnotations>
+ <eOperations name="isCompatibleWith" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query isCompatibleWith() determines if this parameterable element is compatible with the specified parameterable element. By default parameterable element P is compatible with parameterable element Q if the kind of P is the same or a subtype as the kind of Q. Subclasses should override this operation to specify different compatibility constraints.&#xD;&#xA;result = p->oclIsKindOf(self.oclType)"/>
+ </eAnnotations>
+ <eParameters name="p" ordered="false" lowerBound="1" eType="#//ParameterableElement"/>
+ </eOperations>
+ <eOperations name="isTemplateParameter" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query isTemplateParameter() determines if this parameterable element is exposed as a formal template parameter.&#xD;&#xA;result = templateParameter->notEmpty()"/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="owningTemplateParameter"
+ ordered="false" eType="#//TemplateParameter" eOpposite="#//TemplateParameter/ownedParameteredElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The formal template parameter that owns this element."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/owner #//ParameterableElement/templateParameter"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="templateParameter" ordered="false"
+ eType="#//TemplateParameter" eOpposite="#//TemplateParameter/parameteredElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The template parameter that exposes this element as a formal parameter."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="TemplateParameterSubstitution" eSuperTypes="#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A template parameter substitution relates the actual parameter to a formal template parameter as part of a template binding."/>
+ </eAnnotations>
+ <eOperations name="must_be_compatible" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The actual parameter must be compatible with the formal template parameter, e.g. the actual parameter for a class template parameter must be a class.&#xD;&#xA;actual->forAll(a | a.isCompatibleWith(formal.parameteredElement))"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="formal" ordered="false"
+ lowerBound="1" eType="#//TemplateParameter">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The formal template parameter that is associated with this substitution."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="actual" ordered="false"
+ lowerBound="1" eType="#//ParameterableElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The element that is the actual parameter for this substitution."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ownedActual" ordered="false"
+ eType="#//ParameterableElement" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The actual parameter that is owned by this substitution."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//TemplateParameterSubstitution/actual #//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="templateBinding" ordered="false"
+ lowerBound="1" eType="#//TemplateBinding" eOpposite="#//TemplateBinding/parameterSubstitution">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The optional bindings from this element to templates."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/owner"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Generalization" eSuperTypes="#//DirectedRelationship">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A generalization is a taxonomic relationship between a more general classifier and a more specific classifier. Each instance of the specific classifier is also an indirect instance of the general classifier. Thus, the specific classifier inherits the features of the more general classifier.&#xD;&#xA;A generalization relates a specific classifier to a more general classifier, and is owned by the specific classifier."/>
+ </eAnnotations>
+ <eOperations name="generalization_same_classifier" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Every Generalization associated with a given GeneralizationSet must have the same general Classifier. That is, all Generalizations for a particular GeneralizationSet must have the same superclass.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isSubstitutable" ordered="false"
+ eType="#//Boolean" defaultValueLiteral="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Indicates whether the specific classifier can be used wherever the general classifier can be used. If true, the execution traces of the specific classifier will be a superset of the execution traces of the general classifier."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="general" ordered="false"
+ lowerBound="1" eType="#//Classifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the general classifier in the Generalization relationship."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//DirectedRelationship/target"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="generalizationSet" ordered="false"
+ upperBound="-1" eType="#//GeneralizationSet" eOpposite="#//GeneralizationSet/generalization">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Designates a set in which instances of Generalization is considered members."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="specific" ordered="false"
+ lowerBound="1" eType="#//Classifier" eOpposite="#//Classifier/generalization">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the specializing classifier in the Generalization relationship."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//DirectedRelationship/source #//Element/owner"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="GeneralizationSet" eSuperTypes="#//PackageableElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A generalization set is a packageable element whose instances define collections of subsets of generalization relationships."/>
+ </eAnnotations>
+ <eOperations name="generalization_same_classifier" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Every Generalization associated with a particular GeneralizationSet must have the same general Classifier.&#xD;&#xA;generalization->collect(g | g.general)->asSet()->size() &lt;= 1"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="maps_to_generalization_set" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The Classifier that maps to a GeneralizationSet may neither be a specific nor a general Classifier in any of the Generalization relationships defined for that GeneralizationSet. In other words, a power type may not be an instance of itself nor may its instances be its subclasses.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isCovering" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Indicates (via the associated Generalizations) whether or not the set of specific Classifiers are covering for a particular general classifier. When isCovering is true, every instance of a particular general Classifier is also an instance of at least one of its specific Classifiers for the GeneralizationSet. When isCovering is false, there are one or more instances of the particular general Classifier that are not instances of at least one of its specific Classifiers defined for the GeneralizationSet."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isDisjoint" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Indicates whether or not the set of specific Classifiers in a Generalization relationship have instance in common. If isDisjoint is true, the specific Classifiers for a particular GeneralizationSet have no members in common; that is, their intersection is empty. If isDisjoint is false, the specific Classifiers in a particular GeneralizationSet have one or more members in common; that is, their intersection is not empty. For example, Person could have two Generalization relationships, each with the different specific Classifier: Manager or Staff. This would be disjoint because every instance of Person must either be a Manager or Staff. In contrast, Person could have two Generalization relationships involving two specific (and non-covering) Classifiers: Sales Person and Manager. This GeneralizationSet would not be disjoint because there are instances of Person which can be a Sales Person and a Manager."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="powertype" ordered="false"
+ eType="#//Classifier" eOpposite="#//Classifier/powertypeExtent">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Designates the Classifier that is defined as the power type for the associated GeneralizationSet."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="generalization" ordered="false"
+ upperBound="-1" eType="#//Generalization" eOpposite="#//Generalization/generalizationSet">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Designates the instances of Generalization which are members of a given GeneralizationSet."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Feature" abstract="true" eSuperTypes="#//RedefinableElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A feature declares a behavioral or structural characteristic of instances of classifiers."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isStatic" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies whether this feature characterizes individual instances classified by the classifier (false) or the classifier itself (true)."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="featuringClassifier" ordered="false"
+ upperBound="-1" eType="#//Classifier" changeable="false" volatile="true" transient="true"
+ derived="true" eOpposite="#//Classifier/feature">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The Classifiers that have this Feature as a feature."/>
+ </eAnnotations>
+ <eAnnotations source="union"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Substitution" eSuperTypes="#//Realization">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A substitution is a relationship between two classifiers signifies that the substituting classifier complies with the contract specified by the contract classifier. This implies that instances of the substituting classifier are runtime substitutable where instances of the contract classifier are expected."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="contract" ordered="false"
+ lowerBound="1" eType="#//Classifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The contract with which the substituting classifier complies."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Dependency/supplier"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="substitutingClassifier"
+ ordered="false" lowerBound="1" eType="#//Classifier" eOpposite="#//Classifier/substitution">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Instances of the substituting classifier are runtime substitutable where instances of the contract classifier are expected."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Dependency/client"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Realization" eSuperTypes="#//Abstraction">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Realization is a specialized abstraction relationship between two sets of model elements, one representing a specification (the supplier) and the other represents an implementation of the latter (the client). Realization can be used to model stepwise refinement, optimizations, transformations, templates, model synthesis, framework composition, etc."/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Abstraction" eSuperTypes="#//Dependency">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An abstraction is a relationship that relates two elements or sets of elements that represent the same concept at different levels of abstraction or from different viewpoints."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="mapping" ordered="false"
+ eType="#//OpaqueExpression" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An composition of an Expression that states the abstraction relationship between the supplier and the client. In some cases, such as Derivation, it is usually formal and unidirectional; in other cases, such as Trace, it is usually informal and bidirectional. The mapping expression is optional and may be omitted if the precise relationship between the elements is not specified."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="OpaqueExpression" eSuperTypes="#//ValueSpecification">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An opaque expression is an uninterpreted textual statement that denotes a (possibly empty) set of values when evaluated in a context.&#xD;&#xA;Provides a mechanism for precisely defining the behavior of an opaque expression. An opaque expression is defined by a behavior restricted to return one result."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EOperation" name="stringValue" ordered="false" lowerBound="1"
+ eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="suppressedVisibility" value="true"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//ValueSpecification/stringValue"/>
+ </contents>
+ </eAnnotations>
+ <eOperations name="language_body_size" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If the language attribute is not empty, then the size of the body and language arrays must be the same.&#xD;&#xA;language->notEmpty() implies (body->size() = language->size())"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="only_return_result_parameters" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The behavior may only have return result parameters.&#xD;&#xA;self.behavior.notEmpty() implies&#xD;&#xA; self.behavior.ownedParameters->select(p | p.direction&lt;>#return)->isEmpty()"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="one_return_result_parameter" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The behavior must have exactly one return result parameter.&#xD;&#xA;self.behavior.notEmpty() implies&#xD;&#xA; self.behavior.ownedParameter->select(p | p.direction=#return)->size() = 1"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getResult" ordered="false" eType="#//Parameter">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="suppressedVisibility" value="true"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="value" ordered="false" lowerBound="1" eType="#//Integer">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query value() gives an integer value for an expression intended to produce one.&#xD;&#xA;self.isIntegral()&#xD;&#xA;true"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="isIntegral" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query isIntegral() tells whether an expression is intended to produce an integer.&#xD;&#xA;result = false"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="isPositive" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query isPositive() tells whether an integer expression has a positive value.&#xD;&#xA;self.isIntegral()&#xD;&#xA;result = false"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="isNonNegative" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query isNonNegative() tells whether an integer expression has a non-negative value.&#xD;&#xA;self.isIntegral()&#xD;&#xA;result = false"/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="body" unique="false" upperBound="-1"
+ eType="#//String" unsettable="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The text of the expression, possibly in multiple languages."/>
+ </eAnnotations>
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="element"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="language" upperBound="-1"
+ eType="#//String" unsettable="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies the languages in which the expression is stated. The interpretation of the expression body depends on the languages. If the languages are unspecified, they might be implicit from the expression body or the context. Languages are matched to body strings by order."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="result" ordered="false"
+ eType="#//Parameter" changeable="false" volatile="true" transient="true" derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Restricts an opaque expression to return exactly one return result. When the invocation of the opaque expression completes, a single set of values is returned to its owner. This association is derived from the single return result parameter of the associated behavior."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="behavior" ordered="false"
+ eType="#//Behavior">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies the behavior of the opaque expression."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Parameter" eSuperTypes="#//ConnectableElement #//MultiplicityElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A parameter is a specification of an argument used to pass information into or out of an invocation of a behavioral feature.&#xD;&#xA;Parameters are allowed to be treated as connectable elements.&#xD;&#xA;Parameters have support for streaming, exceptions, and parameter sets."/>
+ </eAnnotations>
+ <eOperations name="connector_end" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A parameter may only be associated with a connector end within the context of a collaboration.&#xD;&#xA;self.end.notEmpty() implies self.collaboration.notEmpty()"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="stream_and_exception" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A parameter cannot be a stream and exception at the same time.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="not_exception" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An input parameter cannot be an exception.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="reentrant_behaviors" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Reentrant behaviors cannot have stream parameters.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="in_and_out" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Only in and inout parameters may have a delete effect. Only out, inout, and return parameters may have a create effect.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getDefault" ordered="false" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="suppressedVisibility" value="true"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="isSetDefault" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="suppressedVisibility" value="true"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="setDefault" ordered="false" lowerBound="1">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="suppressedVisibility" value="true"/>
+ </eAnnotations>
+ <eParameters name="newDefault" ordered="false" lowerBound="1" eType="#//String"/>
+ </eOperations>
+ <eOperations name="unsetDefault" ordered="false" lowerBound="1">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="suppressedVisibility" value="true"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="setBooleanDefaultValue" ordered="false" lowerBound="1">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Sets the default value for this parameter to the specified Boolean value."/>
+ </eAnnotations>
+ <eParameters name="value" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The new default value."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="setIntegerDefaultValue" ordered="false" lowerBound="1">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Sets the default value for this parameter to the specified integer value."/>
+ </eAnnotations>
+ <eParameters name="value" ordered="false" lowerBound="1" eType="#//Integer">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The new default value."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="setStringDefaultValue" ordered="false" lowerBound="1">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Sets the default value for this parameter to the specified string value."/>
+ </eAnnotations>
+ <eParameters name="value" ordered="false" lowerBound="1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The new default value."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="setUnlimitedNaturalDefaultValue" ordered="false" lowerBound="1">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Sets the default value for this parameter to the specified unlimited natural value."/>
+ </eAnnotations>
+ <eParameters name="value" ordered="false" lowerBound="1" eType="#//UnlimitedNatural">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The new default value."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="setNullDefaultValue" ordered="false" lowerBound="1">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Sets the default value for this parameter to the null value."/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="parameterSet" ordered="false"
+ upperBound="-1" eType="#//ParameterSet" eOpposite="#//ParameterSet/parameter">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The parameter sets containing the parameter. See ParameterSet."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="operation" ordered="false"
+ eType="#//Operation" changeable="false" volatile="true" transient="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the Operation owning this parameter."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//NamedElement/namespace"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="direction" ordered="false"
+ lowerBound="1" eType="#//ParameterDirectionKind" defaultValueLiteral="in">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Indicates whether a parameter is being sent into or out of a behavioral element."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="default" ordered="false"
+ eType="#//String" volatile="true" transient="true" unsettable="true" derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies a String that represents a value to be used when no argument is supplied for the Parameter."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="defaultValue" ordered="false"
+ eType="#//ValueSpecification" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies a ValueSpecification that represents a value to be used when no argument is supplied for the Parameter."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isException" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Tells whether an output parameter may emit a value to the exclusion of the other outputs."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isStream" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Tells whether an input parameter may accept values while its behavior is executing, or whether an output parameter post values while the behavior is executing."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="effect" ordered="false"
+ eType="#//ParameterEffectKind" unsettable="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies the effect that the owner of the parameter has on values passed in or out of the parameter."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="MultiplicityElement" abstract="true"
+ eSuperTypes="#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A multiplicity is a definition of an inclusive interval of non-negative integers beginning with a lower bound and ending with a (possibly infinite) upper bound. A multiplicity element embeds this information to specify the allowable cardinalities for an instantiation of this element."/>
+ </eAnnotations>
+ <eOperations name="lower_ge_0" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The lower bound must be a non-negative integer literal.&#xD;&#xA;lowerBound()->notEmpty() implies lowerBound() >= 0"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="upper_ge_lower" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The upper bound must be greater than or equal to the lower bound.&#xD;&#xA;(upperBound()->notEmpty() and lowerBound()->notEmpty()) implies upperBound() >= lowerBound()"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="value_specification_no_side_effects" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If a non-literal ValueSpecification is used for the lower or upper bound, then evaluating that specification must not have side effects.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="value_specification_constant" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If a non-literal ValueSpecification is used for the lower or upper bound, then that specification must be a constant expression.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="setLower" ordered="false" lowerBound="1">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="suppressedVisibility" value="true"/>
+ </eAnnotations>
+ <eParameters name="newLower" ordered="false" lowerBound="1" eType="#//Integer"/>
+ </eOperations>
+ <eOperations name="setUpper" ordered="false" lowerBound="1">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="suppressedVisibility" value="true"/>
+ </eAnnotations>
+ <eParameters name="newUpper" ordered="false" lowerBound="1" eType="#//UnlimitedNatural"/>
+ </eOperations>
+ <eOperations name="getLower" ordered="false" lowerBound="1" eType="#//Integer">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The derived lower attribute must equal the lowerBound.&#xD;&#xA;result = lowerBound()"/>
+ <details key="suppressedVisibility" value="true"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getUpper" ordered="false" lowerBound="1" eType="#//UnlimitedNatural">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The derived upper attribute must equal the upperBound.&#xD;&#xA;result = upperBound()"/>
+ <details key="suppressedVisibility" value="true"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="isMultivalued" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query isMultivalued() checks whether this multiplicity has an upper bound greater than one.&#xD;&#xA;upperBound()->notEmpty()&#xD;&#xA;result = upperBound() > 1"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="includesCardinality" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query includesCardinality() checks whether the specified cardinality is valid for this multiplicity.&#xD;&#xA;upperBound()->notEmpty() and lowerBound()->notEmpty()&#xD;&#xA;result = (lowerBound() &lt;= C) and (upperBound() >= C)"/>
+ </eAnnotations>
+ <eParameters name="C" ordered="false" lowerBound="1" eType="#//Integer"/>
+ </eOperations>
+ <eOperations name="includesMultiplicity" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query includesMultiplicity() checks whether this multiplicity includes all the cardinalities allowed by the specified multiplicity.&#xD;&#xA;self.upperBound()->notEmpty() and self.lowerBound()->notEmpty() and M.upperBound()->notEmpty() and M.lowerBound()->notEmpty()&#xD;&#xA;result = (self.lowerBound() &lt;= M.lowerBound()) and (self.upperBound() >= M.upperBound())"/>
+ </eAnnotations>
+ <eParameters name="M" ordered="false" lowerBound="1" eType="#//MultiplicityElement"/>
+ </eOperations>
+ <eOperations name="lowerBound" ordered="false" lowerBound="1" eType="#//Integer">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query lowerBound() returns the lower bound of the multiplicity as an integer.&#xD;&#xA;result = if lowerValue->isEmpty() then 1 else lowerValue.integerValue() endif"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="upperBound" ordered="false" lowerBound="1" eType="#//UnlimitedNatural">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query upperBound() returns the upper bound of the multiplicity for a bounded multiplicity as an unlimited natural.&#xD;&#xA;result = if upperValue->isEmpty() then 1 else upperValue.unlimitedValue() endif"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="compatibleWith" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The operation compatibleWith takes another multiplicity as input. It checks if one multiplicity is compatible with another.&#xD;&#xA;result = Integer.allInstances()->forAll(i : Integer | self.includesCardinality(i) implies other.includesCardinality(i))"/>
+ </eAnnotations>
+ <eParameters name="other" ordered="false" lowerBound="1" eType="#//MultiplicityElement"/>
+ </eOperations>
+ <eOperations name="is" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The operation is determines if the upper and lower bound of the ranges are the ones given.&#xD;&#xA;result = (lowerbound = self.lowerbound and upperbound = self.upperbound)"/>
+ </eAnnotations>
+ <eParameters name="lowerbound" ordered="false" lowerBound="1" eType="#//Integer"/>
+ <eParameters name="upperbound" ordered="false" lowerBound="1" eType="#//Integer"/>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isOrdered" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="For a multivalued multiplicity, this attribute specifies whether the values in an instantiation of this element are sequentially ordered."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isUnique" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="For a multivalued multiplicity, this attributes specifies whether the values in an instantiation of this element are unique."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="upper" ordered="false"
+ eType="#//UnlimitedNatural" volatile="true" transient="true" defaultValueLiteral="1"
+ derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies the upper bound of the multiplicity interval."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="lower" ordered="false"
+ eType="#//Integer" volatile="true" transient="true" defaultValueLiteral="1"
+ derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies the lower bound of the multiplicity interval."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="upperValue" ordered="false"
+ eType="#//ValueSpecification" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The specification of the upper bound for this multiplicity."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="lowerValue" ordered="false"
+ eType="#//ValueSpecification" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The specification of the lower bound for this multiplicity."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ConnectableElement" abstract="true"
+ eSuperTypes="#//TypedElement #//ParameterableElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="ConnectableElement is an abstract metaclass representing a set of instances that play roles of a classifier. Connectable elements may be joined by attached connectors and specify configurations of linked instances to be created within an instance of the containing classifier.&#xD;&#xA;A connectable element may be exposed as a connectable element template parameter."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EReference" name="templateParameter" ordered="false"
+ eType="#//TemplateParameter" eOpposite="#//ConnectableElementTemplateParameter/%duplicates%/parameteredElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The ConnectableElementTemplateParameter for this ConnectableElement parameter."/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//ParameterableElement/templateParameter"/>
+ </contents>
+ </eAnnotations>
+ <eOperations name="getEnds" ordered="false" upperBound="-1" eType="#//ConnectorEnd">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="result = ConnectorEnd.allInstances()->select(e | e.role=self)"/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="end" upperBound="-1" eType="#//ConnectorEnd"
+ volatile="true" transient="true" derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Denotes a connector that attaches to this connectable element."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ConnectorEnd" eSuperTypes="#//MultiplicityElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A connector end is an endpoint of a connector, which attaches the connector to a connectable element. Each connector end is part of one connector."/>
+ </eAnnotations>
+ <eOperations name="multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The multiplicity of the connector end may not be more general than the multiplicity of the association typing the owning connector.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="part_with_port_empty" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If a connector end is attached to a port of the containing classifier, partWithPort will be empty.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="role_and_part_with_port" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If a connector end references both a role and a partWithPort, then the role must be a port that is defined by the type of the partWithPort.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="self_part_with_port" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The property held in self.partWithPort must not be a Port.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getDefiningEnd" ordered="false" lowerBound="1" eType="#//Property">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="suppressedVisibility" value="true"/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="definingEnd" ordered="false"
+ eType="#//Property" changeable="false" volatile="true" transient="true" derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A derived association referencing the corresponding association end on the association which types the connector owing this connector end. This association is derived by selecting the association end at the same place in the ordering of association ends as this connector end.&#xD;&#xA;"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="role" ordered="false" lowerBound="1"
+ eType="#//ConnectableElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The connectable element attached at this connector end. When an instance of the containing classifier is created, a link may (depending on the multiplicities) be created to an instance of the classifier that types this connectable element.&#xD;&#xA;"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="partWithPort" ordered="false"
+ eType="#//Property">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Indicates the role of the internal structure of a classifier with the port to which the connector end is attached."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Property" eSuperTypes="#//StructuralFeature #//ConnectableElement #//DeploymentTarget">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A property is a structural feature of a classifier that characterizes instances of the classifier. A property related by ownedAttribute to a classifier (other than an association) represents an attribute and might also represent an association end. It relates an instance of the class to a value or set of values of the type of the attribute. A property related by memberEnd or its specializations to an association represents an end of the association. The type of the property is the type of the end of the association.&#xD;&#xA;A property represents a set of instances that are owned by a containing classifier instance.&#xD;&#xA;A property has the capability of being a deployment target in a deployment relationship. This enables modeling the deployment to hierarchical nodes that have properties functioning as internal parts.&#xD;&#xA;Property represents a declared state of one or more instances in terms of a named relationship to a value or values. When a property is an attribute of a classifier, the value or values are related to the instance of the classifier by being held in slots of the instance. When a property is an association end, the value or values are related to the instance or instances at the other end(s) of the association. The range of valid values represented by the property can be controlled by setting the property's type.&#xD;&#xA;Property specializes ParameterableElement to specify that a property can be exposed as a formal template parameter, and provided as an actual parameter in a binding of a template."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EOperation" name="isConsistentWith" ordered="false"
+ lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query isConsistentWith() specifies, for any two Properties in a context in which redefinition is possible, whether redefinition would be logically consistent. A redefining property is consistent with a redefined property if the type of the redefining property conforms to the type of the redefined property, the multiplicity of the redefining property (if specified) is contained in the multiplicity of the redefined property, and the redefining property is derived if the redefined property is derived.&#xD;&#xA;redefinee.isRedefinitionContextValid(self)&#xD;&#xA;result = redefinee.oclIsKindOf(Property) and &#xA; let prop : Property = redefinee.oclAsType(Property) in &#xA; (prop.type.conformsTo(self.type) and &#xA; ((prop.lowerBound()->notEmpty() and self.lowerBound()->notEmpty()) implies prop.lowerBound() >= self.lowerBound()) and &#xA; ((prop.upperBound()->notEmpty() and self.upperBound()->notEmpty()) implies prop.lowerBound() &lt;= self.lowerBound()) and &#xA; (self.isDerived implies prop.isDerived) and&#xA; (self.isComposite implies prop.isComposite))"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//RedefinableElement/isConsistentWith"/>
+ <eParameters name="redefinee" ordered="false" lowerBound="1" eType="#//RedefinableElement"/>
+ </contents>
+ <contents xsi:type="ecore:EOperation" name="isCompatibleWith" ordered="false"
+ lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query isCompatibleWith() determines if this parameterable element is compatible with the specified parameterable element. By default parameterable element P is compatible with parameterable element Q if the kind of P is the same or a subtype as the kind of Q. In addition, for properties, the type must be conformant with the type of the specified parameterable element.&#xD;&#xA;&#xD;&#xA;result = p->oclIsKindOf(self.oclType) and self.type.conformsTo(p.oclAsType(TypedElement).type)"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//ParameterableElement/isCompatibleWith"/>
+ <eParameters name="p" ordered="false" lowerBound="1" eType="#//ParameterableElement"/>
+ </contents>
+ <contents xsi:type="ecore:EAttribute" name="isReadOnly" ordered="false" lowerBound="1"
+ eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If isReadOnly is true, the attribute may not be written to after initialization.&#xD;&#xA;If true, the attribute may only be read, and not written."/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//StructuralFeature/isReadOnly"/>
+ </contents>
+ </eAnnotations>
+ <eOperations name="multiplicity_of_composite" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A multiplicity of a composite aggregation must not have an upper bound greater than 1.&#xD;&#xA;A multiplicity on an aggregate end of a composite aggregation must not have an upper bound greater than 1.&#xD;&#xA;isComposite implies (upperBound()->isEmpty() or upperBound() &lt;= 1)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="subsetting_context_conforms" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Subsetting may only occur when the context of the subsetting property conforms to the context of the subsetted property.&#xD;&#xA;self.subsettedProperty->notEmpty() implies&#xA; (self.subsettingContext()->notEmpty() and self.subsettingContext()->forAll (sc |&#xA; self.subsettedProperty->forAll(sp |&#xA; sp.subsettingContext()->exists(c | sc.conformsTo(c)))))"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="redefined_property_inherited" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A redefined property must be inherited from a more general classifier containing the redefining property.&#xD;&#xA;if (redefinedProperty->notEmpty()) then&#xD;&#xA; (redefinitionContext->notEmpty() and&#xD;&#xA; redefinedProperty->forAll(rp|&#xD;&#xA; ((redefinitionContext->collect(fc|&#xD;&#xA; fc.allParents()))->asSet())->collect(c| c.allFeatures())->asSet()->includes(rp))"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="subsetting_rules" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A subsetting property may strengthen the type of the subsetted property, and its upper bound may be less.&#xD;&#xA;self.subsettedProperty->forAll(sp |&#xA; self.type.conformsTo(sp.type) and&#xA; ((self.upperBound()->notEmpty() and sp.upperBound()->notEmpty()) implies&#xA; self.upperBound()&lt;=sp.upperBound() ))"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="navigable_readonly" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Only a navigable property can be marked as readOnly.&#xD;&#xA;isReadOnly implies isNavigable()"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="derived_union_is_derived" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A derived union is derived.&#xD;&#xA;isDerivedUnion implies isDerived"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="derived_union_is_read_only" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A derived union is read only.&#xD;&#xA;isDerivedUnion implies isReadOnly"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="subsetted_property_names" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A property may not subset a property with the same name.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="deployment_target" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A Property can be a DeploymentTarget if it is a kind of Node and functions as a part in the internal structure of an encompassing Node.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="binding_to_attribute" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A binding of a property template parameter representing an attribute must be to an attribute.&#xD;&#xA;(isAttribute(self) and (templateParameterSubstitution->notEmpty())&#xD;&#xA; implies (templateParameterSubstitution->forAll(ts | isAttribute(ts.formal)))"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getDefault" ordered="false" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="suppressedVisibility" value="true"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="isSetDefault" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="suppressedVisibility" value="true"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="setDefault" ordered="false" lowerBound="1">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="suppressedVisibility" value="true"/>
+ </eAnnotations>
+ <eParameters name="newDefault" ordered="false" lowerBound="1" eType="#//String"/>
+ </eOperations>
+ <eOperations name="setIsComposite" ordered="false" lowerBound="1">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="suppressedVisibility" value="true"/>
+ </eAnnotations>
+ <eParameters name="newIsComposite" ordered="false" lowerBound="1" eType="#//Boolean"/>
+ </eOperations>
+ <eOperations name="setOpposite" ordered="false" lowerBound="1">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="suppressedVisibility" value="true"/>
+ </eAnnotations>
+ <eParameters name="newOpposite" ordered="false" lowerBound="1" eType="#//Property"/>
+ </eOperations>
+ <eOperations name="unsetDefault" ordered="false" lowerBound="1">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="suppressedVisibility" value="true"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="setIsNavigable" ordered="false" lowerBound="1">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Sets the navigability of this property as indicated."/>
+ </eAnnotations>
+ <eParameters name="isNavigable" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The new navigability."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getOtherEnd" ordered="false" eType="#//Property">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the other end of the (binary) association in which this property is a member end."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="setBooleanDefaultValue" ordered="false" lowerBound="1">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Sets the default value for this property to the specified Boolean value."/>
+ </eAnnotations>
+ <eParameters name="value" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The new default value."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="setIntegerDefaultValue" ordered="false" lowerBound="1">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Sets the default value for this property to the specified integer value."/>
+ </eAnnotations>
+ <eParameters name="value" ordered="false" lowerBound="1" eType="#//Integer">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The new default value."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="setStringDefaultValue" ordered="false" lowerBound="1">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Sets the default value for this property to the specified string value."/>
+ </eAnnotations>
+ <eParameters name="value" ordered="false" lowerBound="1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The new default value."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="setUnlimitedNaturalDefaultValue" ordered="false" lowerBound="1">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Sets the default value for this property to the specified unlimited natural value."/>
+ </eAnnotations>
+ <eParameters name="value" ordered="false" lowerBound="1" eType="#//UnlimitedNatural">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The new default value."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="setNullDefaultValue" ordered="false" lowerBound="1">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Sets the default value for this property to the null value."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="isAttribute" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query isAttribute() is true if the Property is defined as an attribute of some classifier.&#xD;&#xA;result = Classifier.allInstances->exists(c | c.attribute->includes(p))"/>
+ </eAnnotations>
+ <eParameters name="p" ordered="false" lowerBound="1" eType="#//Property"/>
+ </eOperations>
+ <eOperations name="getOpposite" ordered="false" lowerBound="1" eType="#//Property">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If this property is owned by a class, associated with a binary association, and the other end of the association is also owned by a class, then opposite gives the other end.&#xD;&#xA;result = if owningAssociation->isEmpty() and association.memberEnd->size() = 2&#xA; then&#xA; let otherEnd = (association.memberEnd - self)->any() in&#xA; if otherEnd.owningAssociation->isEmpty() then otherEnd else Set{} endif&#xA; else Set {}&#xA; endif"/>
+ <details key="suppressedVisibility" value="true"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="isComposite" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The value of isComposite is true only if aggregation is composite.&#xD;&#xA;result = (self.aggregation = #composite)"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="subsettingContext" ordered="false" upperBound="-1" eType="#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query subsettingContext() gives the context for subsetting a property. It consists, in the case of an attribute, of the corresponding classifier, and in the case of an association end, all of the classifiers at the other ends.&#xD;&#xA;result = if association->notEmpty()&#xA;then association.endType-type&#xA;else if classifier->notEmpty() then Set{classifier} else Set{} endif&#xA;endif"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="isNavigable" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query isNavigable() indicates whether it is possible to navigate across the property.&#xD;&#xA;result = not classifier->isEmpty() or association.owningAssociation.navigableOwnedEnd->includes(self)"/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="class" ordered="false"
+ eType="#//Class" changeable="false" volatile="true" transient="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the Class that owns the Property."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//NamedElement/namespace #//Feature/featuringClassifier"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="datatype" ordered="false"
+ eType="#//DataType" eOpposite="#//DataType/ownedAttribute">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The DataType that owns this Property."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//NamedElement/namespace #//Feature/featuringClassifier"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isDerived" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If isDerived is true, the value of the attribute is derived from information elsewhere.&#xD;&#xA;Specifies whether the Property is derived, i.e., whether its value or values can be computed from other information."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isDerivedUnion" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies whether the property is derived as the union of all of the properties that are constrained to subset it."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="default" ordered="false"
+ eType="#//String" volatile="true" transient="true" unsettable="true" derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies a String that represents a value to be used when no argument is supplied for the Property.&#xD;&#xA;A String that is evaluated to give a default value for the Property when an object of the owning Classifier is instantiated."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="aggregation" ordered="false"
+ lowerBound="1" eType="#//AggregationKind" defaultValueLiteral="none">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies the kind of aggregation that applies to the Property."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isComposite" ordered="false"
+ lowerBound="1" eType="#//Boolean" volatile="true" transient="true" defaultValueLiteral="false"
+ derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If isComposite is true, the object containing the attribute is a container for the object or value contained in the attribute.&#xD;&#xA;This is a derived value, indicating whether the aggregation of the Property is composite or not."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="redefinedProperty" ordered="false"
+ upperBound="-1" eType="#//Property">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the properties that are redefined by this property."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//RedefinableElement/redefinedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="owningAssociation" ordered="false"
+ eType="#//Association" eOpposite="#//Association/ownedEnd">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the owning association of this property, if any."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Property/association #//NamedElement/namespace #//Feature/featuringClassifier"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="defaultValue" ordered="false"
+ eType="#//ValueSpecification" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A ValueSpecification that is evaluated to give a default value for the Property when an object of the owning Classifier is instantiated."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="opposite" ordered="false"
+ eType="#//Property" volatile="true" transient="true" derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="In the case where the property is one navigable end of a binary association with both ends navigable, this gives the other end."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="subsettedProperty" ordered="false"
+ upperBound="-1" eType="#//Property">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the properties of which this property is constrained to be a subset."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="association" ordered="false"
+ eType="#//Association" eOpposite="#//Association/memberEnd">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the association of which this property is a member, if any."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="qualifier" upperBound="-1"
+ eType="#//Property" containment="true" eOpposite="#//Property/associationEnd">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An optional list of ordered qualifier attributes for the end. If the list is empty, then the Association is not qualified."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="associationEnd" ordered="false"
+ eType="#//Property" eOpposite="#//Property/qualifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Designates the optional association end that owns a qualifier attribute."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/owner"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="DeploymentTarget" abstract="true" eSuperTypes="#//NamedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A deployment target is the location for a deployed artifact."/>
+ </eAnnotations>
+ <eOperations name="getDeployedElements" ordered="false" upperBound="-1" eType="#//PackageableElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="result = ((self.deployment->collect(deployedArtifact))->collect(manifestation))->collect(utilizedElement)"/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="deployment" ordered="false"
+ upperBound="-1" eType="#//Deployment" containment="true" eOpposite="#//Deployment/location">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The set of Deployments for a DeploymentTarget."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement #//NamedElement/clientDependency"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="deployedElement" ordered="false"
+ upperBound="-1" eType="#//PackageableElement" changeable="false" volatile="true"
+ transient="true" derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The set of elements that are manifested in an Artifact that is involved in Deployment to a DeploymentTarget."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Deployment" eSuperTypes="#//Dependency">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A deployment is the allocation of an artifact or artifact instance to a deployment target.&#xD;&#xA;A component deployment is the deployment of one or more artifacts or artifact instances to a deployment target, optionally parameterized by a deployment specification. Examples are executables and configuration files."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="deployedArtifact" ordered="false"
+ upperBound="-1" eType="#//DeployedArtifact">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The Artifacts that are deployed onto a Node. This association specializes the supplier association."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Dependency/supplier"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="configuration" ordered="false"
+ upperBound="-1" eType="#//DeploymentSpecification" containment="true" eOpposite="#//DeploymentSpecification/deployment">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The specification of properties that parameterize the deployment and execution of one or more Artifacts."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="location" ordered="false"
+ lowerBound="1" eType="#//DeploymentTarget" eOpposite="#//DeploymentTarget/deployment">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The DeployedTarget which is the target of a Deployment."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Dependency/client"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="DeployedArtifact" abstract="true" eSuperTypes="#//NamedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A deployed artifact is an artifact or artifact instance that has been deployed to a deployment target."/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="DeploymentSpecification" eSuperTypes="#//Artifact">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A deployment specification specifies a set of properties that determine execution parameters of a component artifact that is deployed on a node. A deployment specification can be aimed at a specific type of container. An artifact that reifies or implements deployment specification properties is a deployment descriptor."/>
+ </eAnnotations>
+ <eOperations name="deployed_elements" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The deployedElements of a DeploymentTarget that are involved in a Deployment that has an associated Deployment-Specification is a kind of Component (i.e. the configured components).&#xD;&#xA;self.deployment->forAll (d | d.location.deployedElements->forAll (de |&#xD;&#xA; de.oclIsKindOf(Component)))"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="deployment_target" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The DeploymentTarget of a DeploymentSpecification is a kind of ExecutionEnvironment.&#xD;&#xA;result = self.deployment->forAll (d | d.location..oclIsKindOf(ExecutionEnvironment))"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="deploymentLocation" ordered="false"
+ eType="#//String" unsettable="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The location where an Artifact is deployed onto a Node. This is typically a 'directory' or 'memory address'."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="executionLocation" ordered="false"
+ eType="#//String" unsettable="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The location where a component Artifact executes. This may be a local or remote location."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="deployment" ordered="false"
+ eType="#//Deployment" eOpposite="#//Deployment/configuration">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The deployment with which the DeploymentSpecification is associated."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Artifact" eSuperTypes="#//Classifier #//DeployedArtifact">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An artifact is the specification of a physical piece of information that is used or produced by a software development process, or by deployment and operation of a system. Examples of artifacts include model files, source files, scripts, and binary executable files, a table in a database system, a development deliverable, or a word-processing document, a mail message.&#xD;&#xA;An artifact is the source of a deployment to a node."/>
+ </eAnnotations>
+ <eOperations name="createOwnedOperation" ordered="false" lowerBound="1" eType="#//Operation">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Creates an operation with the specified name, parameter names, parameter types, and return type (or null) as an owned operation of this artifact."/>
+ </eAnnotations>
+ <eParameters name="name" ordered="false" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The name for the new operation, or null."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="parameterNames" ordered="false" upperBound="-1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The parameter names for the new operation, or null."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="parameterTypes" ordered="false" upperBound="-1" eType="#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The parameter types for the new operation, or null."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="returnType" ordered="false" eType="#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The return type for the new operation, or null."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="createOwnedAttribute" ordered="false" lowerBound="1" eType="#//Property">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Creates a property with the specified name, type, lower bound, and upper bound as an owned attribute of this artifact."/>
+ </eAnnotations>
+ <eParameters name="name" ordered="false" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The name for the new attribute, or null."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="type" ordered="false" eType="#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type for the new attribute, or null."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="lower" ordered="false" lowerBound="1" eType="#//Integer">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The lower bound for the new attribute."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="upper" ordered="false" lowerBound="1" eType="#//UnlimitedNatural">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The upper bound for the new attribute."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="fileName" ordered="false"
+ eType="#//String" unsettable="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A concrete name that is used to refer to the Artifact in a physical context. Example: file system name, universal resource locator."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="nestedArtifact" ordered="false"
+ upperBound="-1" eType="#//Artifact" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The Artifacts that are defined (nested) within the Artifact.&#xD;&#xA;The association is a specialization of the ownedMember association from Namespace to NamedElement.&#xD;&#xA;"/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="manifestation" ordered="false"
+ upperBound="-1" eType="#//Manifestation" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The set of model elements that are manifested in the Artifact. That is, these model elements are utilized in the construction (or generation) of the artifact."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//NamedElement/clientDependency #//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ownedOperation" upperBound="-1"
+ eType="#//Operation" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The Operations defined for the Artifact. The association is a specialization of the ownedMember association."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Classifier/feature #//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ownedAttribute" upperBound="-1"
+ eType="#//Property" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The attributes or association ends defined for the Artifact.&#xD;&#xA;The association is a specialization of the ownedMember association.&#xD;&#xA;"/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Classifier/attribute #//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Manifestation" eSuperTypes="#//Abstraction">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A manifestation is the concrete physical rendering of one or more model elements by an artifact."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="utilizedElement" ordered="false"
+ lowerBound="1" eType="#//PackageableElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The model element that is utilized in the manifestation in an Artifact."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Dependency/supplier"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Operation" eSuperTypes="#//BehavioralFeature #//ParameterableElement #//TemplateableElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An operation is a behavioral feature of a classifier that specifies the name, type, parameters, and constraints for invoking an associated behavior.&#xD;&#xA;An operation may invoke both the execution of method behaviors as well as other behavioral responses.&#xD;&#xA;Operation specializes TemplateableElement in order to support specification of template operations and bound operations. Operation specializes ParameterableElement to specify that an operation can be exposed as a formal template parameter, and provided as an actual parameter in a binding of a template."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EOperation" name="isConsistentWith" ordered="false"
+ lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query isConsistentWith() specifies, for any two Operations in a context in which redefinition is possible, whether redefinition would be consistent in the sense of maintaining type covariance. Other senses of consistency may be required, for example to determine consistency in the sense of contravariance. Users may define alternative queries under names different from 'isConsistentWith()', as for example, users may define a query named 'isContravariantWith()'.&#xD;&#xA;A redefining operation is consistent with a redefined operation if it has the same number of owned parameters, and the type of each owned parameter conforms to the type of the corresponding redefined parameter. &#xD;&#xA;redefinee.isRedefinitionContextValid(self)&#xD;&#xA;result = (redefinee.oclIsKindOf(Operation) and&#xA;let op: Operation = redefinee.oclAsType(Operation) in&#xA;self.ownedParameter.size() = op.ownedParameter.size() and&#xA;forAll(i | op.ownedParameter[i].type.conformsTo(self.ownedParameter[i].type))&#xA;)"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//RedefinableElement/isConsistentWith"/>
+ <eParameters name="redefinee" ordered="false" lowerBound="1" eType="#//RedefinableElement"/>
+ </contents>
+ <contents xsi:type="ecore:EReference" name="ownedParameter" upperBound="-1"
+ eType="#//Parameter" containment="true" eOpposite="#//Parameter/operation">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies the ordered set of formal parameters of this BehavioralFeature.&#xD;&#xA;Specifies the parameters owned by this Operation."/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//BehavioralFeature/ownedParameter"/>
+ </contents>
+ <contents xsi:type="ecore:EReference" name="raisedException" ordered="false"
+ upperBound="-1" eType="#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the Types representing exceptions that may be raised during an invocation of this operation."/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//BehavioralFeature/raisedException"/>
+ </contents>
+ <contents xsi:type="ecore:EReference" name="templateParameter" ordered="false"
+ eType="#//TemplateParameter" eOpposite="#//OperationTemplateParameter/%duplicates%/parameteredElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The template parameter that exposes this element as a formal parameter."/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//ParameterableElement/templateParameter"/>
+ </contents>
+ </eAnnotations>
+ <eOperations name="at_most_one_return" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An operation can have at most one return parameter; i.e., an owned parameter with the direction set to 'return'&#xD;&#xA;self.ownedParameter->select(par | par.direction = #return)->size() &lt;= 1"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="only_body_for_query" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A bodyCondition can only be specified for a query operation.&#xD;&#xA;bodyCondition->notEmpty() implies isQuery"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getLower" ordered="false" lowerBound="1" eType="#//Integer">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="suppressedVisibility" value="true"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getUpper" ordered="false" lowerBound="1" eType="#//UnlimitedNatural">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="suppressedVisibility" value="true"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="setIsOrdered" ordered="false" lowerBound="1">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="suppressedVisibility" value="true"/>
+ </eAnnotations>
+ <eParameters name="newIsOrdered" ordered="false" lowerBound="1" eType="#//Boolean"/>
+ </eOperations>
+ <eOperations name="setIsUnique" ordered="false" lowerBound="1">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="suppressedVisibility" value="true"/>
+ </eAnnotations>
+ <eParameters name="newIsUnique" ordered="false" lowerBound="1" eType="#//Boolean"/>
+ </eOperations>
+ <eOperations name="setLower" ordered="false" lowerBound="1">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="suppressedVisibility" value="true"/>
+ </eAnnotations>
+ <eParameters name="newLower" ordered="false" lowerBound="1" eType="#//Integer"/>
+ </eOperations>
+ <eOperations name="setType" ordered="false" lowerBound="1">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="suppressedVisibility" value="true"/>
+ </eAnnotations>
+ <eParameters name="newType" ordered="false" lowerBound="1" eType="#//Type"/>
+ </eOperations>
+ <eOperations name="setUpper" ordered="false" lowerBound="1">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="suppressedVisibility" value="true"/>
+ </eAnnotations>
+ <eParameters name="newUpper" ordered="false" lowerBound="1" eType="#//UnlimitedNatural"/>
+ </eOperations>
+ <eOperations name="getReturnResult" ordered="false" eType="#//Parameter">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the (only) return result parameter for this operation."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="isOrdered" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If this operation has a return parameter, isOrdered equals the value of isOrdered for that parameter. Otherwise isOrdered is false.&#xD;&#xA;result = if returnResult()->notEmpty() then returnResult()->any().isOrdered else false endif"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="isUnique" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If this operation has a return parameter, isUnique equals the value of isUnique for that parameter. Otherwise isUnique is true.&#xD;&#xA;result = if returnResult()->notEmpty() then returnResult()->any().isUnique else true endif"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="lowerBound" ordered="false" lowerBound="1" eType="#//Integer">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If this operation has a return parameter, lower equals the value of lower for that parameter. Otherwise lower is not defined.&#xD;&#xA;result = if returnResult()->notEmpty() then returnResult()->any().lower else Set{} endif"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="upperBound" ordered="false" lowerBound="1" eType="#//UnlimitedNatural">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If this operation has a return parameter, upper equals the value of upper for that parameter. Otherwise upper is not defined.&#xD;&#xA;result = if returnResult()->notEmpty() then returnResult()->any().upper else Set{} endif"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getType" ordered="false" lowerBound="1" eType="#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If this operation has a return parameter, type equals the value of type for that parameter. Otherwise type is not defined.&#xD;&#xA;result = if returnResult()->notEmpty() then returnResult()->any().type else Set{} endif"/>
+ <details key="suppressedVisibility" value="true"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="returnResult" ordered="false" upperBound="-1" eType="#//Parameter">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query returnResult() returns the set containing the return parameter of the Operation if one exists, otherwise, it returns an empty set&#xD;&#xA;result = ownedParameter->select (par | par.direction = #return)"/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="interface" ordered="false"
+ eType="#//Interface" eOpposite="#//Interface/ownedOperation">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The Interface that owns this Operation."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//RedefinableElement/redefinitionContext"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="class" ordered="false"
+ eType="#//Class" eOpposite="#//Class/ownedOperation">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The class that owns the operation."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//RedefinableElement/redefinitionContext #//NamedElement/namespace #//Feature/featuringClassifier"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isQuery" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies whether an execution of the BehavioralFeature leaves the state of the system unchanged (isQuery=true) or whether side effects may occur (isQuery=false)."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isOrdered" ordered="false"
+ lowerBound="1" eType="#//Boolean" volatile="true" transient="true" defaultValueLiteral="false"
+ derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="This information is derived from the return result for this Operation.&#xD;&#xA;Specifies whether the return parameter is ordered or not, if present."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isUnique" ordered="false"
+ lowerBound="1" eType="#//Boolean" volatile="true" transient="true" defaultValueLiteral="true"
+ derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="This information is derived from the return result for this Operation.&#xD;&#xA;Specifies whether the return parameter is unique or not, if present."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="lower" ordered="false"
+ eType="#//Integer" volatile="true" transient="true" defaultValueLiteral="1"
+ derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="This information is derived from the return result for this Operation.&#xD;&#xA;Specifies the lower multiplicity of the return parameter, if present."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="upper" ordered="false"
+ eType="#//UnlimitedNatural" volatile="true" transient="true" defaultValueLiteral="1"
+ derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="This information is derived from the return result for this Operation.&#xD;&#xA;Specifies the upper multiplicity of the return parameter, if present."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="precondition" ordered="false"
+ upperBound="-1" eType="#//Constraint">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An optional set of Constraints on the state of the system when the Operation is invoked."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedRule"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="postcondition" ordered="false"
+ upperBound="-1" eType="#//Constraint">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An optional set of Constraints specifying the state of the system when the Operation is completed."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedRule"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="redefinedOperation" ordered="false"
+ upperBound="-1" eType="#//Operation">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the Operations that are redefined by this Operation."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//RedefinableElement/redefinedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="datatype" ordered="false"
+ eType="#//DataType" eOpposite="#//DataType/ownedOperation">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The DataType that owns this Operation."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//RedefinableElement/redefinitionContext #//NamedElement/namespace #//Feature/featuringClassifier"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="bodyCondition" ordered="false"
+ eType="#//Constraint">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An optional Constraint on the result values of an invocation of this Operation."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedRule"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="type" ordered="false" eType="#//Type"
+ volatile="true" transient="true" derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="This information is derived from the return result for this Operation.&#xD;&#xA;Specifies the return result of the operation, if present."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="BehavioralFeature" abstract="true" eSuperTypes="#//Namespace #//Feature">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A behavioral feature is a feature of a classifier that specifies an aspect of the behavior of its instances.&#xD;&#xA;A behavioral feature is implemented (realized) by a behavior. A behavioral feature specifies that a classifier will respond to a designated request by invoking its implementing method.&#xD;&#xA;A behavioral feature owns zero or more parameter sets."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EOperation" name="isDistinguishableFrom" ordered="false"
+ lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query isDistinguishableFrom() determines whether two BehavioralFeatures may coexist in the same Namespace. It specifies that they have to have different signatures.&#xD;&#xA;result = if n.oclIsKindOf(BehavioralFeature)&#xA;then&#xA; if ns.getNamesOfMember(self)->intersection(ns.getNamesOfMember(n))->notEmpty()&#xA; then Set{}->including(self)->including(n)->isUnique(bf | bf.ownedParameter->collect(type))&#xA; else true&#xA; endif&#xA;else true&#xA;endif"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//NamedElement/isDistinguishableFrom"/>
+ <eParameters name="n" ordered="false" lowerBound="1" eType="#//NamedElement"/>
+ <eParameters name="ns" ordered="false" lowerBound="1" eType="#//Namespace"/>
+ </contents>
+ </eAnnotations>
+ <eOperations name="createReturnResult" ordered="false" lowerBound="1" eType="#//Parameter">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Creates a return result parameter with the specified name and type."/>
+ </eAnnotations>
+ <eParameters name="name" ordered="false" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The name for the new return result, or null."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="type" ordered="false" eType="#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type for the new return result, or null."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ownedParameter" upperBound="-1"
+ eType="#//Parameter" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies the ordered set of formal parameters of this BehavioralFeature."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isAbstract" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If true, then the behavioral feature does not have an implementation, and one must be supplied by a more specific element. If false, the behavioral feature must have an implementation in the classifier or one must be inherited from a more general element."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="method" ordered="false"
+ upperBound="-1" eType="#//Behavior" eOpposite="#//Behavior/specification">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A behavioral description that implements the behavioral feature. There may be at most one behavior for a particular pairing of a classifier (as owner of the behavior) and a behavioral feature (as specification of the behavior)."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="concurrency" ordered="false"
+ lowerBound="1" eType="#//CallConcurrencyKind" defaultValueLiteral="sequential">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies the semantics of concurrent calls to the same passive instance (i.e., an instance originating from a class with isActive being false). Active instances control access to their own behavioral features."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="raisedException" ordered="false"
+ upperBound="-1" eType="#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the Types representing exceptions that may be raised during an invocation of this feature.&#xD;&#xA;The signals that the behavioral feature raises as exceptions."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ownedParameterSet" ordered="false"
+ upperBound="-1" eType="#//ParameterSet" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The ParameterSets owned by this BehavioralFeature."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Behavior" abstract="true" eSuperTypes="#//Class">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Behavior is a specification of how its context classifier changes state over time. This specification may be either a definition of possible behavior execution or emergent behavior, or a selective illustration of an interesting subset of possible executions. The latter form is typically used for capturing examples, such as a trace of a particular execution.&#xD;&#xA;A behavior owns zero or more parameter sets."/>
+ </eAnnotations>
+ <eOperations name="parameters_match" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The parameters of the behavior must match the parameters of the implemented behavioral feature.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="feature_of_context_classifier" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The implemented behavioral feature must be a feature (possibly inherited) of the context classifier of the behavior.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="must_realize" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If the implemented behavioral feature has been redefined in the ancestors of the owner of the behavior, then the behavior must realize the latest redefining behavioral feature.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="most_one_behaviour" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="There may be at most one behavior for a given pairing of classifier (as owner of the behavior) and behavioral feature (as specification of the behavior).&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getContext" ordered="false" eType="#//BehavioredClassifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="suppressedVisibility" value="true"/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isReentrant" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Tells whether the behavior can be invoked while it is still executing from a previous invocation."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="redefinedBehavior" ordered="false"
+ upperBound="-1" eType="#//Behavior">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References a behavior that this behavior redefines. A subtype of Behavior may redefine any other subtype of Behavior. If the behavior implements a behavioral feature, it replaces the redefined behavior. If the behavior is a classifier behavior, it extends the redefined behavior."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//RedefinableElement/redefinedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ownedParameter" upperBound="-1"
+ eType="#//Parameter" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References a list of parameters to the behavior which describes the order and type of arguments that can be given when the behavior is invoked and of the values which will be returned when the behavior completes its execution.&#xD;&#xA;"/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="context" ordered="false"
+ eType="#//BehavioredClassifier" changeable="false" volatile="true" transient="true"
+ derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The classifier that is the context for the execution of the behavior. If the behavior is owned by a BehavioredClassifier, that classifier is the context. Otherwise, the context is the first BehavioredClassifier reached by following the chain of owner relationships. For example, following this algorithm, the context of an entry action in a state machine is the classifier that owns the state machine. The features of the context classifier as well as the elements visible to the context classifier are visible to the behavior."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//RedefinableElement/redefinitionContext"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="precondition" ordered="false"
+ upperBound="-1" eType="#//Constraint">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An optional set of Constraints specifying what must be fulfilled when the behavior is invoked."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedRule"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="postcondition" ordered="false"
+ upperBound="-1" eType="#//Constraint">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An optional set of Constraints specifying what is fulfilled after the execution of the behavior is completed, if its precondition was fulfilled before its invocation."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedRule"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ownedParameterSet" ordered="false"
+ upperBound="-1" eType="#//ParameterSet" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The ParameterSets owned by this Behavior."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="specification" ordered="false"
+ eType="#//BehavioralFeature" eOpposite="#//BehavioralFeature/method">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Designates a behavioral feature that the behavior implements. The behavioral feature must be owned by the classifier that owns the behavior or be inherited by it. The parameters of the behavioral feature and the implementing behavior must match. A behavior does not need to have a specification, in which case it either is the classifer behavior of a BehavioredClassifier or it can only be invoked by another behavior of the classifier."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Class" eSuperTypes="#//EncapsulatedClassifier #//BehavioredClassifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A class describes a set of objects that share the same specifications of features, constraints, and semantics.&#xD;&#xA;A class may be designated as active (i.e., each of its instances having its own thread of control) or passive (i.e., each of its instances executing within the context of some other object). A class may also specify which signals the instances of this class handle.&#xD;&#xA;A class has the capability to have an internal structure and ports.&#xD;&#xA;Class has derived association that indicates how it may be extended through one or more stereotypes. Stereotype is the only kind of metaclass that cannot be extended by stereotypes."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EOperation" name="inherit" ordered="false" upperBound="-1"
+ eType="#//NamedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The inherit operation is overridden to exclude redefined properties.&#xD;&#xA;result = inhs->excluding(inh | ownedMember->select(oclIsKindOf(RedefinableElement))->select(redefinedElement->includes(inh)))"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//Classifier/inherit"/>
+ <eParameters name="inhs" ordered="false" upperBound="-1" eType="#//NamedElement"/>
+ </contents>
+ <contents xsi:type="ecore:EAttribute" name="isAbstract" ordered="false" lowerBound="1"
+ eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="True when a class is abstract.&#xD;&#xA;If true, the Classifier does not provide a complete declaration and can typically not be instantiated. An abstract classifier is intended to be used by other classifiers e.g. as the target of general metarelationships or generalization relationships."/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//Classifier/isAbstract"/>
+ </contents>
+ <contents xsi:type="ecore:EReference" name="ownedAttribute" upperBound="-1"
+ eType="#//Property" containment="true" eOpposite="#//Property/class">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The attributes (i.e. the properties) owned by the class."/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//StructuredClassifier/ownedAttribute"/>
+ <eAnnotations source="subsets" references="#//Classifier/attribute #//Namespace/ownedMember"/>
+ </contents>
+ </eAnnotations>
+ <eOperations name="passive_class" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A passive class may not own receptions.&#xD;&#xA;not self.isActive implies self.ownedReception.isEmpty()"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getExtensions" ordered="false" upperBound="-1" eType="#//Extension">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="suppressedVisibility" value="true"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="createOwnedOperation" ordered="false" lowerBound="1" eType="#//Operation">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Creates an operation with the specified name, parameter names, parameter types, and return type (or null) as an owned operation of this class."/>
+ </eAnnotations>
+ <eParameters name="name" ordered="false" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The name for the new operation, or null."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="parameterNames" ordered="false" upperBound="-1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The parameter names for the new operation, or null."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="parameterTypes" ordered="false" upperBound="-1" eType="#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The parameter types for the new operation, or null."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="returnType" ordered="false" eType="#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The return type for the new operation, or null."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="isMetaclass" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Determines whether this class is a metaclass."/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="nestedClassifier" upperBound="-1"
+ eType="#//Classifier" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References all the Classifiers that are defined (nested) within the Class."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ownedOperation" upperBound="-1"
+ eType="#//Operation" containment="true" eOpposite="#//Operation/class">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The operations owned by the class."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Classifier/feature #//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="superClass" ordered="false"
+ upperBound="-1" eType="#//Class" volatile="true" transient="true" derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="This gives the superclasses of a class."/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//Classifier/general"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isActive" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Determines whether an object specified by this class is active or not. If true, then the owning class is referred to as an active class. If false, then such a class is referred to as a passive class."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ownedReception" ordered="false"
+ upperBound="-1" eType="#//Reception" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Receptions that objects of this class are willing to accept."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedMember #//Classifier/feature"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="extension" ordered="false"
+ upperBound="-1" eType="#//Extension" changeable="false" volatile="true" transient="true"
+ derived="true" eOpposite="#//Extension/metaclass">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the Extensions that specify additional properties of the metaclass. The property is derived from the extensions whose memberEnds are typed by the Class."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="BehavioredClassifier" abstract="true"
+ eSuperTypes="#//Classifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A behaviored classifier may have an interface realization.&#xD;&#xA;A classifier can have behavior specifications defined in its namespace. One of these may specify the behavior of the classifier itself."/>
+ </eAnnotations>
+ <eOperations name="class_behavior" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If a behavior is classifier behavior, it does not have a specification.&#xD;&#xA;self.classifierBehavior.notEmpty() implies self.specification.isEmpty()"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getImplementedInterfaces" ordered="false" upperBound="-1" eType="#//Interface">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the interfaces on which this behaviored classifier has an interface realization dependency."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getAllImplementedInterfaces" ordered="false" upperBound="-1"
+ eType="#//Interface">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves all the interfaces on which this behaviored classifier or any of its parents has an interface realization dependency."/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ownedBehavior" ordered="false"
+ upperBound="-1" eType="#//Behavior" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References behavior specifications owned by a classifier."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="classifierBehavior" ordered="false"
+ eType="#//Behavior">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A behavior specification that specifies the behavior of the classifier itself."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//BehavioredClassifier/ownedBehavior"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="interfaceRealization" ordered="false"
+ upperBound="-1" eType="#//InterfaceRealization" containment="true" eOpposite="#//InterfaceRealization/implementingClassifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The set of InterfaceRealizations owned by the BehavioredClassifier. Interface realizations reference the Interfaces of which the BehavioredClassifier is an implementation."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement #//NamedElement/clientDependency"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ownedTrigger" ordered="false"
+ upperBound="-1" eType="#//Trigger" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References Trigger descriptions owned by a Classifier."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="InterfaceRealization" eSuperTypes="#//Realization">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An interface realization is a specialized realization relationship between a classifier and an interface. This relationship signifies that the realizing classifier conforms to the contract specified by the interface."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="contract" ordered="false"
+ lowerBound="1" eType="#//Interface">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the Interface specifying the conformance contract."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Dependency/supplier"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="implementingClassifier"
+ ordered="false" lowerBound="1" eType="#//BehavioredClassifier" eOpposite="#//BehavioredClassifier/interfaceRealization">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the BehavioredClassifier that owns this Interfacerealization (i.e., the classifier that realizes the Interface to which it points)."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Dependency/client"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Interface" eSuperTypes="#//Classifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An interface is a kind of classifier that represents a declaration of a set of coherent public features and obligations. An interface specifies a contract; any instance of a classifier that realizes the interface must fulfill that contract. The obligations that may be associated with an interface are in the form of various kinds of constraints (such as pre- and post-conditions) or protocol specifications, which may impose ordering restrictions on interactions through the interface.&#xD;&#xA;Interfaces may include receptions (in addition to operations).&#xD;&#xA;Since an interface specifies conformance characteristics, it does not own detailed behavior specifications. Instead, interfaces may own a protocol state machine that specifies event sequences and pre/post conditions for the operations and receptions described by the interface."/>
+ </eAnnotations>
+ <eOperations name="visibility" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The visibility of all features owned by an interface must be public.&#xD;&#xA;self.feature->forAll(f | f.visibility = #public)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="createOwnedOperation" ordered="false" lowerBound="1" eType="#//Operation">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Creates an operation with the specified name, parameter names, parameter types, and return type (or null) as an owned operation of this interface."/>
+ </eAnnotations>
+ <eParameters name="name" ordered="false" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The name for the new operation, or null."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="parameterNames" ordered="false" upperBound="-1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The parameter names for the new operation, or null."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="parameterTypes" ordered="false" upperBound="-1" eType="#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The parameter types for the new operation, or null."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="returnType" ordered="false" eType="#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The return type for the new operation, or null."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="createOwnedAttribute" ordered="false" lowerBound="1" eType="#//Property">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Creates a property with the specified name, type, lower bound, and upper bound as an owned attribute of this interface."/>
+ </eAnnotations>
+ <eParameters name="name" ordered="false" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The name for the new attribute, or null."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="type" ordered="false" eType="#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type for the new attribute, or null."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="lower" ordered="false" lowerBound="1" eType="#//Integer">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The lower bound for the new attribute."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="upper" ordered="false" lowerBound="1" eType="#//UnlimitedNatural">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The upper bound for the new attribute."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ownedAttribute" upperBound="-1"
+ eType="#//Property" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The attributes (i.e. the properties) owned by the class."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Classifier/attribute #//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ownedOperation" upperBound="-1"
+ eType="#//Operation" containment="true" eOpposite="#//Operation/interface">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The operations owned by the class."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Classifier/feature #//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="nestedClassifier" upperBound="-1"
+ eType="#//Classifier" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References all the Classifiers that are defined (nested) within the Class."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="redefinedInterface" ordered="false"
+ upperBound="-1" eType="#//Interface">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References all the Interfaces redefined by this Interface."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//RedefinableElement/redefinedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ownedReception" ordered="false"
+ upperBound="-1" eType="#//Reception" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Receptions that objects providing this interface are willing to accept."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Classifier/feature #//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="protocol" ordered="false"
+ eType="#//ProtocolStateMachine" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References a protocol state machine specifying the legal sequences of the invocation of the behavioral features described in the interface."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Reception" eSuperTypes="#//BehavioralFeature">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A reception is a declaration stating that a classifier is prepared to react to the receipt of a signal. A reception designates a signal and specifies the expected behavioral response. The details of handling a signal are specified by the behavior associated with the reception or the classifier itself."/>
+ </eAnnotations>
+ <eOperations name="not_query" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A Reception can not be a query.&#xD;&#xA;not self.isQuery"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="signal" ordered="false"
+ eType="#//Signal">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The signal that this reception handles."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Signal" eSuperTypes="#//Classifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A signal is a specification of send request instances communicated between objects. The receiving object handles the received request instances as specified by its receptions. The data carried by a send request (which was passed to it by the send invocation occurrence that caused that request) are represented as attributes of the signal. A signal is defined independently of the classifiers handling the signal occurrence."/>
+ </eAnnotations>
+ <eOperations name="createOwnedAttribute" ordered="false" lowerBound="1" eType="#//Property">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Creates a property with the specified name, type, lower bound, and upper bound as an owned attribute of this signal."/>
+ </eAnnotations>
+ <eParameters name="name" ordered="false" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The name for the new attribute, or null."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="type" ordered="false" eType="#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type for the new attribute, or null."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="lower" ordered="false" lowerBound="1" eType="#//Integer">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The lower bound for the new attribute."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="upper" ordered="false" lowerBound="1" eType="#//UnlimitedNatural">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The upper bound for the new attribute."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ownedAttribute" upperBound="-1"
+ eType="#//Property" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The attributes owned by the signal."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Classifier/attribute #//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ProtocolStateMachine" eSuperTypes="#//StateMachine">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A protocol state machine is always defined in the context of a classifier. It specifies which operations of the classifier can be called in which state and under which condition, thus specifying the allowed call sequences on the classifier's operations. A protocol state machine presents the possible and permitted transitions on the instances of its context classifier, together with the operations which carry the transitions. In this manner, an instance lifecycle can be created for a classifier, by specifying the order in which the operations can be activated and the states through which an instance progresses during its existence."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EOperation" name="classifier_context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A protocol state machine must only have a classifier context, not a behavioral feature context.&#xD;&#xA;(not context->isEmpty( )) and specification->isEmpty()"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//StateMachine/classifier_context"/>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </contents>
+ </eAnnotations>
+ <eOperations name="protocol_transitions" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="All transitions of a protocol state machine must be protocol transitions. (transitions as extended by the ProtocolStateMachines package)&#xD;&#xA;region->forAll(r | r.transition->forAll(t | t.oclIsTypeOf(ProtocolTransition)))"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="entry_exit_do" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The states of a protocol state machine cannot have entry, exit, or do activity actions.&#xD;&#xA;region->forAll(r | r.subvertex->forAll(v | v.oclIsKindOf(State) implies&#xA;(v.entry->isEmpty() and v.exit->isEmpty() and v.doActivity->isEmpty())))&#xA;"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="deep_or_shallow_history" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Protocol state machines cannot have deep or shallow history pseudostates.&#xD;&#xA;region->forAll (r | r.subvertex->forAll (v | v.oclIsKindOf(Psuedostate) implies&#xA;((v.kind &lt;> #deepHistory) and (v.kind &lt;> #shallowHistory)))))&#xA;"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="ports_connected" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If two ports are connected, then the protocol state machine of the required interface (if defined) must be conformant to the protocol state machine of the provided interface (if defined).&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="conformance" ordered="false"
+ upperBound="-1" eType="#//ProtocolConformance" containment="true" eOpposite="#//ProtocolConformance/specificMachine">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Conformance between protocol state machines."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="StateMachine" eSuperTypes="#//Behavior">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="State machines can be used to express the behavior of part of a system. Behavior is modeled as a traversal of a graph of state nodes interconnected by one or more joined transition arcs that are triggered by the dispatching of series of (event) occurrences. During this traversal, the state machine executes a series of activities associated with various elements of the state machine."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EOperation" name="isConsistentWith" ordered="false"
+ lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query isConsistentWith() specifies that a redefining state machine is consistent with a redefined state machine provided that the redefining state machine is an extension of the redefined state machine: Regions are inherited and regions can be added, inherited regions can be redefined. In case of multiple redefining state machines, extension implies that the redefining state machine gets orthogonal regions for each of the redefined state machines.&#xD;&#xA;result = true"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//RedefinableElement/isConsistentWith"/>
+ <eParameters name="redefinee" ordered="false" lowerBound="1" eType="#//RedefinableElement"/>
+ </contents>
+ </eAnnotations>
+ <eOperations name="classifier_context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The classifier context of a state machine cannot be an interface.&#xD;&#xA;context->notEmpty() implies not context.oclIsKindOf(Interface)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="context_classifier" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The context classifier of the method state machine of a behavioral feature must be the classifier that owns the behavioral feature.&#xD;&#xA;specification->notEmpty() implies (context->notEmpty() and specification->featuringClassifier->exists (c | c = context))"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="connection_points" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The connection points of a state machine are pseudostates of kind entry point or exit point.&#xD;&#xA;conectionPoint->forAll (c | c.kind = #entryPoint or c.kind = #exitPoint)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="method" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A state machine as the method for a behavioral feature cannot have entry/exit connection points.&#xD;&#xA;specification->notEmpty() implies connectionPoint->isEmpty()"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="LCA" ordered="false" lowerBound="1" eType="#//Namespace">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The operation LCA(s1,s2) returns an orthogonal state or region which is the least common ancestor of states s1 and s2, based on the statemachine containment hierarchy.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="s1" ordered="false" lowerBound="1" eType="#//State"/>
+ <eParameters name="s2" ordered="false" lowerBound="1" eType="#//State"/>
+ </eOperations>
+ <eOperations name="ancestor" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query ancestor(s1, s2) checks whether s2 is an ancestor state of state s1. context StateMachine::ancestor (s1 : State, s2 : State) : Boolean&#xD;&#xA;&#xD;&#xA;result = if (s2 = s1) then&#xA;true&#xA;else if (s1.container->isEmpty) then&#xA;true&#xA;else if (s2.container->isEmpty) then&#xA;false&#xA;else (ancestor (s1, s2.container))"/>
+ </eAnnotations>
+ <eParameters name="s1" ordered="false" lowerBound="1" eType="#//State"/>
+ <eParameters name="s2" ordered="false" lowerBound="1" eType="#//State"/>
+ </eOperations>
+ <eOperations name="isRedefinitionContextValid" ordered="false" lowerBound="1"
+ eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query isRedefinitionContextValid() specifies whether the redefinition contexts of a statemachine are properly related to the redefinition contexts of the specified statemachine to allow this element to redefine the other. The containing classifier of a redefining statemachine must redefine the containing classifier of the redefined statemachine.&#xD;&#xA;result = true"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//RedefinableElement/isRedefinitionContextValid"/>
+ <eParameters name="redefined" ordered="false" lowerBound="1" eType="#//StateMachine"/>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="region" ordered="false"
+ lowerBound="1" upperBound="-1" eType="#//Region" containment="true" eOpposite="#//Region/stateMachine">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The regions owned directly by the state machine."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="submachineState" ordered="false"
+ upperBound="-1" eType="#//State" eOpposite="#//State/submachine">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the submachine(s) in case of a submachine state. Multiple machines are referenced in case of a concurrent state."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="connectionPoint" ordered="false"
+ upperBound="-1" eType="#//Pseudostate" containment="true" eOpposite="#//Pseudostate/stateMachine">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The connection points defined for this state machine. They represent the interface of the state machine when used as part of submachine state."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="extendedStateMachine" ordered="false"
+ upperBound="-1" eType="#//StateMachine">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The state machines of which this is an extension."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//RedefinableElement/redefinedElement"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Region" eSuperTypes="#//Namespace #//RedefinableElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A region is an orthogonal part of either a composite state or a state machine. It contains states and transitions."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EOperation" name="isConsistentWith" ordered="false"
+ lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query isConsistentWith() specifies that a redefining region is consistent with a redefined region provided that the redefining region is an extension of the redefined region, i.e. it adds vertices and transitions and it redefines states and transitions of the redefined region.&#xD;&#xA;result = true"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//RedefinableElement/isConsistentWith"/>
+ <eParameters name="redefinee" ordered="false" lowerBound="1" eType="#//RedefinableElement"/>
+ </contents>
+ <contents xsi:type="ecore:EReference" name="redefinitionContext" ordered="false"
+ upperBound="-1" eType="#//Classifier" changeable="false" volatile="true"
+ transient="true" derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the classifier in which context this element may be redefined."/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//RedefinableElement/redefinitionContext"/>
+ </contents>
+ </eAnnotations>
+ <eOperations name="initial_vertex" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A region can have at most one initial vertex&#xD;&#xA;self.subvertex->select (v | v.oclIsKindOf(Pseudostate))->&#xA;select(p : Pseudostate | p.kind = #initial)->size() &lt;= 1&#xA;"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="deep_history_vertex" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A region can have at most one deep history vertex&#xD;&#xA;self.subvertex->select (v | v.oclIsKindOf(Pseudostate))->&#xA;select(p : Pseudostate | p.kind = #deepHistory)->size() &lt;= 1&#xA;"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="shallow_history_vertex" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A region can have at most one shallow history vertex&#xD;&#xA;self.subvertex->select(v | v.oclIsKindOf(Pseudostate))->&#xA;select(p : Pseudostate | p.kind = #shallowHistory)->size() &lt;= 1&#xA;"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="owned" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If a Region is owned by a StateMachine, then it cannot also be owned by a State and vice versa.&#xD;&#xA;(stateMachine->notEmpty() implies state->isEmpty()) and (state->notEmpty() implies stateMachine->isEmpty())"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="redefinitionContext" ordered="false" lowerBound="1" eType="#//Classifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The redefinition context of a region is the nearest containing statemachine&#xD;&#xA;result = let sm = containingStateMachine() in&#xA;if sm.context->isEmpty() or sm.general->notEmpty() then&#xA;sm&#xA;else&#xA;sm.context&#xA;endif"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="isRedefinitionContextValid" ordered="false" lowerBound="1"
+ eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query isRedefinitionContextValid() specifies whether the redefinition contexts of a region are properly related to the redefinition contexts of the specified region to allow this element to redefine the other. The containing statemachine/state of a redefining region must redefine the containing statemachine/state of the redefined region.&#xD;&#xA;result = true"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//RedefinableElement/isRedefinitionContextValid"/>
+ <eParameters name="redefined" ordered="false" lowerBound="1" eType="#//Region"/>
+ </eOperations>
+ <eOperations name="containingStateMachine" ordered="false" lowerBound="1" eType="#//StateMachine">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The operation containingStateMachine() returns the sate machine in which this Region is defined&#xD;&#xA;result = if stateMachine->isEmpty() &#xA;then&#xA;state.containingStateMachine()&#xA;else&#xA;stateMachine&#xA;endif"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="belongsToPSM" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The operation belongsToPSM () checks if the region belongs to a protocol state machine&#xD;&#xA;result = if not stateMachine->isEmpty() then&#xA;oclIsTypeOf(ProtocolStateMachine)&#xA;else if not state->isEmpty() then&#xA;state.container.belongsToPSM ()&#xA;else false"/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="subvertex" ordered="false"
+ upperBound="-1" eType="#//Vertex" containment="true" eOpposite="#//Vertex/container">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The set of vertices that are owned by this region."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="transition" ordered="false"
+ upperBound="-1" eType="#//Transition" containment="true" eOpposite="#//Transition/container">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The set of transitions owned by the region. Note that internal transitions are owned by a region, but applies to the source state."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="state" ordered="false"
+ eType="#//State" eOpposite="#//State/region">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The State that owns the Region. If a Region is owned by a State, then it cannot also be owned by a StateMachine."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//NamedElement/namespace"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="extendedRegion" ordered="false"
+ eType="#//Region">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The region of which this region is an extension."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//RedefinableElement/redefinedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="stateMachine" ordered="false"
+ eType="#//StateMachine" eOpposite="#//StateMachine/region">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The StateMachine that owns the Region. If a Region is owned by a StateMachine, then it cannot also be owned by a State."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//NamedElement/namespace"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Vertex" abstract="true" eSuperTypes="#//NamedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A vertex is an abstraction of a node in a state machine graph. In general, it can be the source or destination of any number of transitions."/>
+ </eAnnotations>
+ <eOperations name="containingStateMachine" ordered="false" lowerBound="1" eType="#//StateMachine">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The operation containingStateMachine() returns the state machine in which this Vertex is defined&#xD;&#xA;result = if not container->isEmpty()&#xA;then&#xA;-- the container is a region&#xA;container.containingStateMachine()&#xA;else if (oclIsKindOf(Pseudostate)) then&#xA;-- entry or exit point?&#xA;if (kind = #entryPoint) or (kind = #exitPoint) then&#xA;stateMachine&#xA;else if (oclIsKindOf(ConnectionPointReference)) then&#xA;state.containingStateMachine() -- no other valid cases possible&#xA;endif&#xA;"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getOutgoings" ordered="false" upperBound="-1" eType="#//Transition">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="result = Transition.allInstances()->select(t | t.source=self)"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getIncomings" ordered="false" upperBound="-1" eType="#//Transition">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="result = Transition.allInstances()->select(t | t.target=self)"/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="outgoing" ordered="false"
+ upperBound="-1" eType="#//Transition" volatile="true" transient="true" derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies the transitions departing from this vertex."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="incoming" ordered="false"
+ upperBound="-1" eType="#//Transition" volatile="true" transient="true" derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies the transitions entering this vertex."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="container" ordered="false"
+ eType="#//Region" eOpposite="#//Region/subvertex">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The region that contains this vertex."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//NamedElement/namespace"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Transition" eSuperTypes="#//Namespace #//RedefinableElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A transition is a directed relationship between a source vertex and a target vertex. It may be part of a compound transition, which takes the state machine from one state configuration to another, representing the complete response of the state machine to an occurrence of an event of a particular type."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EOperation" name="isConsistentWith" ordered="false"
+ lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query isConsistentWith() specifies that a redefining transition is consistent with a redefined transition provided that the redefining transition has the following relation to the redefined transition: A redefining transition redefines all properties of the corresponding redefined transition, except the source state and the trigger.&#xD;&#xA;result = (redefinee.oclIsKindOf(Transition) and&#xD;&#xA; let trans: Transition = redefinee.oclAsType(Transition) in&#xD;&#xA; (source() = trans.source() and trigger() = tran.trigger())&#xD;&#xA;redefinee.isRedefinitionContextValid(self)"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//RedefinableElement/isConsistentWith"/>
+ <eParameters name="redefinee" ordered="false" lowerBound="1" eType="#//RedefinableElement"/>
+ </contents>
+ <contents xsi:type="ecore:EReference" name="redefinitionContext" ordered="false"
+ upperBound="-1" eType="#//Classifier" changeable="false" volatile="true"
+ transient="true" derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the classifier in which context this element may be redefined."/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//RedefinableElement/redefinitionContext"/>
+ </contents>
+ </eAnnotations>
+ <eOperations name="fork_segment_guards" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A fork segment must not have guards or triggers.&#xD;&#xA;(source.oclIsKindOf(Pseudostate) and source.kind = #fork) implies (guard->isEmpty() and trigger->isEmpty())"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="join_segment_guards" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A join segment must not have guards or triggers.&#xD;&#xA;(target.oclIsKindOf(Pseudostate) and target.kind = #join) implies (guard->isEmpty() and trigger->isEmpty())"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="fork_segment_state" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A fork segment must always target a state.&#xD;&#xA;(source.oclIsKindOf(Pseudostate) and source.kind = #fork) implies (target.oclIsKindOf(State))"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="join_segment_state" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A join segment must always originate from a state.&#xD;&#xA;(target.oclIsKindOf(Pseudostate) and target.kind = #join) implies (source.oclIsKindOf(State))"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="outgoing_pseudostates" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Transitions outgoing pseudostates may not have a trigger.&#xD;&#xA;source.oclIsKindOf(Pseudostate) and (source.kind &lt;> #initial)) implies trigger->isEmpty()"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="initial_transition" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An initial transition at the topmost level (region of a statemachine) either has no trigger or it has a trigger with the stereotype &lt;&lt;create>>.&#xD;&#xA;self.source.oclIsKindOf(Pseudostate) implies&#xA;(self.source.oclAsType(Pseudostate).kind = #initial) implies&#xA;(self.source.container = self.stateMachine.top) implies&#xA;((self.trigger->isEmpty) or&#xA;(self.trigger.stereotype.name = 'create'))&#xA;"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="signatures_compatible" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="In case of more than one trigger, the signatures of these must be compatible in case the parameters of the signal are assigned to local variables/attributes.&#xD;&#xA;&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="redefinitionContext" ordered="false" lowerBound="1" eType="#//Classifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The redefinition context of a transition is the nearest containing statemachine.&#xD;&#xA;result = let sm = containingStateMachine() in&#xA;if sm.context->isEmpty() or sm.general->notEmpty() then&#xA;sm&#xA;else&#xA;sm.context&#xA;endif"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="containingStateMachine" ordered="false" lowerBound="1" eType="#//StateMachine">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query containingStateMachine() returns the state machine that contains the transition either directly or transitively.&#xD;&#xA;result = container.containingStateMachine()"/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" ordered="false" lowerBound="1"
+ eType="#//TransitionKind" defaultValueLiteral="external">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Indicates the precise type of the transition."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="container" ordered="false"
+ lowerBound="1" eType="#//Region" eOpposite="#//Region/transition">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Designates the region that owns this transition."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//NamedElement/namespace"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="source" ordered="false"
+ lowerBound="1" eType="#//Vertex">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Designates the originating vertex (state or pseudostate) of the transition."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="target" ordered="false"
+ lowerBound="1" eType="#//Vertex">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Designates the target vertex that is reached when the transition is taken."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="redefinedTransition" ordered="false"
+ eType="#//Transition">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The transition that is redefined by this transition."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//RedefinableElement/redefinedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="guard" ordered="false"
+ eType="#//Constraint">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A guard is a constraint that provides a fine-grained control over the firing of the transition. The guard is evaluated when an event occurrence is dispatched by the state machine. If the guard is true at that time, the transition may be enabled, otherwise, it is disabled. Guards should be pure expressions without side effects. Guard expressions with side effects are ill formed."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedRule"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="effect" ordered="false"
+ eType="#//Behavior" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies an optional behavior to be performed when the transition fires."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="trigger" ordered="false"
+ upperBound="-1" eType="#//Trigger" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies the triggers that may fire the transition."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="TransitionKind">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="TransitionKind is an enumeration type.&#xD;&#xA;kind=#local implies owner.source.isComposite&#xD;&#xA;kind=#external implies owner.source.isComposite"/>
+ </eAnnotations>
+ <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
+ <details key="constraints" value="state_is_local state_is_external"/>
+ </eAnnotations>
+ <eLiterals name="internal">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Implies that the transition, if triggered, occurs without exiting or entering the source state. Thus, it does not cause a state change. This means that the entry or exit condition of the source state will not be invoked. An internal transition can be taken even if the state machine is in one or more regions nested within this state."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="local" value="1">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Implies that the transition, if triggered, will not exit the composite (source) state, but it will apply to any state within the composite state, and these will be exited and entered."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="external" value="2">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Implies that the transition, if triggered, will exit the composite (source) state."/>
+ </eAnnotations>
+ </eLiterals>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Trigger" eSuperTypes="#//NamedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A trigger relates an event to a behavior that may affect an instance of the classifier.&#xD;&#xA;A trigger specification may be qualified by the port on which the event occurred."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="event" ordered="false"
+ lowerBound="1" eType="#//Event">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The event that causes the trigger."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="port" ordered="false" upperBound="-1"
+ eType="#//Port">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A optional port of the receiver object on which the behavioral feature is invoked."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Event" abstract="true" eSuperTypes="#//PackageableElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An event is the specification of some occurrence that may potentially trigger effects by an object."/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Port" eSuperTypes="#//Property">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A port is a property of a classifier that specifies a distinct interaction point between that classifier and its environment or between the (behavior of the) classifier and its internal parts. Ports are connected to properties of the classifier by connectors through which requests can be made to invoke the behavioral features of a classifier. A Port may specify the services a classifier provides (offers) to its environment as well as the services that a classifier expects (requires) of its environment.&#xD;&#xA;A port has an associated protocol state machine."/>
+ </eAnnotations>
+ <eOperations name="required_interfaces" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The required interfaces of a port must be provided by elements to which the port is connected.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="port_aggregation" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Port.aggregation must be composite.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="port_destroyed" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="When a port is destroyed, all connectors attached to this port will be destroyed also.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="default_value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A defaultValue for port cannot be specified when the type of the Port is an Interface&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getProvideds" ordered="false" upperBound="-1" eType="#//Interface">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="suppressedVisibility" value="true"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getRequireds" ordered="false" upperBound="-1" eType="#//Interface">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="suppressedVisibility" value="true"/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isBehavior" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies whether requests arriving at this port are sent to the classifier behavior of this classifier. Such ports are referred to as behavior port. Any invocation of a behavioral feature targeted at a behavior port will be handled by the instance of the owning classifier itself, rather than by any instances that this classifier may contain."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isService" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If true indicates that this port is used to provide the published functionality of a classifier; if false, this port is used to implement the classifier but is not part of the essential externally-visible functionality of the classifier and can, therefore, be altered or deleted along with the internal implementation of the classifier and other properties that are considered part of its implementation."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="required" ordered="false"
+ upperBound="-1" eType="#//Interface" changeable="false" volatile="true" transient="true"
+ derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the interfaces specifying the set of operations and receptions which the classifier expects its environment to handle. This association is derived as the set of interfaces required by the type of the port or its supertypes."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="redefinedPort" ordered="false"
+ upperBound="-1" eType="#//Port">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A port may be redefined when its containing classifier is specialized. The redefining port may have additional interfaces to those that are associated with the redefined port or it may replace an interface by one of its subtypes."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//RedefinableElement/redefinedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="provided" ordered="false"
+ upperBound="-1" eType="#//Interface" changeable="false" volatile="true" transient="true"
+ derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the interfaces specifying the set of operations and receptions which the classifier offers to its environment, and which it will handle either directly or by forwarding it to a part of its internal structure. This association is derived from the interfaces realized by the type of the port or by the type of the port, if the port was typed by an interface.&#xD;&#xA;"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="protocol" ordered="false"
+ eType="#//ProtocolStateMachine">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References an optional protocol state machine which describes valid interactions at this interaction point."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="State" eSuperTypes="#//Namespace #//RedefinableElement #//Vertex">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A state models a situation during which some (usually implicit) invariant condition holds.&#xD;&#xA;The states of protocol state machines are exposed to the users of their context classifiers. A protocol state represents an exposed stable situation of its context classifier: when an instance of the classifier is not processing any operation, users of this instance can always know its state configuration."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EOperation" name="isConsistentWith" ordered="false"
+ lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query isConsistentWith() specifies that a redefining state is consistent with a redefined state provided that the redefining state is an extension of the redefined state: A simple state can be redefined (extended) to become a composite state (by adding a region) and a composite state can be redefined (extended) by adding regions and by adding vertices, states, and transitions to inherited regions. All states may add or replace entry, exit, and 'doActivity' actions.&#xD;&#xA;result = true"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//RedefinableElement/isConsistentWith"/>
+ <eParameters name="redefinee" ordered="false" lowerBound="1" eType="#//RedefinableElement"/>
+ </contents>
+ <contents xsi:type="ecore:EOperation" name="containingStateMachine" ordered="false"
+ lowerBound="1" eType="#//StateMachine">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query containingStateMachine() returns the state machine that contains the state either directly or transitively.&#xD;&#xA;result = container.containingStateMachine()"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//Vertex/containingStateMachine"/>
+ </contents>
+ <contents xsi:type="ecore:EReference" name="redefinitionContext" ordered="false"
+ upperBound="-1" eType="#//Classifier" changeable="false" volatile="true"
+ transient="true" derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the classifier in which context this element may be redefined."/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//RedefinableElement/redefinitionContext"/>
+ </contents>
+ </eAnnotations>
+ <eOperations name="submachine_states" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Only submachine states can have connection point references.&#xD;&#xA;isSubmachineState implies connection->notEmpty ( )"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="destinations_or_sources_of_transitions" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The connection point references used as destinations/sources of transitions associated with a submachine state must be defined as entry/exit points in the submachine state machine.&#xD;&#xA;self.isSubmachineState implies (self.connection->forAll (cp |&#xD;&#xA;cp.entry->forAll (p | p.statemachine = self.submachine) and&#xD;&#xA;cp.exit->forAll (p | p.statemachine = self.submachine)))"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="submachine_or_regions" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A state is not allowed to have both a submachine and regions.&#xD;&#xA;isComposite implies not isSubmachineState"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="composite_states" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Only composite states can have entry or exit pseudostates defined.&#xD;&#xA;connectionPoint->notEmpty() implies isComoposite"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="entry_or_exit" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Only entry or exit pseudostates can serve as connection points.&#xD;&#xA;connectionPoint->forAll(cp|cp.kind = #entry or cp.kind = #exit)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="isSimple" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A simple state is a state without any regions.&#xD;&#xA;result = region.isEmpty()"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="isComposite" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A composite state is a state with at least one region.&#xD;&#xA;result = region.notEmpty()"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="isOrthogonal" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An orthogonal state is a composite state with at least 2 regions&#xD;&#xA;result = (region->size () > 1)"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="isSubmachineState" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Only submachine states can have a reference statemachine.&#xD;&#xA;result = submachine.notEmpty()"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="redefinitionContext" ordered="false" lowerBound="1" eType="#//Classifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The redefinition context of a state is the nearest containing statemachine.&#xD;&#xA;result = let sm = containingStateMachine() in&#xA;if sm.context->isEmpty() or sm.general->notEmpty() then&#xA;sm&#xA;else&#xA;sm.context&#xA;endif"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="isRedefinitionContextValid" ordered="false" lowerBound="1"
+ eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query isRedefinitionContextValid() specifies whether the redefinition contexts of a state are properly related to the redefinition contexts of the specified state to allow this element to redefine the other. The containing region of a redefining state must redefine the containing region of the redefined state.&#xD;&#xA;result = true"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//RedefinableElement/isRedefinitionContextValid"/>
+ <eParameters name="redefined" ordered="false" lowerBound="1" eType="#//State"/>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isComposite" ordered="false"
+ lowerBound="1" eType="#//Boolean" changeable="false" volatile="true" transient="true"
+ defaultValueLiteral="false" derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A state with isComposite=true is said to be a composite state. A composite state is a state that contains at least one region."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isOrthogonal" ordered="false"
+ lowerBound="1" eType="#//Boolean" changeable="false" volatile="true" transient="true"
+ defaultValueLiteral="false" derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A state with isOrthogonal=true is said to be an orthogonal composite state. An orthogonal composite state contains two or more regions."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isSimple" ordered="false"
+ lowerBound="1" eType="#//Boolean" changeable="false" volatile="true" transient="true"
+ defaultValueLiteral="true" derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A state with isSimple=true is said to be a simple state. A simple state does not have any regions and it does not refer to any submachine state machine."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isSubmachineState" ordered="false"
+ lowerBound="1" eType="#//Boolean" changeable="false" volatile="true" transient="true"
+ defaultValueLiteral="false" derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A state with isSubmachineState=true is said to be a submachine state. Such a state refers to a state machine (submachine)."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="submachine" ordered="false"
+ eType="#//StateMachine" eOpposite="#//StateMachine/submachineState">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The state machine that is to be inserted in place of the (submachine) state."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="connection" ordered="false"
+ upperBound="-1" eType="#//ConnectionPointReference" containment="true" eOpposite="#//ConnectionPointReference/state">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The entry and exit connection points used in conjunction with this (submachine) state, i.e. as targets and sources, respectively, in the region with the submachine state. A connection point reference references the corresponding definition of a connection point pseudostate in the statemachine referenced by the submachinestate."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="connectionPoint" ordered="false"
+ upperBound="-1" eType="#//Pseudostate" containment="true" eOpposite="#//Pseudostate/state">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The entry and exit pseudostates of a composite state. These can only be entry or exit Pseudostates, and they must have different names. They can only be defined for composite states."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="redefinedState" ordered="false"
+ eType="#//State">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The state of which this state is a redefinition."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//RedefinableElement/redefinedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="stateInvariant" ordered="false"
+ eType="#//Constraint" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies conditions that are always true when this state is the current state. In protocol state machines, state invariants are additional conditions to the preconditions of the outgoing transitions, and to the postcondition of the incoming transitions.&#xD;&#xA;"/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="entry" ordered="false"
+ eType="#//Behavior" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An optional behavior that is executed whenever this state is entered regardless of the transition taken to reach the state. If defined, entry actions are always executed to completion prior to any internal behavior or transitions performed within the state.&#xD;&#xA;"/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="exit" ordered="false" eType="#//Behavior"
+ containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An optional behavior that is executed whenever this state is exited regardless of which transition was taken out of the state. If defined, exit actions are always executed to completion only after all internal activities and transition actions have completed execution."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="doActivity" ordered="false"
+ eType="#//Behavior" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An optional behavior that is executed while being in the state. The execution starts when this state is entered, and stops either by itself, or when the state is exited, whichever comes first."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="deferrableTrigger" ordered="false"
+ upperBound="-1" eType="#//Trigger" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A list of triggers that are candidates to be retained by the state machine if they trigger no transitions out of the state (not consumed). A deferred trigger is retained until the state machine reaches a state configuration where it is no longer deferred.&#xD;&#xA;"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="region" ordered="false"
+ upperBound="-1" eType="#//Region" containment="true" eOpposite="#//Region/state">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The regions owned directly by the state."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ConnectionPointReference" eSuperTypes="#//Vertex">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A connection point reference represents a usage (as part of a submachine state) of an entry/exit point defined in the statemachine reference by the submachine state."/>
+ </eAnnotations>
+ <eOperations name="entry_pseudostates" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The entry Pseudostates must be Pseudostates with kind entryPoint.&#xD;&#xA;entry->notEmpty() implies entry->forAll(e | e.kind = #entryPoint)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="exit_pseudostates" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The exit Pseudostates must be Pseudostates with kind exitPoint.&#xD;&#xA;exit->notEmpty() implies exit->forAll(e | e.kind = #exitPoint)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="entry" ordered="false"
+ upperBound="-1" eType="#//Pseudostate">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The entryPoint kind pseudo states corresponding to this connection point."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="exit" ordered="false" upperBound="-1"
+ eType="#//Pseudostate">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The exitPoints kind pseudo states corresponding to this connection point."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="state" ordered="false"
+ eType="#//State" eOpposite="#//State/connection">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The State in which the connection point refreshens are defined."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//NamedElement/namespace"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Pseudostate" eSuperTypes="#//Vertex">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A pseudostate is an abstraction that encompasses different types of transient vertices in the state machine graph."/>
+ </eAnnotations>
+ <eOperations name="initial_vertex" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An initial vertex can have at most one outgoing transition.&#xD;&#xA;(self.kind = #initial) implies (self.outgoing->size &lt;= 1)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="history_vertices" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="History vertices can have at most one outgoing transition.&#xD;&#xA;((self.kind = #deepHistory) or (self.kind = #shallowHistory)) implies&#xA;(self.outgoing->size &lt;= 1)&#xA;"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="join_vertex" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="In a complete statemachine, a join vertex must have at least two incoming transitions and exactly one outgoing transition.&#xD;&#xA;(self.kind = #join) implies&#xA;((self.outgoing->size = 1) and (self.incoming->size >= 2))&#xA;"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="transitions_incoming" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="All transitions incoming a join vertex must originate in different regions of an orthogonal state.&#xD;&#xA;(self.kind = #join) implies&#xA; self.incoming->forAll (t1, t2 | t1&lt;>t2 implies&#xA; (self.stateMachine.LCA(t1.source, t2.source).container.isOrthogonal))"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="fork_vertex" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="In a complete statemachine, a fork vertex must have at least two outgoing transitions and exactly one incoming transition.&#xD;&#xA;(self.kind = #fork) implies&#xA;((self.incoming->size = 1) and (self.outgoing->size >= 2))&#xA;"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="transitions_outgoing" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="All transitions outgoing a fork vertex must target states in different regions of an orthogonal state.&#xD;&#xA;(self.kind = #fork) implies&#xA; self.outgoing->forAll (t1, t2 | t1&lt;>t2 implies&#xA; (self.stateMachine.LCA(t1.target, t2.target).container.isOrthogonal))"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="junction_vertex" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="In a complete statemachine, a junction vertex must have at least one incoming and one outgoing transition.&#xD;&#xA;(self.kind = #junction) implies&#xA;((self.incoming->size >= 1) and (self.outgoing->size >= 1))&#xA;"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="choice_vertex" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="In a complete statemachine, a choice vertex must have at least one incoming and one outgoing transition.&#xD;&#xA;(self.kind = #choice) implies&#xA;((self.incoming->size >= 1) and (self.outgoing->size >= 1))&#xA;"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="outgoing_from_initial" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The outgoing transition from and initial vertex may have a behavior, but not a trigger or a guard.&#xD;&#xA;(self.kind = #initial) implies (self.outgoing.guard->isEmpty()&#xD;&#xA; and self.outgoing.trigger->isEmpty())"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" ordered="false" lowerBound="1"
+ eType="#//PseudostateKind" defaultValueLiteral="initial">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Determines the precise type of the Pseudostate and can be one of: entryPoint, exitPoint, initial, deepHistory, shallowHistory, join, fork, junction, terminate or choice."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="stateMachine" ordered="false"
+ eType="#//StateMachine" eOpposite="#//StateMachine/connectionPoint">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The StateMachine in which this Pseudostate is defined. This only applies to Pseudostates of the kind entryPoint or exitPoint."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//NamedElement/namespace"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="state" ordered="false"
+ eType="#//State" eOpposite="#//State/connectionPoint">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The State that owns this pseudostate and in which it appears."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/owner"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="PseudostateKind">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="PseudostateKind is an enumeration type."/>
+ </eAnnotations>
+ <eLiterals name="initial">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An initial pseudostate represents a default vertex that is the source for a single transition to the default state of a composite state. There can be at most one initial vertex in a region. The outgoing transition from the initial vertex may have a behavior, but not a trigger or guard."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="deepHistory" value="1">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="DeepHistory represents the most recent active configuration of the composite state that directly contains this pseudostate; e.g. the state configuration that was active when the composite state was last exited. A composite state can have at most one deep history vertex. At most one transition may originate from the history connector to the default deep history state. This transition is taken in case the composite state had never been active before. Entry actions of states entered on the path to the state represented by a deep history are performed."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="shallowHistory" value="2">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="ShallowHistory represents the most recent active substate of its containing state (but not the substates of that substate). A composite state can have at most one shallow history vertex. A transition coming into the shallow history vertex is equivalent to a transition coming into the most recent active substate of a state. At most one transition may originate from the history connector to the default shallow history state. This transition is taken in case the composite state had never been active before. Entry actions of states entered on the path to the state represented by a shallow history are performed."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="join" value="3">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Join vertices serve to merge several transitions emanating from source vertices in different orthogonal regions. The transitions entering a join vertex cannot have guards or triggers."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="fork" value="4">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Fork vertices serve to split an incoming transition into two or more transitions terminating on orthogonal target vertices&#xD;&#xA;(i.e. vertices in different regions of a composite state). The segments outgoing from a fork vertex must not have guards or triggers."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="junction" value="5">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Junction vertices are semantic-free vertices that are used to chain together multiple transitions. They are used to construct compound transition paths between states. For example, a junction can be used to converge multiple incoming transitions into a single outgoing transition representing a shared transition path (this is known as an merge). Conversely, they can be used to split an incoming transition into multiple outgoing transition segments with different guard conditions. This realizes a static conditional branch. (In the latter case, outgoing transitions whose guard conditions evaluate to false are disabled. A predefined guard denoted 'else' may be defined for at most one outgoing transition. This transition is enabled if all the guards labeling the other transitions are false.) Static conditional branches are distinct from dynamic conditional branches that are realized by choice vertices (described below)."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="choice" value="6">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Choice vertices which, when reached, result in the dynamic evaluation of the guards of the triggers of its outgoing transitions. This realizes a dynamic conditional branch. It allows splitting of transitions into multiple outgoing paths such that the decision on which path to take may be a function of the results of prior actions performed in the same run-tocompletion step. If more than one of the guards evaluates to true, an arbitrary one is selected. If none of the guards evaluates to true, then the model is considered ill-formed. (To avoid this, it is recommended to define one outgoing transition with the predefined else guard for every choice vertex.) Choice vertices should be distinguished from static branch points that are based on junction points (described above)."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="entryPoint" value="7">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An entry point pseudostate is an entry point of a state machine or composite state. In each region of the state machine or composite state it has a single transition to a vertex within the same region."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="exitPoint" value="8">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An exit point pseudostate is an exit point of a state machine or composite state. Entering an exit point within any region of the composite state or state machine referenced by a submachine state implies the exit of this composite state or submachine state and the triggering of the transition that has this exit point as source in the state machine enclosing the submachine or composite state."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="terminate" value="9">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Entering a terminate pseudostate implies that the execution of this state machine by means of its context object is terminated. The state machine does not exit any states nor does it perform any exit actions other than those associated with the transition leading to the terminate pseudostate. Entering a terminate pseudostate is equivalent to invoking a DestroyObjectAction."/>
+ </eAnnotations>
+ </eLiterals>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ProtocolConformance" eSuperTypes="#//DirectedRelationship">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Protocol state machines can be redefined into more specific protocol state machines, or into behavioral state machines. Protocol conformance declares that the specific protocol state machine specifies a protocol that conforms to the general state machine one, or that the specific behavioral state machine abide by the protocol of the general protocol state machine."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="generalMachine" ordered="false"
+ lowerBound="1" eType="#//ProtocolStateMachine">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies the protocol state machine to which the specific state machine conforms."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//DirectedRelationship/target"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="specificMachine" ordered="false"
+ lowerBound="1" eType="#//ProtocolStateMachine" eOpposite="#//ProtocolStateMachine/conformance">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies the state machine which conforms to the general state machine."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//DirectedRelationship/source #//Element/owner"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="EncapsulatedClassifier" abstract="true"
+ eSuperTypes="#//StructuredClassifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A classifier has the ability to own ports as specific and type checked interaction points."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ownedPort" ordered="false"
+ upperBound="-1" eType="#//Port" volatile="true" transient="true" derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References a set of ports that an encapsulated classifier owns."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//StructuredClassifier/ownedAttribute"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="StructuredClassifier" abstract="true"
+ eSuperTypes="#//Classifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A structured classifier is an abstract metaclass that represents any classifier whose behavior can be fully or partly described by the collaboration of owned or referenced instances."/>
+ </eAnnotations>
+ <eOperations name="multiplicities" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The multiplicities on connected elements must be consistent.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="createOwnedAttribute" ordered="false" lowerBound="1" eType="#//Property">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Creates a property with the specified name, type, lower bound, and upper bound as an owned attribute of this structured classifier."/>
+ </eAnnotations>
+ <eParameters name="name" ordered="false" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The name for the new attribute, or null."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="type" ordered="false" eType="#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type for the new attribute, or null."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="lower" ordered="false" lowerBound="1" eType="#//Integer">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The lower bound for the new attribute."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="upper" ordered="false" lowerBound="1" eType="#//UnlimitedNatural">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The upper bound for the new attribute."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ownedAttribute" upperBound="-1"
+ eType="#//Property" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the properties owned by the classifier."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//StructuredClassifier/role #//Namespace/ownedMember #//Classifier/attribute"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="part" ordered="false" upperBound="-1"
+ eType="#//Property" changeable="false" volatile="true" transient="true" derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the properties specifying instances that the classifier owns by composition. This association is derived, selecting those owned properties where isComposite is true."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="role" ordered="false" upperBound="-1"
+ eType="#//ConnectableElement" changeable="false" volatile="true" transient="true"
+ derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the roles that instances may play in this classifier."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/member"/>
+ <eAnnotations source="union"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ownedConnector" ordered="false"
+ upperBound="-1" eType="#//Connector" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the connectors owned by the classifier."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Classifier/feature #//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Connector" eSuperTypes="#//Feature">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies a link that enables communication between two or more instances. This link may be an instance of an association, or it may represent the possibility of the instances being able to communicate because their identities are known by virtue of being passed in as parameters, held in variables or slots, or because the communicating instances are the same instance. The link may be realized by something as simple as a pointer or by something as complex as a network connection. In contrast to associations, which specify links between any instance of the associated classifiers, connectors specify links between instances playing the connected parts only.&#xD;&#xA;A delegation connector is a connector that links the external contract of a component (as specified by its ports) to the internal realization of that behavior by the component's parts. It represents the forwarding of signals (operation requests and events): a signal that arrives at a port that has a delegation connector to a part or to another port will be passed on to that target for handling.&#xD;&#xA;An assembly connector is a connector between two components that defines that one component provides the services that another component requires. An assembly connector is a connector that is defined from a required interface or port to a provided interface or port."/>
+ </eAnnotations>
+ <eOperations name="types" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The types of the connectable elements that the ends of a connector are attached to must conform to the types of the association ends of the association that types the connector, if any.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="compatible" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The connectable elements attached to the ends of a connector must be compatible.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="roles" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The ConnectableElements attached as roles to each ConnectorEnd owned by a Connector must be roles of the Classifier that owned the Connector, or they must be ports of such roles.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="between_interfaces_ports" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A delegation connector must only be defined between used Interfaces or Ports of the same kind, e.g. between two provided Ports or between two required Ports.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="between_interface_port_implements" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If a delegation connector is defined between a used Interface or Port and an internal Part Classifier, then that Classifier must have an 'implements' relationship to the Interface type of that Port.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="between_interface_port_signature" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If a delegation connector is defined between a source Interface or Port and a target Interface or Port, then the target Interface must support a signature compatible subset of Operations of the source Interface or Port.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="union_signature_compatible" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="In a complete model, if a source Port has delegation connectors to a set of delegated target Ports, then the union of the Interfaces of these target Ports must be signature compatible with the Interface that types the source Port.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="assembly_connector" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An assembly connector must only be defined from a required Interface or Ports to a provided Interface or Port.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="type" ordered="false" eType="#//Association">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An optional association that specifies the link corresponding to this connector."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="redefinedConnector" ordered="false"
+ upperBound="-1" eType="#//Connector">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A connector may be redefined when its containing classifier is specialized. The redefining connector may have a type that specializes the type of the redefined connector. The types of the connector ends of the redefining connector may specialize the types of the connector ends of the redefined connector. The properties of the connector ends of the redefining connector may be replaced."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//RedefinableElement/redefinedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="end" lowerBound="2" upperBound="-1"
+ eType="#//ConnectorEnd" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A connector consists of at least two connector ends, each representing the participation of instances of the classifiers typing the connectable elements attached to this end. The set of connector ends is ordered."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" ordered="false" eType="#//ConnectorKind"
+ unsettable="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Indicates the kind of connector."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="contract" ordered="false"
+ upperBound="-1" eType="#//Behavior">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The set of Behaviors that specify the valid interaction patterns across the connector."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="ConnectorKind">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="ConnectorKind is an enumeration type."/>
+ </eAnnotations>
+ <eLiterals name="assembly">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Indicates that the connector is an assembly connector."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="delegation" value="1">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Indicates that the connector is a delegation connector."/>
+ </eAnnotations>
+ </eLiterals>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Extension" eSuperTypes="#//Association">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An extension is used to indicate that the properties of a metaclass are extended through a stereotype, and gives the ability to flexibly add (and later remove) stereotypes to classes."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EReference" name="ownedEnd" upperBound="-1" eType="#//ExtensionEnd"
+ containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the end of the extension that is typed by a Stereotype."/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//Association/ownedEnd"/>
+ </contents>
+ </eAnnotations>
+ <eOperations name="non_owned_end" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The non-owned end of an Extension is typed by a Class.&#xD;&#xA;metaclassEnd()->notEmpty() and metaclass()->oclIsKindOf(Class)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="is_binary" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An Extension is binary, i.e., it has only two memberEnds.&#xD;&#xA;memberEnd->size() = 2"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getStereotypeEnd" ordered="false" eType="#//Property">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the extension end that is typed by a stereotype (as opposed to a metaclass)."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getStereotype" ordered="false" eType="#//Stereotype">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the stereotype that extends a metaclass through this extension."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="metaclassEnd" ordered="false" lowerBound="1" eType="#//Property">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query metaclassEnd() returns the Property that is typed by a metaclass (as opposed to a stereotype).&#xD;&#xA;result = memberEnd->reject(ownedEnd)"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getMetaclass" ordered="false" lowerBound="1" eType="#//Class">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query metaclass() returns the metaclass that is being extended (as opposed to the extending stereotype).&#xD;&#xA;result = metaclassEnd().type"/>
+ <details key="suppressedVisibility" value="true"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="isRequired" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query isRequired() is true if the owned end has a multiplicity with the lower bound of 1.&#xD;&#xA;result = (ownedEnd->lowerBound() = 1)"/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isRequired" ordered="false"
+ lowerBound="1" eType="#//Boolean" changeable="false" volatile="true" transient="true"
+ defaultValueLiteral="false" derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Indicates whether an instance of the extending stereotype must be created when an instance of the extended class is created. The attribute value is derived from the multiplicity of the Property referenced by Extension::ownedEnd; a multiplicity of 1 means that isRequired is true, but otherwise it is false. Since the default multiplicity of an ExtensionEnd is 0..1, the default value of isRequired is false."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="metaclass" ordered="false"
+ lowerBound="1" eType="#//Class" changeable="false" volatile="true" transient="true"
+ derived="true" eOpposite="#//Class/extension">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the Class that is extended through an Extension. The property is derived from the type of the memberEnd that is not the ownedEnd."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ExtensionEnd" eSuperTypes="#//Property">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An extension end is used to tie an extension to a stereotype when extending a metaclass.&#xD;&#xA;The default multiplicity of an extension end is 0..1."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EOperation" name="getLower" ordered="false" lowerBound="1"
+ eType="#//Integer">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="suppressedVisibility" value="true"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//MultiplicityElement/getLower"/>
+ </contents>
+ <contents xsi:type="ecore:EOperation" name="setLower" ordered="false" lowerBound="1">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="suppressedVisibility" value="true"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//MultiplicityElement/setLower"/>
+ <eParameters name="newLower" ordered="false" lowerBound="1" eType="#//Integer"/>
+ </contents>
+ <contents xsi:type="ecore:EOperation" name="lowerBound" ordered="false" lowerBound="1"
+ eType="#//Integer">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query lowerBound() returns the lower bound of the multiplicity as an Integer. This is a redefinition of the default&#xD;&#xA;lower bound, which normally, for MultiplicityElements, evaluates to 1 if empty.&#xD;&#xA;result = lowerBound = if lowerValue->isEmpty() then 0 else lowerValue->IntegerValue() endif"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//MultiplicityElement/lowerBound"/>
+ </contents>
+ <contents xsi:type="ecore:EReference" name="type" ordered="false" eType="#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the type of the ExtensionEnd. Note that this association restricts the possible types of an ExtensionEnd to only be Stereotypes."/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//TypedElement/type"/>
+ </contents>
+ <contents xsi:type="ecore:EAttribute" name="lower" ordered="false" eType="#//Integer"
+ volatile="true" transient="true" defaultValueLiteral="0" derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="This redefinition changes the default multiplicity of association ends, since model elements are usually extended by 0 or 1 instance of the extension stereotype."/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//MultiplicityElement/lower"/>
+ </contents>
+ </eAnnotations>
+ <eOperations name="multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The multiplicity of ExtensionEnd is 0..1 or 1.&#xD;&#xA;(self->lowerBound() = 0 or self->lowerBound() = 1) and self->upperBound() = 1"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="aggregation" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The aggregation of an ExtensionEnd is composite.&#xD;&#xA;self.aggregation = #composite"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Stereotype" eSuperTypes="#//Class">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A stereotype defines how an existing metaclass may be extended, and enables the use of platform or domain specific terminology or notation in place of, or in addition to, the ones used for the extended metaclass."/>
+ </eAnnotations>
+ <eOperations name="name_not_clash" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Stereotype names should not clash with keyword names for the extended model element.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="generalize" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A Stereotype may only generalize or specialize another Stereotype.&#xD;&#xA;generalization.general->forAll(e |e.oclIsKindOf(Stereotype)) and generalization.specific->forAll(e | e.oclIsKindOf(Stereotype)) "/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="createExtension" ordered="false" lowerBound="1" eType="#//Extension">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Creates a(n) (required) extension of the specified metaclass with this stereotype."/>
+ </eAnnotations>
+ <eParameters name="metaclass" ordered="false" lowerBound="1" eType="#//Class">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The metaclass for the new extension."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="isRequired" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Whether the new extension should be required."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getProfile" ordered="false" eType="#//Profile">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the profile that owns this stereotype."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getKeyword" ordered="false" lowerBound="1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the localized keyword for this stereotype."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getKeyword" ordered="false" lowerBound="1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the keyword for this stereotype, localized if indicated."/>
+ </eAnnotations>
+ <eParameters name="localize" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Whether to localize the keyword."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getExtendedMetaclasses" ordered="false" upperBound="-1" eType="#//Class">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the metaclasses extended by this stereotype."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getAllExtendedMetaclasses" ordered="false" upperBound="-1"
+ eType="#//Class">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves all the metaclasses extended by this stereotype, including the metaclasses extended by its superstereotypes."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getDefinition" ordered="false" eType="ecore:EClass platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EClass">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the current definition (Ecore representation) of this stereotype."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="createIcon" ordered="false" lowerBound="1" eType="#//Image">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Creates an icon with the specified location for this stereotype."/>
+ </eAnnotations>
+ <eParameters name="location" ordered="false" lowerBound="1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The location for the new icon."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="createIcon" ordered="false" lowerBound="1" eType="#//Image">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Creates an icon with the specified format and content for this stereotype."/>
+ </eAnnotations>
+ <eParameters name="format" ordered="false" lowerBound="1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The format for the new icon."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="content" ordered="false" lowerBound="1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The content for the new icon."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="icon" ordered="false" upperBound="-1"
+ eType="#//Image" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Stereotype can change the graphical appearance of the extended model element by using attached icons. When this association is not null, it references the location of the icon content to be displayed within diagrams presenting the extended model elements."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Image" eSuperTypes="#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Physical definition of a graphical image."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="content" ordered="false"
+ eType="#//String" unsettable="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="This contains the serialization of the image according to the format. The value could represent a bitmap, image such as a GIF file, or drawing 'instructions' using a standard such as Scalable Vector Graphic (SVG) (which is XML based)."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="location" ordered="false"
+ eType="#//String" unsettable="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="This contains a location that can be used by a tool to locate the image as an alternative to embedding it in the stereotype."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="format" ordered="false"
+ eType="#//String" unsettable="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="This indicates the format of the content - which is how the string content should be interpreted. The following values are reserved: SVG, GIF, PNG, JPG, WMF, EMF, BMP.&#xD;&#xA;&#xD;&#xA;In addition the prefix 'MIME: ' is also reserved. This option can be used as an alternative to express the reserved values above, for example &quot;SVG&quot; could instead be expressed as &quot;MIME: image/svg+xml&quot;."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Profile" eSuperTypes="#//Package">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A profile defines limited extensions to a reference metamodel with the purpose of adapting the metamodel to a specific platform or domain."/>
+ </eAnnotations>
+ <eOperations name="metaclass_reference_not_specialized" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An element imported as a metaclassReference is not specialized or generalized in a Profile.&#xD;&#xA;self.metaclassReference.importedElement->&#xD;&#xA; select(c | c.oclIsKindOf(Classifier) and&#xD;&#xA; (c.generalization.namespace = self or&#xD;&#xA; (c.specialization.namespace = self) )->isEmpty()"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="references_same_metamodel" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="All elements imported either as metaclassReferences or through metamodelReferences are members of the same base reference metamodel.&#xD;&#xA;self.metamodelReference.importedPackage.elementImport.importedElement.allOwningPackages())->&#xD;&#xA; union(self.metaclassReference.importedElement.allOwningPackages() )->notEmpty()"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="create" ordered="false" lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EObject">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Creates and returns an instance of (the Ecore representation of) the specified classifier defined in this profile."/>
+ </eAnnotations>
+ <eParameters name="classifier" ordered="false" lowerBound="1" eType="#//Classifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The classifier of which to create an instance."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="createOwnedStereotype" ordered="false" lowerBound="1" eType="#//Stereotype">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Creates a(n) (abstract) stereotype with the specified name as an owned stereotype of this profile."/>
+ </eAnnotations>
+ <eParameters name="name" ordered="false" lowerBound="1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The name for the new stereotype, or null."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="isAbstract" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Whether the new stereotype should be abstract."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="isDefined" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Determines whether this profile is defined."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="define" ordered="false" eType="ecore:EClass platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EPackage">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Defines this profile by (re)creating Ecore representations of its current contents."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="define" ordered="false" lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EPackage">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Defines this profile by (re)creating Ecore representations of its current contents, using the specified options, diagnostics, and context."/>
+ </eAnnotations>
+ <eParameters name="options" ordered="false" lowerBound="1">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The options to use."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EMap">
+ <eTypeArguments eClassifier="#//String"/>
+ <eTypeArguments eClassifier="#//String"/>
+ </eGenericType>
+ </eParameters>
+ <eParameters name="diagnostics" ordered="false" lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context" ordered="false" lowerBound="1">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getDefinition" ordered="false" eType="ecore:EClass platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EPackage">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the current definition (Ecore representation) of this profile."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getDefinition" ordered="false" eType="ecore:EClass platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//ENamedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the current definition (Ecore representation) of the specified named element in this profile."/>
+ </eAnnotations>
+ <eParameters name="namedElement" ordered="false" lowerBound="1" eType="#//NamedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The named element whose definition to retrieve."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getReferencedMetaclasses" ordered="false" upperBound="-1" eType="#//Class">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the metaclasses referenced by this profile."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getReferencedMetamodels" ordered="false" upperBound="-1" eType="#//Model">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the metamodels referenced by this profile."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getOwnedExtensions" ordered="false" upperBound="-1" eType="#//Extension">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the extensions owned by this profile, excluding non-required extensions if indicated."/>
+ </eAnnotations>
+ <eParameters name="requiredOnly" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Whether to retrieve only required extensions."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ownedStereotype" ordered="false"
+ upperBound="-1" eType="#//Stereotype" volatile="true" transient="true" derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the Stereotypes that are owned by the Profile."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Package/packagedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="metaclassReference" ordered="false"
+ upperBound="-1" eType="#//ElementImport">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References a metaclass that may be extended."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/elementImport"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="metamodelReference" ordered="false"
+ upperBound="-1" eType="#//PackageImport">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References a package containing (directly or indirectly) metaclasses that may be extended."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/packageImport"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Model" eSuperTypes="#//Package">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A model captures a view of a physical system. It is an abstraction of the physical system, with a certain purpose. This purpose determines what is to be included in the model and what is irrelevant. Thus the model completely describes those aspects of the physical system that are relevant to the purpose of the model, at the appropriate level of detail."/>
+ </eAnnotations>
+ <eOperations name="isMetamodel" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Determines whether this model is a metamodel."/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="viewpoint" ordered="false"
+ eType="#//String" unsettable="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The name of the viewpoint that is expressed by a model (This name may refer to a profile definition)."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ParameterSet" eSuperTypes="#//NamedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A parameter set is an element that provides alternative sets of inputs or outputs that a behavior may use."/>
+ </eAnnotations>
+ <eOperations name="same_parameterized_entity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The parameters in a parameter set must all be inputs or all be outputs of the same parameterized entity, and the parameter set is owned by that entity.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="input" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If a behavior has input parameters that are in a parameter set, then any inputs that are not in a parameter set must be streaming. Same for output parameters.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="two_parameter_sets" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Two parameter sets cannot have exactly the same set of parameters.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="parameter" ordered="false"
+ lowerBound="1" upperBound="-1" eType="#//Parameter" eOpposite="#//Parameter/parameterSet">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Parameters in the parameter set."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="condition" ordered="false"
+ upperBound="-1" eType="#//Constraint" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Constraint that should be satisfied for the owner of the parameters in an input parameter set to start execution using the values provided for those parameters, or the owner of the parameters in an output parameter set to end execution providing the values for those parameters, if all preconditions and conditions on input parameter sets were satisfied."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="CallConcurrencyKind">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="CallConcurrencyKind is an enumeration type."/>
+ </eAnnotations>
+ <eLiterals name="sequential">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="No concurrency management mechanism is associated with the operation and, therefore, concurrency conflicts may occur. Instances that invoke a behavioral feature need to coordinate so that only one invocation to a target on any behavioral feature occurs at once."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="guarded" value="1">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Multiple invocations of a behavioral feature may occur simultaneously to one instance, but only one is allowed to commence. The others are blocked until the performance of the currently executing behavioral feature is complete. It is the responsibility of the system designer to ensure that deadlocks do not occur due to simultaneous blocks."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="concurrent" value="2">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Multiple invocations of a behavioral feature may occur simultaneously to one instance and all of them may proceed concurrently."/>
+ </eAnnotations>
+ </eLiterals>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="DataType" eSuperTypes="#//Classifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A data type is a type whose instances are identified only by their value. A data type may contain attributes to support the modeling of structured data types."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EOperation" name="inherit" ordered="false" upperBound="-1"
+ eType="#//NamedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The inherit operation is overridden to exclude redefined properties.&#xD;&#xA;result = inhs->excluding(inh | ownedMember->select(oclIsKindOf(RedefinableElement))->select(redefinedElement->includes(inh)))"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//Classifier/inherit"/>
+ <eParameters name="inhs" ordered="false" upperBound="-1" eType="#//NamedElement"/>
+ </contents>
+ </eAnnotations>
+ <eOperations name="createOwnedOperation" ordered="false" lowerBound="1" eType="#//Operation">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Creates an operation with the specified name, parameter names, parameter types, and return type (or null) as an owned operation of this data type."/>
+ </eAnnotations>
+ <eParameters name="name" ordered="false" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The name for the new operation, or null."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="parameterNames" ordered="false" upperBound="-1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The parameter names for the new operation, or null."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="parameterTypes" ordered="false" upperBound="-1" eType="#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The parameter types for the new operation, or null."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="returnType" ordered="false" eType="#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The return type for the new operation, or null."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="createOwnedAttribute" ordered="false" lowerBound="1" eType="#//Property">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Creates a property with the specified name, type, lower bound, and upper bound as an owned attribute of this data type."/>
+ </eAnnotations>
+ <eParameters name="name" ordered="false" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The name for the new attribute, or null."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="type" ordered="false" eType="#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type for the new attribute, or null."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="lower" ordered="false" lowerBound="1" eType="#//Integer">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The lower bound for the new attribute."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="upper" ordered="false" lowerBound="1" eType="#//UnlimitedNatural">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The upper bound for the new attribute."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ownedAttribute" upperBound="-1"
+ eType="#//Property" containment="true" eOpposite="#//Property/datatype">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The Attributes owned by the DataType."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Classifier/attribute #//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ownedOperation" upperBound="-1"
+ eType="#//Operation" containment="true" eOpposite="#//Operation/datatype">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The Operations owned by the DataType."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Classifier/feature #//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="OperationTemplateParameter" eSuperTypes="#//TemplateParameter">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An operation template parameter exposes an operation as a formal parameter for a template."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EReference" name="parameteredElement" ordered="false"
+ lowerBound="1" eType="#//ParameterableElement" eOpposite="#//Operation/%duplicates%/templateParameter">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The operation for this template parameter."/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//TemplateParameter/parameteredElement"/>
+ </contents>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="StructuralFeature" abstract="true" eSuperTypes="#//Feature #//TypedElement #//MultiplicityElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A structural feature is a typed feature of a classifier that specifies the structure of instances of the classifier.&#xD;&#xA;By specializing multiplicity element, it supports a multiplicity that specifies valid cardinalities for the collection of values associated with an instantiation of the structural feature."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isReadOnly" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="States whether the feature's value may be modified by a client."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="AggregationKind">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="AggregationKind is an enumeration type that specifies the literals for defining the kind of aggregation of a property."/>
+ </eAnnotations>
+ <eLiterals name="none">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Indicates that the property has no aggregation."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="shared" value="1">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Indicates that the property has a shared aggregation."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="composite" value="2">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Indicates that the property is aggregated compositely, i.e., the composite object has responsibility for the existence and storage of the composed objects (parts)."/>
+ </eAnnotations>
+ </eLiterals>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ConnectableElementTemplateParameter"
+ eSuperTypes="#//TemplateParameter">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A connectable element template parameter exposes a connectable element as a formal parameter for a template."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EReference" name="parameteredElement" ordered="false"
+ lowerBound="1" eType="#//ParameterableElement" eOpposite="#//ConnectableElement/%duplicates%/templateParameter">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The ConnectableElement for this template parameter."/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//TemplateParameter/parameteredElement"/>
+ </contents>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="ParameterDirectionKind">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Parameter direction kind is an enumeration type that defines literals used to specify direction of parameters."/>
+ </eAnnotations>
+ <eLiterals name="in">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Indicates that parameter values are passed into the behavioral element by the caller."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="inout" value="1">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Indicates that parameter values are passed into a behavioral element by the caller and then back out to the caller from the behavioral element."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="out" value="2">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Indicates that parameter values are passed from a behavioral element out to the caller."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="return" value="3">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Indicates that parameter values are passed as return values from a behavioral element back to the caller."/>
+ </eAnnotations>
+ </eLiterals>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="ParameterEffectKind">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The datatype ParameterEffectKind is an enumeration that indicates the effect of a behavior on values passed in or out of its parameters."/>
+ </eAnnotations>
+ <eLiterals name="create">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Indicates that the behavior creates values."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="read" value="1">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Indicates that the behavior reads values."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="update" value="2">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Indicates that the behavior updates values."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="delete" value="3">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Indicates that the behavior deletes values."/>
+ </eAnnotations>
+ </eLiterals>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="CollaborationUse" eSuperTypes="#//NamedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A collaboration use represents one particular use of a collaboration to explain the relationships between the properties of a classifier. A collaboration use shows how the pattern described by a collaboration is applied in a given context, by binding specific entities from that context to the roles of the collaboration. Depending on the context, these entities could be structural features of a classifier, instance specifications, or even roles in some containing collaboration. There may be multiple occurrences of a given collaboration within a classifier, each involving a different set of roles and connectors. A given role or connector may be involved in multiple occurrences of the same or different collaborations.&#xD;&#xA;Associated dependencies map features of the collaboration type to features in the classifier. These dependencies indicate which role in the classifier plays which role in the collaboration."/>
+ </eAnnotations>
+ <eOperations name="client_elements" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="All the client elements of a roleBinding are in one classifier and all supplier elements of a roleBinding are in one collaboration and they are compatible.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="every_role" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Every role in the collaboration is bound within the collaboration use to a connectable element within the classifier or operation.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="connectors" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The connectors in the classifier connect according to the connectors in the collaboration&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="type" ordered="false" lowerBound="1"
+ eType="#//Collaboration">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The collaboration which is used in this occurrence. The collaboration defines the cooperation between its roles which are mapped to properties of the classifier owning the collaboration use."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="roleBinding" ordered="false"
+ upperBound="-1" eType="#//Dependency" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A mapping between features of the collaboration type and features of the classifier or operation. This mapping indicates which connectable element of the classifier or operation plays which role(s) in the collaboration. A connectable element may be bound to multiple roles in the same collaboration use (that is, it may play multiple roles).&#xD;&#xA;"/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Collaboration" eSuperTypes="#//BehavioredClassifier #//StructuredClassifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A collaboration use represents the application of the pattern described by a collaboration to a specific situation involving specific classes or instances playing the roles of the collaboration."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="collaborationRole" ordered="false"
+ upperBound="-1" eType="#//ConnectableElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References connectable elements (possibly owned by other classifiers) which represent roles that instances may play in this collaboration."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//StructuredClassifier/role"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="UseCase" eSuperTypes="#//BehavioredClassifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A use case is the specification of a set of actions performed by a system, which yields an observable result that is, typically, of value for one or more actors or other stakeholders of the system."/>
+ </eAnnotations>
+ <eOperations name="must_have_name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A UseCase must have a name.&#xD;&#xA;self.name -> notEmpty ()"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="binary_associations" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="UseCases can only be involved in binary Associations.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="no_association_to_use_case" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="UseCases can not have Associations to UseCases specifying the same subject.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="cannot_include_self" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A use case cannot include use cases that directly or indirectly include it.&#xD;&#xA;not self.allIncludedUseCases()->includes(self)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="allIncludedUseCases" ordered="false" upperBound="-1" eType="#//UseCase">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query allIncludedUseCases() returns the transitive closure of all use cases (directly or indirectly) included by this use case.&#xD;&#xA;result = self.include->union(self.include->collect(in | in.allIncludedUseCases()))"/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="include" ordered="false"
+ upperBound="-1" eType="#//Include" containment="true" eOpposite="#//Include/includingCase">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the Include relationships owned by this use case."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="extend" ordered="false"
+ upperBound="-1" eType="#//Extend" containment="true" eOpposite="#//Extend/extension">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the Extend relationships owned by this use case."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="extensionPoint" ordered="false"
+ upperBound="-1" eType="#//ExtensionPoint" containment="true" eOpposite="#//ExtensionPoint/useCase">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the ExtensionPoints owned by the use case."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="subject" ordered="false"
+ upperBound="-1" eType="#//Classifier" eOpposite="#//Classifier/useCase">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the subjects to which this use case applies. The subject or its parts realize all the use cases that apply to this subject. Use cases need not be attached to any specific subject, however. The subject may, but need not, own the use cases that apply to it."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Include" eSuperTypes="#//NamedElement #//DirectedRelationship">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An include relationship defines that a use case contains the behavior defined in another use case."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="addition" ordered="false"
+ lowerBound="1" eType="#//UseCase">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the use case that is to be included.&#xD;&#xA;"/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//DirectedRelationship/target"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="includingCase" ordered="false"
+ lowerBound="1" eType="#//UseCase" eOpposite="#//UseCase/include">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the use case which will include the addition and owns the include relationship."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//DirectedRelationship/source"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Extend" eSuperTypes="#//NamedElement #//DirectedRelationship">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A relationship from an extending use case to an extended use case that specifies how and when the behavior defined in the extending use case can be inserted into the behavior defined in the extended use case."/>
+ </eAnnotations>
+ <eOperations name="extension_points" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The extension points referenced by the extend relationship must belong to the use case that is being extended.&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;extensionLocation->forAll (xp | extendedCase.extensionPoint->includes(xp))"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="extendedCase" ordered="false"
+ lowerBound="1" eType="#//UseCase">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the use case that is being extended."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//DirectedRelationship/target"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="condition" ordered="false"
+ eType="#//Constraint" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the condition that must hold when the first extension point is reached for the extension to take place. If no constraint is associated with the extend relationship, the extension is unconditional.&#xD;&#xA;"/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="extensionLocation" lowerBound="1"
+ upperBound="-1" eType="#//ExtensionPoint">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An ordered list of extension points belonging to the extended use case, specifying where the respective behavioral fragments of the extending use case are to be inserted. The first fragment in the extending use case is associated with the first extension point in the list, the second fragment with the second point, and so on. (Note that, in most practical cases, the extending use case has just a single behavior fragment, so that the list of extension points is trivial.)&#xD;&#xA;"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="extension" ordered="false"
+ lowerBound="1" eType="#//UseCase" eOpposite="#//UseCase/extend">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the use case that represents the extension and owns the extend relationship."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//DirectedRelationship/source"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ExtensionPoint" eSuperTypes="#//RedefinableElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An extension point identifies a point in the behavior of a use case where that behavior can be extended by the behavior of some other (extending) use case, as specified by an extend relationship."/>
+ </eAnnotations>
+ <eOperations name="must_have_name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An ExtensionPoint must have a name.&#xD;&#xA;self.name->notEmpty ()"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="useCase" ordered="false"
+ lowerBound="1" eType="#//UseCase" eOpposite="#//UseCase/extensionPoint">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the use case that owns this extension point."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="RedefinableTemplateSignature" eSuperTypes="#//RedefinableElement #//TemplateSignature">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A redefinable template signature supports the addition of formal template parameters in a specialization of a template classifier."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EOperation" name="isConsistentWith" ordered="false"
+ lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query isConsistentWith() specifies, for any two RedefinableTemplateSignatures in a context in which redefinition is possible, whether redefinition would be logically consistent. A redefining template signature is always consistent with a redefined template signature, since redefinition only adds new formal parameters.&#xD;&#xA;redefinee.isRedefinitionContextValid(self)&#xD;&#xA;result = redefinee.oclIsKindOf(RedefineableTemplateSignature)"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//RedefinableElement/isConsistentWith"/>
+ <eParameters name="redefinee" ordered="false" lowerBound="1" eType="#//RedefinableElement"/>
+ </contents>
+ </eAnnotations>
+ <eOperations name="inherited_parameters" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The inherited parameters are the parameters of the extended template signature.&#xD;&#xA;if extendedSignature->isEmpty() then Set{} else extendedSignature.parameter endif"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getInheritedParameters" ordered="false" upperBound="-1" eType="#//TemplateParameter">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="suppressedVisibility" value="true"/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="extendedSignature" ordered="false"
+ upperBound="-1" eType="#//RedefinableTemplateSignature">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The template signature that is extended by this template signature."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//RedefinableElement/redefinedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="inheritedParameter" ordered="false"
+ upperBound="-1" eType="#//TemplateParameter" changeable="false" volatile="true"
+ transient="true" derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The formal template parameters of the extendedSignature."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//TemplateSignature/parameter"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="classifier" ordered="false"
+ lowerBound="1" eType="#//Classifier" changeable="false" volatile="true" transient="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The classifier that owns this template signature."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//RedefinableElement/redefinitionContext"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ClassifierTemplateParameter" eSuperTypes="#//TemplateParameter">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A classifier template parameter exposes a classifier as a formal template parameter."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EReference" name="parameteredElement" ordered="false"
+ lowerBound="1" eType="#//ParameterableElement" eOpposite="#//Classifier/%duplicates%/templateParameter">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The parameterable classifier for this template parameter."/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//TemplateParameter/parameteredElement"/>
+ </contents>
+ </eAnnotations>
+ <eOperations name="has_constraining_classifier" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If &quot;allowSubstitutable&quot; is true, then there must be a constrainingClassifier.&#xD;&#xA;allowSubstitutable implies constrainingClassifier->notEmpty()"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="allowSubstitutable" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Constrains the required relationship between an actual parameter and the parameteredElement for this formal parameter."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="constrainingClassifier"
+ ordered="false" upperBound="-1" eType="#//Classifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The classifiers that constrain the argument that can be used for the parameter. If the allowSubstitutable attribute is true, then any classifier that is compatible with this constraining classifier can be substituted; otherwise, it must be either this classifier or one of its subclasses. If this property is empty, there are no constraints on the classifier that can be used as an argument."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="StringExpression" eSuperTypes="#//Expression #//TemplateableElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An expression that specifies a string value that is derived by concatenating a set of sub string expressions, some of which might be template parameters."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EOperation" name="stringValue" ordered="false" lowerBound="1"
+ eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query stringValue() returns the string that concatenates, in order, all the component string literals of all the subexpressions that are part of the StringExpression.&#xD;&#xA;&#xD;&#xA;result = if subExpression->notEmpty()&#xA;then subExpression->iterate(se; stringValue = ‘| stringValue.concat(se.stringValue()))&#xA;else operand->iterate()(op; stringValue = ‘ | stringValue.concat(op.value))"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//ValueSpecification/stringValue"/>
+ </contents>
+ </eAnnotations>
+ <eOperations name="operands" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="All the operands of a StringExpression must be LiteralStrings&#xD;&#xA;operand->forAll (op | op.oclIsKindOf (LiteralString))"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="subexpressions" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If a StringExpression has sub-expressions, it cannot have operands and vice versa (this avoids the problem of having to&#xA;define a collating sequence between operands and subexpressions).&#xA;&#xD;&#xA;if subExpression->notEmpty() then operand->isEmpty() else operand->notEmpty()"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="subExpression" ordered="false"
+ upperBound="-1" eType="#//StringExpression" containment="true" eOpposite="#//StringExpression/owningExpression">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The StringExpressions that constitute this StringExpression."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="owningExpression" ordered="false"
+ eType="#//StringExpression" eOpposite="#//StringExpression/subExpression">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The string expression of which this expression is a substring."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/owner"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Expression" eSuperTypes="#//ValueSpecification">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An expression is a structured tree of symbols that denotes a (possibly empty) set of values when evaluated in a context.&#xD;&#xA;An expression represents a node in an expression tree, which may be non-terminal or terminal. It defines a symbol, and has a possibly empty sequence of operands which are value specifications."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="symbol" ordered="false"
+ eType="#//String" unsettable="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The symbol associated with the node in the expression tree."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="operand" upperBound="-1"
+ eType="#//ValueSpecification" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies a sequence of operands."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Usage" eSuperTypes="#//Dependency">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A usage is a relationship in which one element requires another element (or set of elements) for its full implementation or operation. A usage is a dependency in which the client requires the presence of the supplier."/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="PackageMerge" eSuperTypes="#//DirectedRelationship">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A package merge defines how the contents of one package are extended by the contents of another package."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="mergedPackage" ordered="false"
+ lowerBound="1" eType="#//Package">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the Package that is to be merged with the receiving package of the PackageMerge."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//DirectedRelationship/target"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="receivingPackage" ordered="false"
+ lowerBound="1" eType="#//Package" eOpposite="#//Package/packageMerge">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the Package that is being extended with the contents of the merged package of the PackageMerge."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//DirectedRelationship/source #//Element/owner"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ProfileApplication" eSuperTypes="#//DirectedRelationship">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A profile application is used to show which profiles have been applied to a package."/>
+ </eAnnotations>
+ <eOperations name="getAppliedDefinition" ordered="false" eType="ecore:EClass platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EPackage">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the definition (Ecore representation) of the profile associated with this profile application."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getAppliedDefinition" ordered="false" eType="ecore:EClass platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//ENamedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the definition (Ecore representation) of the specified named element in the profile associated with this profile application."/>
+ </eAnnotations>
+ <eParameters name="namedElement" ordered="false" lowerBound="1" eType="#//NamedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The named element for which to retrieve the applied definition."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="appliedProfile" ordered="false"
+ lowerBound="1" eType="#//Profile">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the Profiles that are applied to a Package through this ProfileApplication."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//DirectedRelationship/target"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isStrict" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies that the Profile filtering rules for the metaclasses of the referenced metamodel shall be strictly applied."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="applyingPackage" ordered="false"
+ lowerBound="1" eType="#//Package" eOpposite="#//Package/profileApplication">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The package that owns the profile application."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//DirectedRelationship/source #//Element/owner"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Enumeration" eSuperTypes="#//DataType">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An enumeration is a data type whose values are enumerated in the model as enumeration literals."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ownedLiteral" upperBound="-1"
+ eType="#//EnumerationLiteral" containment="true" eOpposite="#//EnumerationLiteral/enumeration">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The ordered set of literals for this Enumeration."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="EnumerationLiteral" eSuperTypes="#//InstanceSpecification">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An enumeration literal is a user-defined data value for an enumeration."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="enumeration" ordered="false"
+ eType="#//Enumeration" eOpposite="#//Enumeration/ownedLiteral">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The Enumeration that this EnumerationLiteral is a member of."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//NamedElement/namespace"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="InstanceSpecification" eSuperTypes="#//DeploymentTarget #//PackageableElement #//DeployedArtifact">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An instance specification is a model element that represents an instance in a modeled system.&#xD;&#xA;An instance specification has the capability of being a deployment target in a deployment relationship, in the case that it is an instance of a node. It is also has the capability of being a deployed artifact, if it is an instance of an artifact."/>
+ </eAnnotations>
+ <eOperations name="defining_feature" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The defining feature of each slot is a structural feature (directly or inherited) of a classifier of the instance specification.&#xD;&#xA;slot->forAll(s | classifier->exists (c | c.allFeatures()->includes (s.definingFeature)))"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="structural_feature" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="One structural feature (including the same feature inherited from multiple classifiers) is the defining feature of at most one slot in an instance specification.&#xD;&#xA;classifier->forAll(c | (c.allFeatures()->forAll(f | slot->select(s | s.definingFeature = f)->size() &lt;= 1)))"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="deployment_target" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An InstanceSpecification can be a DeploymentTarget if it is the instance specification of a Node and functions as a part in the internal structure of an encompassing Node.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="deployment_artifact" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An InstanceSpecification can be a DeployedArtifact if it is the instance specification of an Artifact.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="classifier" ordered="false"
+ upperBound="-1" eType="#//Classifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The classifier or classifiers of the represented instance. If multiple classifiers are specified, the instance is classified by all of them."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="slot" ordered="false" upperBound="-1"
+ eType="#//Slot" containment="true" eOpposite="#//Slot/owningInstance">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A slot giving the value or values of a structural feature of the instance. An instance specification can have one slot per structural feature of its classifiers, including inherited features. It is not necessary to model a slot for each structural feature, in which case the instance specification is a partial description."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="specification" ordered="false"
+ eType="#//ValueSpecification" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A specification of how to compute, derive, or construct the instance."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Slot" eSuperTypes="#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A slot specifies that an entity modeled by an instance specification has a value or values for a specific structural feature."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="definingFeature" ordered="false"
+ lowerBound="1" eType="#//StructuralFeature">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The structural feature that specifies the values that may be held by the slot."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="value" upperBound="-1"
+ eType="#//ValueSpecification" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The value or values corresponding to the defining feature for the owning instance specification."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="owningInstance" ordered="false"
+ lowerBound="1" eType="#//InstanceSpecification" eOpposite="#//InstanceSpecification/slot">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The instance specification that owns this slot."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/owner"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="PrimitiveType" eSuperTypes="#//DataType">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A primitive type defines a predefined data type, without any relevant substructure (i.e., it has no parts in the context of UML). A primitive datatype may have an algebra and operations defined outside of UML, for example, mathematically."/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="LiteralSpecification" abstract="true"
+ eSuperTypes="#//ValueSpecification">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A literal specification identifies a literal constant being modeled."/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="LiteralInteger" eSuperTypes="#//LiteralSpecification">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A literal integer is a specification of an integer value."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EOperation" name="stringValue" ordered="false" lowerBound="1"
+ eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="suppressedVisibility" value="true"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//ValueSpecification/stringValue"/>
+ </contents>
+ <contents xsi:type="ecore:EOperation" name="isComputable" ordered="false" lowerBound="1"
+ eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query isComputable() is redefined to be true.&#xD;&#xA;result = true"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//ValueSpecification/isComputable"/>
+ </contents>
+ <contents xsi:type="ecore:EOperation" name="integerValue" ordered="false" lowerBound="1"
+ eType="#//Integer">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query integerValue() gives the value.&#xD;&#xA;result = value"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//ValueSpecification/integerValue"/>
+ </contents>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" ordered="false"
+ lowerBound="1" eType="#//Integer" defaultValueLiteral="0">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The specified Integer value."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="LiteralString" eSuperTypes="#//LiteralSpecification">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A literal string is a specification of a string value."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EOperation" name="integerValue" ordered="false" lowerBound="1"
+ eType="#//Integer">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="suppressedVisibility" value="true"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//ValueSpecification/integerValue"/>
+ </contents>
+ <contents xsi:type="ecore:EOperation" name="unlimitedValue" ordered="false"
+ lowerBound="1" eType="#//UnlimitedNatural">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="suppressedVisibility" value="true"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//ValueSpecification/unlimitedValue"/>
+ </contents>
+ <contents xsi:type="ecore:EOperation" name="isComputable" ordered="false" lowerBound="1"
+ eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query isComputable() is redefined to be true.&#xD;&#xA;result = true"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//ValueSpecification/isComputable"/>
+ </contents>
+ <contents xsi:type="ecore:EOperation" name="stringValue" ordered="false" lowerBound="1"
+ eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query stringValue() gives the value.&#xD;&#xA;result = value"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//ValueSpecification/stringValue"/>
+ </contents>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" ordered="false"
+ eType="#//String" unsettable="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The specified String value."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="LiteralBoolean" eSuperTypes="#//LiteralSpecification">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A literal Boolean is a specification of a Boolean value."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EOperation" name="stringValue" ordered="false" lowerBound="1"
+ eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="suppressedVisibility" value="true"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//ValueSpecification/stringValue"/>
+ </contents>
+ <contents xsi:type="ecore:EOperation" name="isComputable" ordered="false" lowerBound="1"
+ eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query isComputable() is redefined to be true.&#xD;&#xA;result = true"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//ValueSpecification/isComputable"/>
+ </contents>
+ <contents xsi:type="ecore:EOperation" name="booleanValue" ordered="false" lowerBound="1"
+ eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query booleanValue() gives the value.&#xD;&#xA;result = value"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//ValueSpecification/booleanValue"/>
+ </contents>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The specified Boolean value."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="LiteralNull" eSuperTypes="#//LiteralSpecification">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A literal null specifies the lack of a value."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EOperation" name="isComputable" ordered="false" lowerBound="1"
+ eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query isComputable() is redefined to be true.&#xD;&#xA;result = true"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//ValueSpecification/isComputable"/>
+ </contents>
+ <contents xsi:type="ecore:EOperation" name="isNull" ordered="false" lowerBound="1"
+ eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query isNull() returns true.&#xD;&#xA;result = true"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//ValueSpecification/isNull"/>
+ </contents>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="InstanceValue" eSuperTypes="#//ValueSpecification">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An instance value is a value specification that identifies an instance."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EOperation" name="stringValue" ordered="false" lowerBound="1"
+ eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="suppressedVisibility" value="true"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//ValueSpecification/stringValue"/>
+ </contents>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="instance" ordered="false"
+ lowerBound="1" eType="#//InstanceSpecification">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The instance that is the specified value."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="LiteralUnlimitedNatural" eSuperTypes="#//LiteralSpecification">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A literal unlimited natural is a specification of an unlimited natural number."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EOperation" name="stringValue" ordered="false" lowerBound="1"
+ eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="suppressedVisibility" value="true"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//ValueSpecification/stringValue"/>
+ </contents>
+ <contents xsi:type="ecore:EOperation" name="isComputable" ordered="false" lowerBound="1"
+ eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query isComputable() is redefined to be true.&#xD;&#xA;result = true"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//ValueSpecification/isComputable"/>
+ </contents>
+ <contents xsi:type="ecore:EOperation" name="unlimitedValue" ordered="false"
+ lowerBound="1" eType="#//UnlimitedNatural">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query unlimitedValue() gives the value.&#xD;&#xA;result = value"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//ValueSpecification/unlimitedValue"/>
+ </contents>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" ordered="false"
+ lowerBound="1" eType="#//UnlimitedNatural" defaultValueLiteral="0">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The specified UnlimitedNatural value."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="OpaqueBehavior" eSuperTypes="#//Behavior">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An behavior with implementation-specific semantics."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="body" unique="false" upperBound="-1"
+ eType="#//String" unsettable="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies the behavior in one or more languages."/>
+ </eAnnotations>
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="element"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="language" upperBound="-1"
+ eType="#//String" unsettable="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Languages the body strings use in the same order as the body strings."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="FunctionBehavior" eSuperTypes="#//OpaqueBehavior">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A function behavior is an opaque behavior that does not access or modify any objects or other external data."/>
+ </eAnnotations>
+ <eOperations name="one_output_parameter" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A function behavior has at least one output parameter.&#xD;&#xA;self.ownedParameters->&#xD;&#xA; select(p | p.direction=#out or p.direction=#inout or p.direction=#return)->size() >= 1"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="types_of_parameters" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The types of parameters are all data types, which may not nest anything but other datatypes.&#xD;&#xA;def: hasAllDataTypeAttributes(d : DataType) : Boolean =&#xD;&#xA; d.ownedAttribute->forAll(a |&#xD;&#xA; a.type.oclIsTypeOf(DataType) and&#xD;&#xA; hasAllDataTypeAttributes(a.type))&#xD;&#xA;self.ownedParameters->forAll(p | p.type.notEmpty() and&#xD;&#xA; p.oclIsTypeOf(DataType) and hasAllDataTypeAttributes(p))"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="OpaqueAction" eSuperTypes="#//Action">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An action with implementation-specific semantics."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="body" unique="false" upperBound="-1"
+ eType="#//String" unsettable="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies the action in one or more languages."/>
+ </eAnnotations>
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="element"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="language" upperBound="-1"
+ eType="#//String" unsettable="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Languages the body strings use, in the same order as the body strings"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="inputValue" ordered="false"
+ upperBound="-1" eType="#//InputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Provides input to the action."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/input"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="outputValue" ordered="false"
+ upperBound="-1" eType="#//OutputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Takes output from the action."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/output"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Action" abstract="true" eSuperTypes="#//ExecutableNode">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An action is a named element that is the fundamental unit of executable functionality. The execution of an action represents some transformation or processing in the modeled system, be it a computer system or otherwise.&#xD;&#xA;An action represents a single step within an activity, that is, one that is not further decomposed within the activity.&#xD;&#xA;An action has pre- and post-conditions."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="output" upperBound="-1"
+ eType="#//OutputPin" changeable="false" volatile="true" transient="true" derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The ordered set of output pins connected to the Action. The action places its results onto pins in this set."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ <eAnnotations source="union"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="input" upperBound="-1"
+ eType="#//InputPin" changeable="false" volatile="true" transient="true" derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The ordered set of input pins connected to the Action. These are among the total set of inputs."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ <eAnnotations source="union"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="context" ordered="false"
+ eType="#//Classifier" changeable="false" volatile="true" transient="true"
+ derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The classifier that owns the behavior of which this action is a part."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="localPrecondition" ordered="false"
+ upperBound="-1" eType="#//Constraint" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Constraint that must be satisfied when execution is started."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="localPostcondition" ordered="false"
+ upperBound="-1" eType="#//Constraint" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Constraint that must be satisfied when executed is completed."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ExecutableNode" abstract="true" eSuperTypes="#//ActivityNode">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An executable node is an abstract class for activity nodes that may be executed. It is used as an attachment point for exception handlers."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="handler" ordered="false"
+ upperBound="-1" eType="#//ExceptionHandler" containment="true" eOpposite="#//ExceptionHandler/protectedNode">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A set of exception handlers that are examined if an uncaught exception propagates to the outer level of the executable node."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ActivityNode" abstract="true" eSuperTypes="#//RedefinableElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="ActivityNode is an abstract class for points in the flow of an activity connected by edges."/>
+ </eAnnotations>
+ <eOperations name="owned_structured_node" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Activity nodes may be owned by at most one structured node.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="owned" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Activity nodes can only be owned by activities or groups.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="inStructuredNode" ordered="false"
+ eType="#//StructuredActivityNode" eOpposite="#//StructuredActivityNode/node">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Structured activity node containing the node."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//ActivityNode/inGroup"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="activity" ordered="false"
+ eType="#//Activity" eOpposite="#//Activity/node">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Activity containing the node."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/owner"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="outgoing" ordered="false"
+ upperBound="-1" eType="#//ActivityEdge" eOpposite="#//ActivityEdge/source">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Edges that have the node as source."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="incoming" ordered="false"
+ upperBound="-1" eType="#//ActivityEdge" eOpposite="#//ActivityEdge/target">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Edges that have the node as target."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="inPartition" ordered="false"
+ upperBound="-1" eType="#//ActivityPartition" eOpposite="#//ActivityPartition/node">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Partitions containing the node."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//ActivityNode/inGroup"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="inInterruptibleRegion"
+ ordered="false" upperBound="-1" eType="#//InterruptibleActivityRegion" eOpposite="#//InterruptibleActivityRegion/node">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Interruptible regions containing the node."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//ActivityNode/inGroup"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="inGroup" ordered="false"
+ upperBound="-1" eType="#//ActivityGroup" changeable="false" volatile="true"
+ transient="true" derived="true" eOpposite="#//ActivityGroup/containedNode">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Groups containing the node."/>
+ </eAnnotations>
+ <eAnnotations source="union"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="redefinedNode" ordered="false"
+ upperBound="-1" eType="#//ActivityNode">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Inherited nodes replaced by this node in a specialization of the activity."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//RedefinableElement/redefinedElement"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="StructuredActivityNode" eSuperTypes="#//Action #//Namespace #//ActivityGroup">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A structured activity node is an executable activity node that may have an expansion into subordinate nodes as an activity group. The subordinate nodes must belong to only one structured activity node, although they may be nested.&#xD;&#xA;Because of the concurrent nature of the execution of actions within and across activities, it can be difficult to guarantee the consistent access and modification of object memory. In order to avoid race conditions or other concurrency-related problems, it is sometimes necessary to isolate the effects of a group of actions from the effects of actions outside the group. This may be indicated by setting the mustIsolate attribute to true on a structured activity node. If a structured activity node is &quot;isolated,&quot; then any object used by an action within the node cannot be accessed by any action outside the node until the structured activity node as a whole completes. Any concurrent actions that would result in accessing such objects are required to have their execution deferred until the completion of the node."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EReference" name="activity" ordered="false" eType="#//Activity"
+ volatile="true" derived="true" eOpposite="#//Activity/structuredNode">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Activity immediately containing the node."/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//ActivityNode/activity #//ActivityGroup/inActivity"/>
+ </contents>
+ </eAnnotations>
+ <eOperations name="edges" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The edges owned by a structured node must have source and target nodes in the structured node, and vice versa.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="variable" ordered="false"
+ upperBound="-1" eType="#//Variable" containment="true" eOpposite="#//Variable/scope">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A variable defined in the scope of the structured activity node. It has no value and may not be accessed"/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="edge" ordered="false" upperBound="-1"
+ eType="#//ActivityEdge" containment="true" eOpposite="#//ActivityEdge/inStructuredNode">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Edges immediately contained in the structured node."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//ActivityGroup/containedEdge"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="mustIsolate" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If true, then the actions in the node execute in isolation from actions outside the node."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="node" ordered="false" upperBound="-1"
+ eType="#//ActivityNode" containment="true" eOpposite="#//ActivityNode/inStructuredNode">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Nodes immediately contained in the group."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//ActivityGroup/containedNode"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ActivityGroup" abstract="true" eSuperTypes="#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="ActivityGroup is an abstract class for defining sets of nodes and edges in an activity."/>
+ </eAnnotations>
+ <eOperations name="nodes_and_edges" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="All nodes and edges of the group must be in the same activity as the group.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="not_contained" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="No node or edge in a group may be contained by its subgroups or its containing groups, transitively.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="group_owned" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Groups may only be owned by activities or groups.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="subgroup" ordered="false"
+ upperBound="-1" eType="#//ActivityGroup" changeable="false" volatile="true"
+ transient="true" derived="true" eOpposite="#//ActivityGroup/superGroup">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Groups immediately contained in the group."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ <eAnnotations source="union"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="superGroup" ordered="false"
+ eType="#//ActivityGroup" changeable="false" volatile="true" transient="true"
+ derived="true" eOpposite="#//ActivityGroup/subgroup">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Group immediately containing the group."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/owner"/>
+ <eAnnotations source="union"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="inActivity" ordered="false"
+ eType="#//Activity" eOpposite="#//Activity/group">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Activity containing the group."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/owner"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="containedEdge" ordered="false"
+ upperBound="-1" eType="#//ActivityEdge" changeable="false" volatile="true"
+ transient="true" derived="true" eOpposite="#//ActivityEdge/inGroup">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Edges immediately contained in the group."/>
+ </eAnnotations>
+ <eAnnotations source="union"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="containedNode" ordered="false"
+ upperBound="-1" eType="#//ActivityNode" changeable="false" volatile="true"
+ transient="true" derived="true" eOpposite="#//ActivityNode/inGroup">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Nodes immediately contained in the group."/>
+ </eAnnotations>
+ <eAnnotations source="union"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Activity" eSuperTypes="#//Behavior">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An activity is the specification of parameterized behavior as the coordinated sequencing of subordinate units whose individual elements are actions."/>
+ </eAnnotations>
+ <eOperations name="no_supergroups" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The groups of an activity have no supergroups.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="activity_parameter_node" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The nodes of the activity must include one ActivityParameterNode for each parameter.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="autonomous" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An activity cannot be autonomous and have a classifier or behavioral feature context at the same time.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="structuredNode" ordered="false"
+ upperBound="-1" eType="#//StructuredActivityNode" changeable="false" volatile="true"
+ transient="true" derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Top-level structured nodes in the activity."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Activity/node #//Activity/group"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="variable" ordered="false"
+ upperBound="-1" eType="#//Variable" containment="true" eOpposite="#//Variable/activityScope">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Top-level variables in the activity."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="node" ordered="false" upperBound="-1"
+ eType="#//ActivityNode" containment="true" eOpposite="#//ActivityNode/activity">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Nodes coordinated by the activity."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isReadOnly" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If true, this activity must not make any changes to variables outside the activity or to objects. (This is an assertion, not an executable property. It may be used by an execution engine to optimize model execution. If the assertion is violated by the action, then the model is ill-formed.) The default is false (an activity may make nonlocal changes)."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="edge" ordered="false" upperBound="-1"
+ eType="#//ActivityEdge" containment="true" eOpposite="#//ActivityEdge/activity">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Edges expressing flow between nodes of the activity."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="partition" ordered="false"
+ upperBound="-1" eType="#//ActivityPartition">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Top-level partitions in the activity."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Activity/group"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isSingleExecution" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If true, all invocations of the activity are handled by the same execution."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="group" ordered="false"
+ upperBound="-1" eType="#//ActivityGroup" containment="true" eOpposite="#//ActivityGroup/inActivity">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Top-level groups in the activity."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Variable" eSuperTypes="#//ConnectableElement #//MultiplicityElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Variables are elements for passing data between actions indirectly. A local variable stores values shared by the actions within a structured activity group but not accessible outside it. The output of an action may be written to a variable and read for the input to a subsequent action, which is effectively an indirect data flow path. Because there is no predefined relationship between actions that read and write variables, these actions must be sequenced by control flows to prevent race conditions that may occur between actions that read or write the same variable.&#xD;&#xA;A variable is considered a connectable element."/>
+ </eAnnotations>
+ <eOperations name="owned" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A variable is owned by a StructuredNode or Activity, but not both.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="isAccessibleBy" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The isAccessibleBy() operation is not defined in standard UML. Implementations should define it to specify which actions can access a variable.&#xD;&#xA;&#xD;&#xA;result = true"/>
+ </eAnnotations>
+ <eParameters name="a" ordered="false" lowerBound="1" eType="#//Action"/>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="scope" ordered="false"
+ eType="#//StructuredActivityNode" eOpposite="#//StructuredActivityNode/variable">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A structured activity node that owns the variable."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//NamedElement/namespace"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="activityScope" ordered="false"
+ eType="#//Activity" eOpposite="#//Activity/variable">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An activity that owns the variable."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//NamedElement/namespace"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ActivityEdge" abstract="true" eSuperTypes="#//RedefinableElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An activity edge is an abstract class for directed connections between two activity nodes.&#xD;&#xA;Activity edges can be contained in interruptible regions."/>
+ </eAnnotations>
+ <eOperations name="source_and_target" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The source and target of an edge must be in the same activity as the edge.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="owned" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Activity edges may be owned only by activities or groups.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="structured_node" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Activity edges may be owned by at most one structured node.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="source" ordered="false"
+ lowerBound="1" eType="#//ActivityNode" eOpposite="#//ActivityNode/outgoing">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Node from which tokens are taken when they traverse the edge."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="target" ordered="false"
+ lowerBound="1" eType="#//ActivityNode" eOpposite="#//ActivityNode/incoming">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Node to which tokens are put when they traverse the edge."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="redefinedEdge" ordered="false"
+ upperBound="-1" eType="#//ActivityEdge">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Inherited edges replaced by this edge in a specialization of the activity."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//RedefinableElement/redefinedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="inPartition" ordered="false"
+ upperBound="-1" eType="#//ActivityPartition" eOpposite="#//ActivityPartition/edge">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Partitions containing the edge."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//ActivityEdge/inGroup"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="guard" ordered="false"
+ lowerBound="1" eType="#//ValueSpecification" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specification evaluated at runtime to determine if the edge can be traversed."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="weight" ordered="false"
+ lowerBound="1" eType="#//ValueSpecification" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The minimum number of tokens that must traverse the edge at the same time."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="interrupts" ordered="false"
+ eType="#//InterruptibleActivityRegion" eOpposite="#//InterruptibleActivityRegion/interruptingEdge">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Region that the edge can interrupt."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="inStructuredNode" ordered="false"
+ eType="#//StructuredActivityNode" eOpposite="#//StructuredActivityNode/edge">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Structured activity node containing the edge."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//ActivityEdge/inGroup"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="inGroup" ordered="false"
+ upperBound="-1" eType="#//ActivityGroup" changeable="false" volatile="true"
+ transient="true" derived="true" eOpposite="#//ActivityGroup/containedEdge">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Groups containing the edge."/>
+ </eAnnotations>
+ <eAnnotations source="union"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="activity" ordered="false"
+ eType="#//Activity" eOpposite="#//Activity/edge">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Activity containing the edge."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/owner"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ActivityPartition" eSuperTypes="#//NamedElement #//ActivityGroup">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An activity partition is a kind of activity group for identifying actions that have some characteristic in common."/>
+ </eAnnotations>
+ <eOperations name="dimension_not_contained" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A partition with isDimension = true may not be contained by another partition.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="represents_part" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If a partition represents a part, then all the non-external partitions in the same dimension and at the same level of nesting in that dimension must represent parts directly contained in the internal structure of the same classifier.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="represents_classifier" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If a non-external partition represents a classifier and is contained in another partition, then the containing partition must represent a classifier, and the classifier of the subpartition must be nested in the classifier represented by the containing partition, or be at the contained end of a strong composition association with the classifier represented by the containing partition.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="represents_part_and_is_contained" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If a partition represents a part and is contained by another partition, then the part must be of a classifier represented by the containing partition, or of a classifier that is the type of a part representing the containing partition.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isDimension" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Tells whether the partition groups other partitions along a dimension."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isExternal" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Tells whether the partition represents an entity to which the partitioning structure does not apply."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="node" ordered="false" upperBound="-1"
+ eType="#//ActivityNode" eOpposite="#//ActivityNode/inPartition">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Nodes immediately contained in the group."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//ActivityGroup/containedNode"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="subpartition" ordered="false"
+ upperBound="-1" eType="#//ActivityPartition" containment="true" eOpposite="#//ActivityPartition/superPartition">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Partitions immediately contained in the partition."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//ActivityGroup/subgroup"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="superPartition" ordered="false"
+ eType="#//ActivityPartition" eOpposite="#//ActivityPartition/subpartition">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Partition immediately containing the partition."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//ActivityGroup/superGroup"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="represents" ordered="false"
+ eType="#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An element constraining behaviors invoked by nodes in the partition."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="edge" ordered="false" upperBound="-1"
+ eType="#//ActivityEdge" eOpposite="#//ActivityEdge/inPartition">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Edges immediately contained in the group."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//ActivityGroup/containedEdge"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="InterruptibleActivityRegion" eSuperTypes="#//ActivityGroup">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An interruptible activity region is an activity group that supports termination of tokens flowing in the portions of an activity."/>
+ </eAnnotations>
+ <eOperations name="interrupting_edges" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Interrupting edges of a region must have their source node in the region and their target node outside the region in the same activity containing the region.&#xD;&#xA;&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="node" ordered="false" upperBound="-1"
+ eType="#//ActivityNode" eOpposite="#//ActivityNode/inInterruptibleRegion">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Nodes immediately contained in the group."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//ActivityGroup/containedNode"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="interruptingEdge" ordered="false"
+ upperBound="-1" eType="#//ActivityEdge" eOpposite="#//ActivityEdge/interrupts">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The edges leaving the region that will abort other tokens flowing in the region."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ExceptionHandler" eSuperTypes="#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An exception handler is an element that specifies a body to execute in case the specified exception occurs during the execution of the protected node."/>
+ </eAnnotations>
+ <eOperations name="exception_body" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The exception handler and its input object node are not the source or target of any edge.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="result_pins" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The result pins of the exception handler body must correspond in number and types to the result pins of the protected node.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="one_input" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The handler body has one input, and that input is the same as the exception input.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="edge_source_target" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An edge that has a source in an exception handler structured node must have its target in the handler also, and vice versa.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="handlerBody" ordered="false"
+ lowerBound="1" eType="#//ExecutableNode">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A node that is executed if the handler satisfies an uncaught exception."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="exceptionInput" ordered="false"
+ lowerBound="1" eType="#//ObjectNode">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An object node within the handler body. When the handler catches an exception, the exception token is placed in this node, causing the body to execute."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="exceptionType" ordered="false"
+ lowerBound="1" upperBound="-1" eType="#//Classifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The kind of instances that the handler catches. If an exception occurs whose type is any of the classifiers in the set, the handler catches the exception and executes its body."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="protectedNode" ordered="false"
+ lowerBound="1" eType="#//ExecutableNode" eOpposite="#//ExecutableNode/handler">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The node protected by the handler. The handler is examined if an exception propagates to the outside of the node."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/owner"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ObjectNode" abstract="true" eSuperTypes="#//ActivityNode #//TypedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An object node is an abstract activity node that is part of defining object flow in an activity.&#xD;&#xA;Object nodes have support for token selection, limitation on the number of tokens, specifying the state required for tokens, and carrying control values."/>
+ </eAnnotations>
+ <eOperations name="object_flow_edges" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="All edges coming into or going out of object nodes must be object flow edges.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="not_unique" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Object nodes are not unique typed elements&#xD;&#xA;isUnique = false"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="selection_behavior" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If an object node has a selection behavior, then the ordering of the object node is ordered, and vice versa.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="input_output_parameter" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A selection behavior has one input parameter and one output parameter. The input parameter must be a bag of elements of the same type as the object node or a supertype of the type of object node. The output parameter must be the same or a subtype of the type of object node. The behavior cannot have side effects.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="ordering" ordered="false"
+ lowerBound="1" eType="#//ObjectNodeOrderingKind" defaultValueLiteral="FIFO">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Tells whether and how the tokens in the object node are ordered for selection to traverse edges outgoing from the object node."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isControlType" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Tells whether the type of the object node is to be treated as control."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="upperBound" ordered="false"
+ lowerBound="1" eType="#//ValueSpecification" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The maximum number of tokens allowed in the node. Objects cannot flow into the node if the upper bound is reached."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="inState" ordered="false"
+ upperBound="-1" eType="#//State">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The required states of the object available at this point in the activity."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="selection" ordered="false"
+ eType="#//Behavior">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Selects tokens for outgoing edges."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="ObjectNodeOrderingKind">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="ObjectNodeOrderingKind is an enumeration indicating queuing order within a node."/>
+ </eAnnotations>
+ <eLiterals name="unordered">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Indicates that object node tokens are unordered."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="ordered" value="1">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Indicates that object node tokens are ordered."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="LIFO" value="2">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Indicates that object node tokens are queued in a last in, first out manner."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="FIFO" value="3">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Indicates that object node tokens are queued in a first in, first out manner."/>
+ </eAnnotations>
+ </eLiterals>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="OutputPin" eSuperTypes="#//Pin">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An output pin is a pin that holds output values produced by an action."/>
+ </eAnnotations>
+ <eOperations name="incoming_edges_structured_only" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Output pins may have incoming edges only when they are on actions that are structured nodes, and these edges may not target a node contained by the structured node.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Pin" eSuperTypes="#//ObjectNode #//MultiplicityElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A pin is a typed element and multiplicity element that provides values to actions and accept result values from them.&#xD;&#xA;A pin is an object node for inputs and outputs to actions."/>
+ </eAnnotations>
+ <eOperations name="control_pins" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Control pins have a control type&#xD;&#xA;isControl implies isControlType"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isControl" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Tells whether the pins provide data to the actions, or just controls when it executes it."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="InputPin" eSuperTypes="#//Pin">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An input pin is a pin that holds input values to be consumed by an action."/>
+ </eAnnotations>
+ <eOperations name="outgoing_edges_structured_only" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Input pins may have outgoing edges only when they are on actions that are structured nodes, and these edges must target a node contained by the structured node.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="CallAction" abstract="true" eSuperTypes="#//InvocationAction">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="CallAction is an abstract class for actions that invoke behavior and receive return values."/>
+ </eAnnotations>
+ <eOperations name="synchronous_call" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Only synchronous call actions can have result pins.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="number_and_order" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The number and order of argument pins must be the same as the number and order of parameters of the invoked behavior or behavioral feature. Pins are matched to parameters by order.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="type_ordering_multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type, ordering, and multiplicity of an argument pin must be the same as the corresponding parameter of the behavior or behavioral feature.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isSynchronous" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If true, the call is synchronous and the caller waits for completion of the invoked behavior.&#xD;&#xA;If false, the call is asynchronous and the caller proceeds immediately and does not expect a return values.&#xD;&#xA;"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="result" upperBound="-1"
+ eType="#//OutputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A list of output pins where the results of performing the invocation are placed."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/output"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="InvocationAction" abstract="true" eSuperTypes="#//Action">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="InvocationAction is an abstract class for the various actions that invoke behavior.&#xD;&#xA;In addition to targeting an object, invocation actions can also invoke behavioral features on ports from where the invocation requests are routed onwards on links deriving from attached connectors. Invocation actions may also be sent to a target via a given port, either on the sending object or on another object."/>
+ </eAnnotations>
+ <eOperations name="on_port_receiver" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The onPort must be a port on the receiver object.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="argument" upperBound="-1"
+ eType="#//InputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specification of the ordered set of argument values that appears during execution."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/input"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="onPort" ordered="false"
+ eType="#//Port">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A optional port of the receiver object on which the behavioral feature is invoked."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="SendSignalAction" eSuperTypes="#//InvocationAction">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A send signal action is an action that creates a signal instance from its inputs, and transmits it to the target object, where it may cause the firing of a state machine transition or the execution of an activity. The argument values are available to the execution of associated behaviors. The requestor continues execution immediately. Any reply message is ignored and is not transmitted to the requestor. If the input is already a signal instance, use a send object action."/>
+ </eAnnotations>
+ <eOperations name="number_order" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The number and order of argument pins must be the same as the number and order of attributes in the signal.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="type_ordering_multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type, ordering, and multiplicity of an argument pin must be the same as the corresponding attribute of the signal.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="target" ordered="false"
+ lowerBound="1" eType="#//InputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The target object to which the signal is sent."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/input"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="signal" ordered="false"
+ lowerBound="1" eType="#//Signal">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type of signal transmitted to the target object."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="CallOperationAction" eSuperTypes="#//CallAction">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A call operation action is an action that transmits an operation call request to the target object, where it may cause the invocation of associated behavior. The argument values of the action are available to the execution of the invoked behavior. If the action is marked synchronous, the execution of the call operation action waits until the execution of the invoked behavior completes and a reply transmission is returned to the caller; otherwise execution of the action is complete when the invocation of the operation is established and the execution of the invoked operation proceeds concurrently with the execution of the calling behavior. Any values returned as part of the reply transmission are put on the result output pins of the call operation action. Upon receipt of the reply transmission, execution of the call operation action is complete."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EOperation" name="type_ordering_multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type, ordering, and multiplicity of an argument or result pin is derived from the corresponding owned parameter of the operation.&#xD;&#xA;&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//CallAction/type_ordering_multiplicity"/>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </contents>
+ </eAnnotations>
+ <eOperations name="argument_pin_equal_parameter" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The number of argument pins and the number of owned parameters of the operation of type in and in-out must be equal.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="result_pin_equal_parameter" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The number of result pins and the number of owned parameters of the operation of type return, out, and in-out must be equal.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="type_target_pin" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type of the target pin must be the same as the type that owns the operation.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="operation" ordered="false"
+ lowerBound="1" eType="#//Operation">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The operation to be invoked by the action execution."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="target" ordered="false"
+ lowerBound="1" eType="#//InputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The target object to which the request is sent. The classifier of the target object is used to dynamically determine a behavior to invoke. This object constitutes the context of the execution of the operation."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/input"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="CallBehaviorAction" eSuperTypes="#//CallAction">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A call behavior action is a call action that invokes a behavior directly rather than invoking a behavioral feature that, in turn, results in the invocation of that behavior. The argument values of the action are available to the execution of the invoked behavior. For synchronous calls the execution of the call behavior action waits until the execution of the invoked behavior completes and a result is returned on its output pin. The action completes immediately without a result, if the call is asynchronous. In particular, the invoked behavior may be an activity."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EOperation" name="type_ordering_multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type, ordering, and multiplicity of an argument or result pin is derived from the corresponding parameter of the behavior.&#xD;&#xA;&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//CallAction/type_ordering_multiplicity"/>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </contents>
+ </eAnnotations>
+ <eOperations name="argument_pin_equal_parameter" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The number of argument pins and the number of parameters of the behavior of type in and in-out must be equal.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="result_pin_equal_parameter" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The number of result pins and the number of parameters of the behavior of type return, out, and in-out must be equal.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="behavior" ordered="false"
+ lowerBound="1" eType="#//Behavior">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The invoked behavior. It must be capable of accepting and returning control."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="SequenceNode" eSuperTypes="#//StructuredActivityNode">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A sequence node is a structured activity node that executes its actions in order."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="executableNode" upperBound="-1"
+ eType="#//ExecutableNode" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An ordered set of executable nodes."/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//StructuredActivityNode/node"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ControlNode" abstract="true" eSuperTypes="#//ActivityNode">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A control node is an abstract activity node that coordinates flows in an activity."/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ControlFlow" eSuperTypes="#//ActivityEdge">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A control flow is an edge that starts an activity node after the previous one is finished."/>
+ </eAnnotations>
+ <eOperations name="object_nodes" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Control flows may not have object nodes at either end, except for object nodes with control type.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="InitialNode" eSuperTypes="#//ControlNode">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An initial node is a control node at which flow starts when the activity is invoked."/>
+ </eAnnotations>
+ <eOperations name="no_incoming_edges" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An initial node has no incoming edges.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="control_edges" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Only control edges can have initial nodes as source.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ActivityParameterNode" eSuperTypes="#//ObjectNode">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An activity parameter node is an object node for inputs and outputs to activities."/>
+ </eAnnotations>
+ <eOperations name="has_parameters" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Activity parameter nodes must have parameters from the containing activity.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="same_type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type of an activity parameter node is the same as the type of its parameter.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="no_edges" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An activity parameter node may have all incoming edges or all outgoing edges, but it must not have both incoming and outgoing edges.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="no_incoming_edges" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Activity parameter object nodes with no incoming edges and one or more outgoing edges must have a parameter with in or inout direction.&#xD;&#xA;&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="no_outgoing_edges" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Activity parameter object nodes with no outgoing edges and one or more incoming edges must have a parameter with out, inout, or return direction.&#xD;&#xA;&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="maximum_one_parameter_node" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A parameter with direction other than inout must have at most one activity parameter node in an activity.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="maximum_two_parameter_nodes" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A parameter with direction inout must have at most two activity parameter nodes in an activity, one with incoming flows and one with outgoing flows.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="parameter" ordered="false"
+ lowerBound="1" eType="#//Parameter">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The parameter the object node will be accepting or providing values for."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ValuePin" eSuperTypes="#//InputPin">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A value pin is an input pin that provides a value by evaluating a value specification."/>
+ </eAnnotations>
+ <eOperations name="compatible_type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type of value specification must be compatible with the type of the value pin.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="no_incoming_edges" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Value pins have no incoming edges.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="value" ordered="false"
+ lowerBound="1" eType="#//ValueSpecification" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Value that the pin will provide."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Message" eSuperTypes="#//NamedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A message defines a particular communication between lifelines of an interaction."/>
+ </eAnnotations>
+ <eOperations name="sending_receiving_message_event" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If the sending MessageEvent and the receiving MessageEvent of the same Message are on the same Lifeline, the sending MessageEvent must be ordered before the receiving MessageEvent.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="signature_refer_to" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The signature must either refer an Operation (in which case messageSort is either synchCall or asynchCall) or a Signal (in which case messageSort is asynchSignal). The name of the NamedElement referenced by signature must be the same as that of the Message.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="signature_is_operation" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="In the case when the Message signature is an Operation, the arguments of the Message must correspond to the parameters of the Operation. A Parameter corresponds to an Argument if the Argument is of the same Class or a specialization of that of the Parameter.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="signature_is_signal" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="In the case when the Message signature is a Signal, the arguments of the Message must correspond to the attributes of the Signal. A Message Argument corresponds to a Signal Attribute if the Arguement is of the same Class or a specialization of that of the Attribute.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="arguments" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Arguments of a Message must only be:&#xA;i) attributes of the sending lifeline&#xA;ii) constants&#xA;iii) symbolic values (which are wildcard values representing any legal value)&#xA;iv) explicit parameters of the enclosing Interaction&#xA;v) attributes of the class owning the Interaction&#xA;&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="cannot_cross_boundaries" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Messages cannot cross bounderies of CombinedFragments or their operands.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="occurrence_specifications" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If the MessageEnds are both OccurrenceSpecifications then the connector must go between the Parts represented by the Lifelines of the two MessageEnds.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getMessageKind" ordered="false" lowerBound="1" eType="#//MessageKind">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="suppressedVisibility" value="true"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getSignature" ordered="false" eType="#//NamedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="suppressedVisibility" value="true"/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="messageKind" ordered="false"
+ lowerBound="1" eType="#//MessageKind" changeable="false" volatile="true" transient="true"
+ defaultValueLiteral="unknown" derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The derived kind of the Message (complete, lost, found or unknown)"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="messageSort" ordered="false"
+ lowerBound="1" eType="#//MessageSort" defaultValueLiteral="synchCall">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The sort of communication reflected by the Message"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="receiveEvent" ordered="false"
+ eType="#//MessageEnd">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the Receiving of the Message"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="sendEvent" ordered="false"
+ eType="#//MessageEnd">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the Sending of the Message."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="connector" ordered="false"
+ eType="#//Connector">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The Connector on which this Message is sent."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="interaction" ordered="false"
+ lowerBound="1" eType="#//Interaction" eOpposite="#//Interaction/message">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The enclosing Interaction owning the Message"/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//NamedElement/namespace"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="argument" upperBound="-1"
+ eType="#//ValueSpecification" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The arguments of the Message"/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="signature" ordered="false"
+ eType="#//NamedElement" changeable="false" volatile="true" transient="true"
+ derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The definition of the type or signature of the Message (depending on its kind). The associated named element is derived from the message end that constitutes the sending or receiving message event. If both a sending event and a receiving message event are present, the signature is obtained from the sending event."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="MessageKind">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="This is an enumerated type that identifies the type of message."/>
+ </eAnnotations>
+ <eLiterals name="complete">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="sendEvent and receiveEvent are present"/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="lost" value="1">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="sendEvent present and receiveEvent absent"/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="found" value="2">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="sendEvent absent and receiveEvent present"/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="unknown" value="3">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="sendEvent and receiveEvent absent (should not appear)"/>
+ </eAnnotations>
+ </eLiterals>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="MessageSort">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="This is an enumerated type that identifies the type of communication action that was used to generate the message."/>
+ </eAnnotations>
+ <eLiterals name="synchCall">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The message was generated by a synchronous call to an operation."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="asynchCall" value="1">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The message was generated by an asynchronous call to an operation; i.e., a CallAction with isSynchronous&#xD;&#xA;= false.&#xD;&#xA;"/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="asynchSignal" value="2">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The message was generated by an asynchronous send action."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="createMessage" value="3">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The message designating the creation of another lifeline object."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="deleteMessage" value="4">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The message designating the termination of another lifeline."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="reply" value="5">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The message is a reply message to an operation call."/>
+ </eAnnotations>
+ </eLiterals>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="MessageEnd" abstract="true" eSuperTypes="#//NamedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="MessageEnd is an abstract specialization of NamedElement that represents what can occur at the end of a message."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="message" ordered="false"
+ eType="#//Message">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References a Message."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Interaction" eSuperTypes="#//Behavior #//InteractionFragment">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An interaction is a unit of behavior that focuses on the observable exchange of information between connectable elements."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="lifeline" ordered="false"
+ upperBound="-1" eType="#//Lifeline" containment="true" eOpposite="#//Lifeline/interaction">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies the participants in this Interaction."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="fragment" upperBound="-1"
+ eType="#//InteractionFragment" containment="true" eOpposite="#//InteractionFragment/enclosingInteraction">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The ordered set of fragments in the Interaction."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="action" ordered="false"
+ upperBound="-1" eType="#//Action" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Actions owned by the Interaction."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="formalGate" ordered="false"
+ upperBound="-1" eType="#//Gate" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies the gates that form the message interface between this Interaction and any InteractionUses which reference it.&#xD;&#xA;"/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="message" ordered="false"
+ upperBound="-1" eType="#//Message" containment="true" eOpposite="#//Message/interaction">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The Messages contained in this Interaction."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="InteractionFragment" abstract="true"
+ eSuperTypes="#//NamedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="InteractionFragment is an abstract notion of the most general interaction unit. An interaction fragment is a piece of an interaction. Each interaction fragment is conceptually like an interaction by itself."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="covered" ordered="false"
+ upperBound="-1" eType="#//Lifeline" eOpposite="#//Lifeline/coveredBy">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the Lifelines that the InteractionFragment involves."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="generalOrdering" ordered="false"
+ upperBound="-1" eType="#//GeneralOrdering" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The general ordering relationships contained in this fragment."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="enclosingInteraction" ordered="false"
+ eType="#//Interaction" eOpposite="#//Interaction/fragment">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The Interaction enclosing this InteractionFragment."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="enclosingOperand" ordered="false"
+ eType="#//InteractionOperand" eOpposite="#//InteractionOperand/fragment">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The operand enclosing this InteractionFragment (they may nest recursively)"/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//NamedElement/namespace"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Lifeline" eSuperTypes="#//NamedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A lifeline represents an individual participant in the interaction. While parts and structural features may have multiplicity greater than 1, lifelines represent only one interacting entity."/>
+ </eAnnotations>
+ <eOperations name="interaction_uses_share_lifeline" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If two (or more) InteractionUses within one Interaction, refer to Interactions with 'common Lifelines,' those Lifelines must also appear in the Interaction with the InteractionUses. By common Lifelines we mean Lifelines with the same selector and represents associations.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="selector_specified" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The selector for a Lifeline must only be specified if the referenced Part is multivalued.&#xD;&#xA;(self.selector->isEmpty() implies not self.represents.isMultivalued()) or&#xA;(not self.selector->isEmpty() implies self.represents.isMultivalued())&#xA;"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="same_classifier" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The classifier containing the referenced ConnectableElement must be the same classifier, or an ancestor, of the classifier that contains the interaction enclosing this lifeline.&#xD;&#xA;if (represents->notEmpty()) then&#xA;(if selector->notEmpty() then represents.isMultivalued() else not represents.isMultivalued())&#xA;"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="represents" ordered="false"
+ eType="#//ConnectableElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the ConnectableElement within the classifier that contains the enclosing interaction."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="interaction" ordered="false"
+ lowerBound="1" eType="#//Interaction" eOpposite="#//Interaction/lifeline">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the Interaction enclosing this Lifeline."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//NamedElement/namespace"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="selector" ordered="false"
+ eType="#//ValueSpecification" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If the referenced ConnectableElement is multivalued, then this specifies the specific individual part within that set."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="decomposedAs" ordered="false"
+ eType="#//PartDecomposition">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the Interaction that represents the decomposition."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="coveredBy" ordered="false"
+ upperBound="-1" eType="#//InteractionFragment" eOpposite="#//InteractionFragment/covered">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the InteractionFragments in which this Lifeline takes part."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="PartDecomposition" eSuperTypes="#//InteractionUse">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A part decomposition is a description of the internal interactions of one lifeline relative to an interaction."/>
+ </eAnnotations>
+ <eOperations name="parts_of_internal_structures" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="PartDecompositions apply only to Parts that are Parts of Internal Structures not to Parts of Collaborations.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="assume" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Assume that within Interaction X, Lifeline L is of class C and decomposed to D. Within X there is a sequence of constructs along L (such constructs are CombinedFragments, InteractionUse and (plain) OccurrenceSpecifications). Then a corresponding sequence of constructs must appear within D, matched one-to-one in the same order.&#xD;&#xA;&#xD;&#xA;i) CombinedFragment covering L are matched with an extra-global CombinedFragment in D&#xD;&#xA;ii) An InteractionUse covering L are matched with a global (i.e. covering all Lifelines) InteractionUse in D.&#xD;&#xA;iii) A plain OccurrenceSpecification on L is considered an actualGate that must be matched by a formalGate of D&#xD;&#xA;&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="commutativity_of_decomposition" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Assume that within Interaction X, Lifeline L is of class C and decomposed to D. Assume also that there is within X an&#xD;&#xA;InteractionUse (say) U that covers L. According to the constraint above U will have a counterpart CU within D. Within the Interaction referenced by U, L should also be decomposed, and the decomposition should reference CU. (This rule is called commutativity of decomposition)&#xD;&#xA;&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="InteractionUse" eSuperTypes="#//InteractionFragment">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An interaction use refers to an interaction. The interaction use is a shorthand for copying the contents of the referenced interaction where the interaction use is. To be accurate the copying must take into account substituting parameters with arguments and connect the formal gates with the actual ones."/>
+ </eAnnotations>
+ <eOperations name="gates_match" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Actual Gates of the InteractionUse must match Formal Gates of the referred Interaction. Gates match when their names are equal.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="all_lifelines" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The InteractionUse must cover all Lifelines of the enclosing Interaction which appear within the referred Interaction.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="arguments_correspond_to_parameters" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The arguments of the InteractionUse must correspond to parameters of the referred Interaction&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="arguments_are_constants" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The arguments must only be constants, parameters of the enclosing Interaction or attributes of the classifier owning the enclosing Interaction.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="refersTo" ordered="false"
+ lowerBound="1" eType="#//Interaction">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Refers to the Interaction that defines its meaning"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="actualGate" ordered="false"
+ upperBound="-1" eType="#//Gate" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The actual gates of the InteractionUse"/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="argument" upperBound="-1"
+ eType="#//Action" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The actual arguments of the Interaction"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Gate" eSuperTypes="#//MessageEnd">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A gate is a connection point for relating a message outside an interaction fragment with a message inside the interaction fragment."/>
+ </eAnnotations>
+ <eOperations name="messages_actual_gate" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The message leading to/from an actualGate of an InteractionUse must correspond to the message leading from/to the formalGate with the same name of the Interaction referenced by the InteractionUse.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="messages_combined_fragment" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The message leading to/from an (expression) Gate within a CombinedFragment must correspond to the message leading from/to the CombinedFragment on its outside.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="GeneralOrdering" eSuperTypes="#//NamedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A general ordering represents a binary relation between two occurrence specifications, to describe that one occurrence specification must occur before the other in a valid trace. This mechanism provides the ability to define partial orders of occurrence cpecifications that may otherwise not have a specified order."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="before" ordered="false"
+ lowerBound="1" eType="#//OccurrenceSpecification" eOpposite="#//OccurrenceSpecification/toAfter">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The OccurrenceSpecification referenced comes before the OccurrenceSpecification referenced by after."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="after" ordered="false"
+ lowerBound="1" eType="#//OccurrenceSpecification" eOpposite="#//OccurrenceSpecification/toBefore">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The OccurrenceSpecification referenced comes after the OccurrenceSpecification referenced by before."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="OccurrenceSpecification" eSuperTypes="#//InteractionFragment">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An occurrence specification is the basic semantic unit of interactions. The sequences of occurrences specified by them are the meanings of interactions."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EReference" name="covered" ordered="false" upperBound="-1"
+ eType="#//Lifeline">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the Lifeline on which the OccurrenceSpecification appears."/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//InteractionFragment/covered"/>
+ </contents>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="toBefore" ordered="false"
+ upperBound="-1" eType="#//GeneralOrdering" eOpposite="#//GeneralOrdering/after">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the GeneralOrderings that specify EventOcurrences that must occur before this OccurrenceSpecification&#xD;&#xA;"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="event" ordered="false"
+ lowerBound="1" eType="#//Event">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References a specification of the occurring event."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="toAfter" ordered="false"
+ upperBound="-1" eType="#//GeneralOrdering" eOpposite="#//GeneralOrdering/before">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the GeneralOrderings that specify EventOcurrences that must occur after this OccurrenceSpecification&#xD;&#xA;"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="InteractionOperand" eSuperTypes="#//Namespace #//InteractionFragment">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An interaction operand is contained in a combined fragment. An interaction operand represents one operand of the expression given by the enclosing combined fragment."/>
+ </eAnnotations>
+ <eOperations name="guard_directly_prior" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The guard must be placed directly prior to (above) the OccurrenceSpecification that will become the first OccurrenceSpecification within this InteractionOperand.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="guard_contain_references" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The guard must contain only references to values local to the Lifeline on which it resides, or values global to the whole Interaction.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="guard" ordered="false"
+ eType="#//InteractionConstraint" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Constraint of the operand."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="fragment" upperBound="-1"
+ eType="#//InteractionFragment" containment="true" eOpposite="#//InteractionFragment/enclosingOperand">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The fragments of the operand."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="InteractionConstraint" eSuperTypes="#//Constraint">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An interaction constraint is a Boolean expression that guards an operand in a combined fragment."/>
+ </eAnnotations>
+ <eOperations name="dynamic_variables" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The dynamic variables that take part in the constraint must be owned by the ConnectableElement corresponding to the covered Lifeline.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="global_data" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The constraint may contain references to global data or write-once data.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="minint_maxint" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Minint/maxint can only be present if the InteractionConstraint is associated with the operand of a loop CombinedFragment.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="minint_non_negative" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If minint is specified, then the expression must evaluate to a non-negative integer.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="maxint_positive" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If maxint is specified, then the expression must evaluate to a positive integer.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="maxint_greater_equal_minint" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If maxint is specified, then minint must be specified and the evaluation of maxint must be >= the evaluation of minint&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="minint" ordered="false"
+ eType="#//ValueSpecification" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The minimum number of iterations of a loop"/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="maxint" ordered="false"
+ eType="#//ValueSpecification" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The maximum number of iterations of a loop"/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ExecutionSpecification" abstract="true"
+ eSuperTypes="#//InteractionFragment">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An execution specification is a specification of the execution of a unit of behavior or action within the lifeline. The duration of an execution specification is represented by two cccurrence specifications, the start occurrence specification and the finish occurrence specification."/>
+ </eAnnotations>
+ <eOperations name="same_lifeline" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The startEvent and the finishEvent must be on the same Lifeline&#xD;&#xA;start.lifeline = finish.lifeline"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="start" ordered="false"
+ lowerBound="1" eType="#//OccurrenceSpecification">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the OccurrenceSpecification that designates the start of the Action or Behavior"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="finish" ordered="false"
+ lowerBound="1" eType="#//OccurrenceSpecification">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the OccurrenceSpecification that designates the finish of the Action or Behavior."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="StateInvariant" eSuperTypes="#//InteractionFragment">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A state invariant is a runtime constraint on the participants of the interaction. It may be used to specify a variety of different kinds of constraints, such as values of attributes or variables, internal or external states, and so on. A state invariant is an interaction fragment and it is placed on a lifeline."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EReference" name="covered" ordered="false" upperBound="-1"
+ eType="#//Lifeline">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the Lifeline on which the StateInvariant appears."/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//InteractionFragment/covered"/>
+ </contents>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="invariant" ordered="false"
+ lowerBound="1" eType="#//Constraint" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A Constraint that should hold at runtime for this StateInvariant"/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ActionExecutionSpecification" eSuperTypes="#//ExecutionSpecification">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An action execution specification is a kind of execution specification representing the execution of an action."/>
+ </eAnnotations>
+ <eOperations name="action_referenced" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The Action referenced by the ActionExecutionSpecification, if any, must be owned by the Interaction owning the ActionExecutionOccurrence.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="action" ordered="false"
+ lowerBound="1" eType="#//Action">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Action whose execution is occurring."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="BehaviorExecutionSpecification" eSuperTypes="#//ExecutionSpecification">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A behavior execution specification is a kind of execution specification representing the execution of a behavior."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="behavior" ordered="false"
+ eType="#//Behavior">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Behavior whose execution is occurring."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ExecutionEvent" eSuperTypes="#//Event">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An execution event models the start or finish of an execution occurrence."/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="CreationEvent" eSuperTypes="#//Event">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A creation event models the creation of an object."/>
+ </eAnnotations>
+ <eOperations name="no_occurrence_above" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="No othet OccurrenceSpecification may appear above an OccurrenceSpecification which references a CreationEvent on a given Lifeline in an InteractionOperand.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="DestructionEvent" eSuperTypes="#//Event">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A destruction event models the destruction of an object."/>
+ </eAnnotations>
+ <eOperations name="no_occurrence_specifications_below" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="No other OccurrenceSpecifications may appear below an OccurrenceSpecification which references a DestructionEvent on a given Lifeline in an InteractionOperand.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="SendOperationEvent" eSuperTypes="#//MessageEvent">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A send operation event models the invocation of an operation call."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="operation" ordered="false"
+ lowerBound="1" eType="#//Operation">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The operation associated with this event."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="MessageEvent" abstract="true" eSuperTypes="#//Event">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A message event specifies the receipt by an object of either a call or a signal."/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="SendSignalEvent" eSuperTypes="#//MessageEvent">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A send signal event models the sending of a signal."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="signal" ordered="false"
+ lowerBound="1" eType="#//Signal">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The signal associated with this event."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="MessageOccurrenceSpecification" eSuperTypes="#//OccurrenceSpecification #//MessageEnd">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A message occurrence specification pecifies the occurrence of message events, such as sending and receiving of signals or invoking or receiving of operation calls. A message occurrence specification is a kind of message end. Messages are generated either by synchronous operation calls or asynchronous signal sends. They are received by the execution of corresponding accept event actions."/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ExecutionOccurrenceSpecification" eSuperTypes="#//OccurrenceSpecification">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An execution occurrence specification represents moments in time at which actions or behaviors start or finish."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EReference" name="event" ordered="false" lowerBound="1"
+ eType="#//Event">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The event referenced is restricted to an execution event."/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//OccurrenceSpecification/event"/>
+ </contents>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="execution" ordered="false"
+ lowerBound="1" eType="#//ExecutionSpecification">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the execution specification describing the execution that is started or finished at this execution event."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ReceiveOperationEvent" eSuperTypes="#//MessageEvent">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A receive operation event specifies the event of receiving an operation invocation for a particular operation by the target entity."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="operation" ordered="false"
+ lowerBound="1" eType="#//Operation">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The operation associated with this event."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ReceiveSignalEvent" eSuperTypes="#//MessageEvent">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A receive signal event specifies the event of receiving a signal by the target entity."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="signal" ordered="false"
+ lowerBound="1" eType="#//Signal">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The signal associated with this event."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Actor" eSuperTypes="#//BehavioredClassifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An actor specifies a role played by a user or any other system that interacts with the subject."/>
+ </eAnnotations>
+ <eOperations name="associations" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An actor can only have associations to use cases, components and classes. Furthermore these associations must be binary.&#xD;&#xA;self.ownedAttribute->forAll ( a |&#xA;(a.association->notEmpty()) implies&#xA;((a.association.memberEnd.size() = 2) and&#xA;(a.opposite.class.oclIsKindOf(UseCase) or&#xA;(a.opposite.class.oclIsKindOf(Class) and not a.opposite.class.oclIsKindOf(Behavior))))&#xA;"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="must_have_name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An actor must have a name.&#xD;&#xA;name->notEmpty()"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="CallEvent" eSuperTypes="#//MessageEvent">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A call event models the receipt by an object of a message invoking a call of an operation."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="operation" ordered="false"
+ lowerBound="1" eType="#//Operation">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Designates the operation whose invocation raised the call event."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ChangeEvent" eSuperTypes="#//Event">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A change event models a change in the system configuration that makes a condition true."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="changeExpression" ordered="false"
+ lowerBound="1" eType="#//ValueSpecification" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A Boolean-valued expression that will result in a change event whenever its value changes from false to true."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="SignalEvent" eSuperTypes="#//MessageEvent">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A signal event represents the receipt of an asynchronous signal instance. A signal event may, for example, cause a state machine to trigger a transition."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="signal" ordered="false"
+ lowerBound="1" eType="#//Signal">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The specific signal that is associated with this event."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="AnyReceiveEvent" eSuperTypes="#//MessageEvent">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A transition trigger associated with an any receive event specifies that the transition is to be triggered by the receipt of any message that is not explicitly referenced in another transition from the same vertex."/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ForkNode" eSuperTypes="#//ControlNode">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A fork node is a control node that splits a flow into multiple concurrent flows."/>
+ </eAnnotations>
+ <eOperations name="one_incoming_edge" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A fork node has one incoming edge.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="edges" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The edges coming into and out of a fork node must be either all object flows or all control flows.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="FlowFinalNode" eSuperTypes="#//FinalNode">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A flow final node is a final node that terminates a flow."/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="FinalNode" abstract="true" eSuperTypes="#//ControlNode">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A final node is an abstract control node at which a flow in an activity stops."/>
+ </eAnnotations>
+ <eOperations name="no_outgoing_edges" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A final node has no outgoing edges.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="CentralBufferNode" eSuperTypes="#//ObjectNode">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A central buffer node is an object node for managing flows from multiple sources and destinations."/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="MergeNode" eSuperTypes="#//ControlNode">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A merge node is a control node that brings together multiple alternate flows. It is not used to synchronize concurrent flows but to accept one among several alternate flows."/>
+ </eAnnotations>
+ <eOperations name="one_outgoing_edge" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A merge node has one outgoing edge.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="edges" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The edges coming into and out of a merge node must be either all object flows or all control flows.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="DecisionNode" eSuperTypes="#//ControlNode">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A decision node is a control node that chooses between outgoing flows."/>
+ </eAnnotations>
+ <eOperations name="incoming_outgoing_edges" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A decision node has one or two incoming edges and at least one outgoing edge.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="edges" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The edges coming into and out of a decision node, other than the decision input flow (if any), must be either all object flows or all control flows.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="decision_input_flow_incoming" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The decisionInputFlow of a decision node must be an incoming edge of the decision node.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="parameters" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A decision input behavior has no output parameters, no in-out parameters and one return parameter.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="zero_input_parameters" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If the decision node has no decision input flow and an incoming control flow, then a decision input behavior has zero input parameters.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="incoming_object_one_input_parameter" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If the decision node has no decision input flow and an incoming object flow, then a decision input behavior has one input parameter whose type is the same as or a supertype of the type of object tokens offered on the incoming edge.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="incoming_control_one_input_parameter" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If the decision node has a decision input flow and an incoming control flow, then a decision input behavior has one input parameter whose type is the same as or a supertype of the type of object tokens offered on the decision input flow.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="two_input_parameters" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If the decision node has a decision input flow and an second incoming object flow, then a decision input behavior has two input parameters, the first of which has a type that is the same as or a supertype of the type of the type of object tokens offered on the nondecision input flow and the second of which has a type that is the same as or a supertype of the type of object tokens offered on the decision input flow.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="decisionInput" ordered="false"
+ eType="#//Behavior">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Provides input to guard specifications on edges outgoing from the decision node."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="decisionInputFlow" ordered="false"
+ eType="#//ObjectFlow">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An additional edge incoming to the decision node that provides a decision input value."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ObjectFlow" eSuperTypes="#//ActivityEdge">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An object flow is an activity edge that can have objects or data passing along it.&#xD;&#xA;Object flows have support for multicast/receive, token selection from object nodes, and transformation of tokens."/>
+ </eAnnotations>
+ <eOperations name="no_actions" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Object flows may not have actions at either end.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="compatible_types" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Object nodes connected by an object flow, with optionally intervening control nodes, must have compatible types. In particular, the downstream object node type must be the same or a supertype of the upstream object node type.&#xD;&#xA;&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="same_upper_bounds" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Object nodes connected by an object flow, with optionally intervening control nodes, must have the same upper bounds.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="target" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An edge with constant weight may not target an object node, or lead to an object node downstream with no intervening actions, that has an upper bound less than the weight.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="transformation_behaviour" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A transformation behavior has one input parameter and one output parameter. The input parameter must be the same as or a supertype of the type of object token coming from the source end. The output parameter must be the same or a subtype of the type of object token expected downstream. The behavior cannot have side effects.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="selection_behaviour" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An object flow may have a selection behavior only if has an object node as a source.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="input_and_output_parameter" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A selection behavior has one input parameter and one output parameter. The input parameter must be a bag of elements of the same as or a supertype of the type of source object node. The output parameter must be the same or a subtype of the type of source object node. The behavior cannot have side effects.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="is_multicast_or_is_multireceive" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="isMulticast and isMultireceive cannot both be true.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isMulticast" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Tells whether the objects in the flow are passed by multicasting."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isMultireceive" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Tells whether the objects in the flow are gathered from respondents to multicasting."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="transformation" ordered="false"
+ eType="#//Behavior">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Changes or replaces data tokens flowing along edge."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="selection" ordered="false"
+ eType="#//Behavior">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Selects tokens from a source object node."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ActivityFinalNode" eSuperTypes="#//FinalNode">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An activity final node is a final node that stops all flows in an activity."/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ComponentRealization" eSuperTypes="#//Realization">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The realization concept is specialized to (optionally) define the classifiers that realize the contract offered by a component in terms of its provided and required interfaces. The component forms an abstraction from these various classifiers."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="abstraction" ordered="false"
+ eType="#//Component" eOpposite="#//Component/realization">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The Component that owns this ComponentRealization and which is implemented by its realizing classifiers."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/owner #//Dependency/client"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="realizingClassifier" ordered="false"
+ lowerBound="1" upperBound="-1" eType="#//Classifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The classifiers that are involved in the implementation of the Component that owns this Realization."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Dependency/supplier"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Component" eSuperTypes="#//Class">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A component represents a modular part of a system that encapsulates its contents and whose manifestation is replaceable within its environment.&#xD;&#xA;In the namespace of a component, all model elements that are involved in or related to its definition are either owned or imported explicitly. This may include, for example, use cases and dependencies (e.g. mappings), packages, components, and artifacts."/>
+ </eAnnotations>
+ <eOperations name="createOwnedClass" ordered="false" lowerBound="1" eType="#//Class">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Creates a(n) (abstract) class with the specified name as a packaged element of this component."/>
+ </eAnnotations>
+ <eParameters name="name" ordered="false" lowerBound="1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The name for the new class, or null."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="isAbstract" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Whether the new class should be abstract."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="createOwnedEnumeration" ordered="false" lowerBound="1" eType="#//Enumeration">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Creates a enumeration with the specified name as a packaged element of this component."/>
+ </eAnnotations>
+ <eParameters name="name" ordered="false" lowerBound="1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The name for the new enumeration, or null."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="createOwnedPrimitiveType" ordered="false" lowerBound="1" eType="#//PrimitiveType">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Creates a primitive type with the specified name as a packaged element of this component."/>
+ </eAnnotations>
+ <eParameters name="name" ordered="false" lowerBound="1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The name for the new primitive type, or null."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="createOwnedInterface" ordered="false" lowerBound="1" eType="#//Interface">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Creates an interface with the specified name as a packaged element of this component."/>
+ </eAnnotations>
+ <eParameters name="name" ordered="false" lowerBound="1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The name for the new interface, or null."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="realizedInterfaces" ordered="false" upperBound="-1" eType="#//Interface">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Utility returning the set of realized interfaces of a component.&#xD;&#xA;result = (classifier.clientDependency->&#xA;select(dependency|dependency.oclIsKindOf(Realization) and dependency.supplier.oclIsKindOf(Interface)))->&#xA;collect(dependency|dependency.client)"/>
+ </eAnnotations>
+ <eParameters name="classifier" ordered="false" lowerBound="1" eType="#//Classifier"/>
+ </eOperations>
+ <eOperations name="usedInterfaces" ordered="false" upperBound="-1" eType="#//Interface">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Utility returning the set of used interfaces of a component.&#xD;&#xA;result = (classifier.supplierDependency->&#xA;select(dependency|dependency.oclIsKindOf(Usage) and dependency.supplier.oclIsKindOf(interface)))->&#xA;collect(dependency|dependency.supplier)"/>
+ </eAnnotations>
+ <eParameters name="classifier" ordered="false" lowerBound="1" eType="#//Classifier"/>
+ </eOperations>
+ <eOperations name="getRequireds" ordered="false" upperBound="-1" eType="#//Interface">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="result = let usingInterfaces : Set(Interface) = self.implementation->collect(impl|impl.contract),&#xD;&#xA;usedInterfaces : Set(Interface) = UsedInterfaces(self),&#xD;&#xA;realizingClassifiers : Set(Classifier) = Set{self.realizingClassifier}->union(self.allParents().realizingClassifier),&#xD;&#xA;allRealizingClassifiers : Set(Classifier) = realizingClassifiers->union(realizingClassifiers.allParents()),&#xD;&#xA;realizingClassifierInterfaces : Set(Interface) = allRealizingClassifiers->iterate(c; rci : Set(Interface) = Set{} | rci->union(UsedInterfaces(c))),&#xD;&#xA;ports : Set(Port) = self.ownedPort->union(allParents.oclAsType(Set(EncapsulatedClassifier)).ownedPort),&#xD;&#xA;usedByPorts : Set(Interface) = ports.provided in ((usingInterfaces->union(usedInterfaces)->union(realizingClassifierInterfaces))->union(usedByPorts))->asSet()"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getProvideds" ordered="false" upperBound="-1" eType="#//Interface">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="result = let implementedInterfaces : Set(Interface) = self.implementation->collect(impl|impl.contract),&#xD;&#xA;realizedInterfaces : Set(Interface) = RealizedInterfaces(self),&#xD;&#xA;realizingClassifiers : Set(Classifier) = Set{self.realizingClassifier}->union(self.allParents().realizingClassifier),&#xD;&#xA;allRealizingClassifiers : Set(Classifier) = realizingClassifiers->union(realizingClassifiers.allParents()),&#xD;&#xA;realizingClassifierInterfaces : Set(Interface) = allRealizingClassifiers->iterate(c; rci : Set(Interface) = Set{} | rci->union(RealizedInterfaces(c))),&#xD;&#xA;ports : Set(Port) = self.ownedPort->union(allParents.oclAsType(Set(EncapsulatedClassifier)).ownedPort) ,&#xD;&#xA;providedByPorts : Set(Interface) = ports.provided in ((implementedInterfaces->union(realizedInterfaces)->union(realizingClassifierInterfaces))->union(providedByPorts))->asSet()"/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isIndirectlyInstantiated"
+ ordered="false" lowerBound="1" eType="#//Boolean" defaultValueLiteral="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The kind of instantiation that applies to a Component. If false, the component is instantiated as an addressable object. If true, the Component is defined at design-time, but at runtime (or execution-time) an object specified by the Component does not exist, that is, the component is instantiated indirectly, through the instantiation of its realizing classifiers or parts. Several standard stereotypes use this meta attribute, e.g. &lt;&lt;specification>>, &lt;&lt;focus>>, &lt;&lt;subsystem>>."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="required" ordered="false"
+ upperBound="-1" eType="#//Interface" changeable="false" volatile="true" transient="true"
+ derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The interfaces that the component requires from other components in its environment in order to be able to offer its full set of provided functionality. These interfaces may be used by the Component or any of its realizingClassifiers, or they may be the Interfaces that are required by its public Ports."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="provided" ordered="false"
+ upperBound="-1" eType="#//Interface" changeable="false" volatile="true" transient="true"
+ derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The interfaces that the component exposes to its environment. These interfaces may be Realized by the Component or any of its realizingClassifiers, or they may be the Interfaces that are provided by its public Ports."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="packagedElement" ordered="false"
+ upperBound="-1" eType="#//PackageableElement" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The set of PackageableElements that a Component owns. In the namespace of a component, all model elements that are involved in or related to its definition may be owned or imported explicitly. These may include e.g. Classes, Interfaces, Components, Packages, Use cases, Dependencies (e.g. mappings), and Artifacts."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="realization" ordered="false"
+ upperBound="-1" eType="#//ComponentRealization" containment="true" eOpposite="#//ComponentRealization/abstraction">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The set of Realizations owned by the Component. Realizations reference the Classifiers of which the Component is an abstraction; i.e., that realize its behavior."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Node" eSuperTypes="#//Class #//DeploymentTarget">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A node is computational resource upon which artifacts may be deployed for execution.&#xD;&#xA;Nodes can be interconnected through communication paths to define network structures."/>
+ </eAnnotations>
+ <eOperations name="internal_structure" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The internal structure of a Node (if defined) consists solely of parts of type Node.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="createCommunicationPath" ordered="false" lowerBound="1" eType="#//CommunicationPath">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Creates a (binary) communication path between this node and the specified other node, with the specified navigabilities, aggregations, names, lower bounds, and upper bounds, and owned by this node's nearest package."/>
+ </eAnnotations>
+ <eParameters name="end1IsNavigable" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The navigability for the first end of the new communication path."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="end1Aggregation" ordered="false" lowerBound="1" eType="#//AggregationKind">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The aggregation for the first end of the new communication path."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="end1Name" ordered="false" lowerBound="1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The name for the first end of the new communication path."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="end1Lower" ordered="false" lowerBound="1" eType="#//Integer">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The lower bound for the first end of the new communication path."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="end1Upper" ordered="false" lowerBound="1" eType="#//UnlimitedNatural">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The upper bound for the first end of the new communication path."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="end1Node" ordered="false" lowerBound="1" eType="#//Node">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type for the first end of the new communication path."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="end2IsNavigable" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The navigability for the second end of the new communication path."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="end2Aggregation" ordered="false" lowerBound="1" eType="#//AggregationKind">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The aggregation for the second end of the new communication path."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="end2Name" ordered="false" lowerBound="1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The name for the second end of the new communication path."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="end2Lower" ordered="false" lowerBound="1" eType="#//Integer">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The lower bound for the second end of the new communication path."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="end2Upper" ordered="false" lowerBound="1" eType="#//UnlimitedNatural">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The upper bound for the second end of the new communication path."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getCommunicationPaths" ordered="false" upperBound="-1" eType="#//CommunicationPath">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the communication paths in which this node is involved."/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="nestedNode" ordered="false"
+ upperBound="-1" eType="#//Node" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The Nodes that are defined (nested) within the Node."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="CommunicationPath" eSuperTypes="#//Association">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A communication path is an association between two deployment targets, through which they are able to exchange signals and messages."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EOperation" name="association_ends" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The association ends of a CommunicationPath are typed by DeploymentTargets.&#xD;&#xA;result = self.endType->forAll (t | t.oclIsKindOf(DeploymentTarget))"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//Association/association_ends"/>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </contents>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Device" eSuperTypes="#//Node">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A device is a physical computational resource with processing capability upon which artifacts may be deployed for execution. Devices may be complex (i.e., they may consist of other devices)."/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ExecutionEnvironment" eSuperTypes="#//Node">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An execution environment is a node that offers an execution environment for specific types of components that are deployed on it in the form of executable artifacts."/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="CombinedFragment" eSuperTypes="#//InteractionFragment">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A combined fragment defines an expression of interaction fragments. A combined fragment is defined by an interaction operator and corresponding interaction operands. Through the use of combined fragments the user will be able to describe a number of traces in a compact and concise manner."/>
+ </eAnnotations>
+ <eOperations name="opt_loop_break_neg" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If the interactionOperator is opt, loop, break, or neg there must be exactly one operand&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="minint_and_maxint" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The InteractionConstraint with minint and maxint only apply when attached to an InteractionOperand where the interactionOperator is loop.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="break" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If the interactionOperator is break, the corresponding InteractionOperand must cover all Lifelines within the enclosing InteractionFragment.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="consider_and_ignore" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The interaction operators 'consider' and 'ignore' can only be used for the CombineIgnoreFragment subtype of CombinedFragment&#xD;&#xA;((interactionOperator = #consider) or (interactionOperator = #ignore)) implies oclsisTypeOf(CombineIgnoreFragment)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="interactionOperator" ordered="false"
+ lowerBound="1" eType="#//InteractionOperatorKind" defaultValueLiteral="seq">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies the operation which defines the semantics of this combination of InteractionFragments."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="operand" lowerBound="1"
+ upperBound="-1" eType="#//InteractionOperand" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The set of operands of the combined fragment."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="cfragmentGate" ordered="false"
+ upperBound="-1" eType="#//Gate" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies the gates that form the interface between this CombinedFragment and its surroundings"/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="InteractionOperatorKind">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="InteractionOperatorKind is an enumeration designating the different kinds of operators of combined fragments. The interaction operand defines the type of operator of a combined fragment."/>
+ </eAnnotations>
+ <eLiterals name="seq">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The interactionOperator seq designates that the CombinedFragment represents a weak sequencing between the behaviors of the operands."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="alt" value="1">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The interactionOperator alt designates that the CombinedFragment represents a choice of behavior. At most one of the operands will be chosen. The chosen operand must have an explicit or implicit guard expression that evaluates to true at this point in the interaction. An implicit true guard is implied if the operand has no guard."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="opt" value="2">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The interactionOperator opt designates that the CombinedFragment represents a choice of behavior where either the (sole) operand happens or nothing happens. An option is semantically equivalent to an alternative CombinedFragment where there is one operand with non-empty content and the second operand is empty."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="break" value="3">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The interactionOperator break designates that the CombinedFragment represents a breaking scenario in the sense that the operand is a scenario that is performed instead of the remainder of the enclosing InteractionFragment. A break operator with a guard is chosen when the guard is true and the rest of the enclosing Interaction Fragment is ignored. When the guard of the break operand is false, the break operand is ignored and the rest of the enclosing InteractionFragment is chosen. The choice between a break operand without a guard and the rest of the enclosing InteractionFragment is done non-deterministically."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="par" value="4">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The interactionOperator par designates that the CombinedFragment represents a parallel merge between the behaviors of the operands. The OccurrenceSpecifications of the different operands can be interleaved in any way as long as the ordering imposed by each operand as such is preserved."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="strict" value="5">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The interactionOperator strict designates that the CombinedFragment represents a strict sequencing between the behaviors of the operands. The semantics of strict sequencing defines a strict ordering of the operands on the first level within the CombinedFragment with interactionOperator strict. Therefore OccurrenceSpecifications within contained CombinedFragment will not directly be compared with other OccurrenceSpecifications of the enclosing CombinedFragment."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="loop" value="6">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The interactionOperator loop designates that the CombinedFragment represents a loop. The loop operand will be repeated a number of times."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="critical" value="7">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The interactionOperator critical designates that the CombinedFragment represents a critical region. A critical region means that the traces of the region cannot be interleaved by other OccurrenceSpecifications (on those Lifelines covered by the region). This means that the region is treated atomically by the enclosing fragment when determining the set of valid traces. Even though enclosing CombinedFragments may imply that some OccurrenceSpecifications may interleave into the region, such as e.g. with par-operator, this is prevented by defining a region."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="neg" value="8">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The interactionOperator neg designates that the CombinedFragment represents traces that are defined to be invalid."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="assert" value="9">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The interactionOperator assert designates that the CombinedFragment represents an assertion. The sequences of the operand of the assertion are the only valid continuations. All other continuations result in an invalid trace."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="ignore" value="10">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The interacionOperator ignore designates that there are some message types that are not shown within this combined fragment. These message types can be considered insignificant and are implicitly ignored if they appear in a corresponding execution. Alternatively, one can understand ignore to mean that the message types that are ignored can appear anywhere in the traces."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="consider" value="11">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The interactionOperator consider designates which messages should be considered within this combined fragment. This is equivalent to defining every other message to be ignored."/>
+ </eAnnotations>
+ </eLiterals>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Continuation" eSuperTypes="#//InteractionFragment">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A continuation is a syntactic way to define continuations of different branches of an alternative combined fragment. Continuations is intuitively similar to labels representing intermediate points in a flow of control."/>
+ </eAnnotations>
+ <eOperations name="same_name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Continuations with the same name may only cover the same set of Lifelines (within one Classifier).&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="global" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Continuations are always global in the enclosing InteractionFragment e.g. it always covers all Lifelines covered by the enclosing InteractionFragment.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="first_or_last_interaction_fragment" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Continuations always occur as the very first InteractionFragment or the very last InteractionFragment of the enclosing InteractionFragment.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="setting" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="True: when the Continuation is at the end of the enclosing InteractionFragment and False when it is in the beginning."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ConsiderIgnoreFragment" eSuperTypes="#//CombinedFragment">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A consider ignore fragment is a kind of combined fragment that is used for the consider and ignore cases, which require lists of pertinent messages to be specified."/>
+ </eAnnotations>
+ <eOperations name="consider_or_ignore" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The interaction operator of a ConsiderIgnoreFragment must be either 'consider' or 'ignore'.&#xD;&#xA;(interactionOperator = #consider) or (interactionOperator = #ignore)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The NamedElements must be of a type of element that identifies a message (e.g., an Operation, Reception, or a Signal).&#xD;&#xA;message->forAll(m | m.oclIsKindOf(Operation) or m.oclIsKindOf(Reception) or m.oclIsKindOf(Signal))"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="message" ordered="false"
+ upperBound="-1" eType="#//NamedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The set of messages that apply to this fragment"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="CreateObjectAction" eSuperTypes="#//Action">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A create object action is an action that creates an object that conforms to a statically specified classifier and puts it on an output pin at runtime."/>
+ </eAnnotations>
+ <eOperations name="classifier_not_abstract" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The classifier cannot be abstract.&#xD;&#xA;not (self.classifier.isAbstract = #true)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="classifier_not_association_class" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The classifier cannot be an association class&#xD;&#xA;not self.classifier.oclIsKindOf(AssociationClass)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="same_type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type of the result pin must be the same as the classifier of the action.&#xD;&#xA;self.result.type = self.classifier"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The multiplicity of the output pin is 1..1.&#xD;&#xA;self.result.multiplicity.is(1,1)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="classifier" ordered="false"
+ lowerBound="1" eType="#//Classifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Classifier to be instantiated."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="result" ordered="false"
+ lowerBound="1" eType="#//OutputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Gives the output pin on which the result is put."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/output"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="DestroyObjectAction" eSuperTypes="#//Action">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A destroy object action is an action that destroys objects."/>
+ </eAnnotations>
+ <eOperations name="multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The multiplicity of the input pin is 1..1.&#xD;&#xA;self.target.multiplicity.is(1,1)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="no_type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The input pin has no type.&#xD;&#xA;self.target.type->size() = 0"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isDestroyLinks" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies whether links in which the object participates are destroyed along with the object."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isDestroyOwnedObjects"
+ ordered="false" lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies whether objects owned by the object are destroyed along with the object."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="target" ordered="false"
+ lowerBound="1" eType="#//InputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The input pin providing the object to be destroyed."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/input"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="TestIdentityAction" eSuperTypes="#//Action">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A test identity action is an action that tests if two values are identical objects."/>
+ </eAnnotations>
+ <eOperations name="no_type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The input pins have no type.&#xD;&#xA;self.first.type->size() = 0&#xA;and self.second.type->size() = 0&#xA;"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The multiplicity of the input pins is 1..1.&#xD;&#xA;self.first.multiplicity.is(1,1)&#xA;and self.second.multiplicity.is(1,1)&#xA;"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="result_is_boolean" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type of the result is Boolean.&#xD;&#xA;self.result.type.oclIsTypeOf(Boolean)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="first" ordered="false"
+ lowerBound="1" eType="#//InputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Gives the pin on which an object is placed."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/input"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="second" ordered="false"
+ lowerBound="1" eType="#//InputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Gives the pin on which an object is placed."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/input"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="result" ordered="false"
+ lowerBound="1" eType="#//OutputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Tells whether the two input objects are identical."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/output"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ReadSelfAction" eSuperTypes="#//Action">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A read self action is an action that retrieves the host object of an action."/>
+ </eAnnotations>
+ <eOperations name="contained" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The action must be contained in an behavior that has a host classifier.&#xD;&#xA;self.context->size() = 1"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="not_static" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If the action is contained in an behavior that is acting as the body of a method, then the operation of the method must not be static.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type of the result output pin is the host classifier.&#xD;&#xA;self.result.type = self.context"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The multiplicity of the result output pin is 1..1.&#xD;&#xA;self.result.multiplicity.is(1,1)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="result" ordered="false"
+ lowerBound="1" eType="#//OutputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Gives the output pin on which the hosting object is placed."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/output"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="StructuralFeatureAction" abstract="true"
+ eSuperTypes="#//Action">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="StructuralFeatureAction is an abstract class for all structural feature actions."/>
+ </eAnnotations>
+ <eOperations name="not_static" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The structural feature must not be static.&#xD;&#xA;self.structuralFeature.isStatic = #false"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="same_type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type of the object input pin is the same as the classifier of the object passed on this pin.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The multiplicity of the input pin must be 1..1.&#xD;&#xA;self.object.multiplicity.is(1,1)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="visibility" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Visibility of structural feature must allow access to the object performing the action.&#xD;&#xA;let host : Classifier = self.context in&#xA;self.structuralFeature.visibility = #public&#xA;or host = self.structuralFeature.featuringClassifier.type&#xA;or (self.structuralFeature.visibility = #protected and host.allSupertypes&#xA;->includes(self.structuralFeature.featuringClassifier.type)))&#xA;"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="one_featuring_classifier" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A structural feature has exactly one featuringClassifier.&#xD;&#xA;self.structuralFeature.featuringClassifier->size() = 1"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="structuralFeature" ordered="false"
+ lowerBound="1" eType="#//StructuralFeature">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Structural feature to be read."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="object" ordered="false"
+ lowerBound="1" eType="#//InputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Gives the input pin from which the object whose structural feature is to be read or written is obtained.&#xD;&#xA;"/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/input"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ReadStructuralFeatureAction" eSuperTypes="#//StructuralFeatureAction">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A read structural feature action is a structural feature action that retrieves the values of a structural feature."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EOperation" name="multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The multiplicity of the structural feature must be compatible with the multiplicity of the output pin.&#xD;&#xA;self.structuralFeature.multiplicity.compatibleWith(self.result.multiplicity)"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//StructuralFeatureAction/multiplicity"/>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </contents>
+ </eAnnotations>
+ <eOperations name="type_and_ordering" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type and ordering of the result output pin are the same as the type and ordering of the structural feature.&#xD;&#xA;self.result.type = self.structuralFeature.type&#xA;and self.result.ordering = self.structuralFeature.ordering&#xA;"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="result" ordered="false"
+ lowerBound="1" eType="#//OutputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Gives the output pin on which the result is put."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/output"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="WriteStructuralFeatureAction" abstract="true"
+ eSuperTypes="#//StructuralFeatureAction">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="WriteStructuralFeatureAction is an abstract class for structural feature actions that change structural feature values."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EOperation" name="multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The multiplicity of the input pin is 1..1.&#xD;&#xA;self.value.multiplicity.is(1,1)"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//StructuralFeatureAction/multiplicity"/>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </contents>
+ </eAnnotations>
+ <eOperations name="input_pin" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type input pin is the same as the classifier of the structural feature.&#xD;&#xA;self.value.type = self.structuralFeature.featuringClassifier"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="type_of_result" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type of the result output pin is the same as the type of the inherited object input pin.&#xD;&#xA;result->notEmpty() implies self.result.type = self.object.type"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="multiplicity_of_result" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The multiplicity of the result output pin must be 1..1.&#xD;&#xA;result->notEmpty() implies self.result.multiplicity.is(1,1)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="value" ordered="false"
+ lowerBound="1" eType="#//InputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Value to be added or removed from the structural feature."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/input"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="result" ordered="false"
+ eType="#//OutputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Gives the output pin on which the result is put."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/output"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ClearStructuralFeatureAction" eSuperTypes="#//StructuralFeatureAction">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A clear structural feature action is a structural feature action that removes all values of a structural feature."/>
+ </eAnnotations>
+ <eOperations name="type_of_result" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type of the result output pin is the same as the type of the inherited object input pin.&#xD;&#xA;result->notEmpty() implies self.result.type = self.object.type"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="multiplicity_of_result" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The multiplicity of the result output pin must be 1..1.&#xD;&#xA;result->notEmpty() implies self.result.multiplicity.is(1,1)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="result" ordered="false"
+ eType="#//OutputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Gives the output pin on which the result is put."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/output"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="RemoveStructuralFeatureValueAction"
+ eSuperTypes="#//WriteStructuralFeatureAction">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A remove structural feature value action is a write structural feature action that removes values from structural features."/>
+ </eAnnotations>
+ <eOperations name="non_unique_removal" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Actions removing a value from ordered nonunique structural features must have a single removeAt input pin if isRemoveDuplicates is false. It must be of type Unlimited Natural with multiplicity 1..1. Otherwise, the action has no removeAt input pin.&#xD;&#xA;&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isRemoveDuplicates" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies whether to remove duplicates of the value in nonunique structural features."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="removeAt" ordered="false"
+ eType="#//InputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies the position of an existing value to remove in ordered nonunique structural features. The type of the pin is UnlimitedNatural, but the value cannot be zero or unlimited."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/input"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="AddStructuralFeatureValueAction" eSuperTypes="#//WriteStructuralFeatureAction">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An add structural feature value action is a write structural feature action for adding values to a structural feature."/>
+ </eAnnotations>
+ <eOperations name="unlimited_natural_and_multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Actions adding a value to ordered structural features must have a single input pin for the insertion point with type UnlimitedNatural and multiplicity of 1..1, otherwise the action has no input pin for the insertion point.&#xD;&#xA;let insertAtPins : Collection = self.insertAt in&#xA;if self.structuralFeature.isOrdered = #false&#xA;then insertAtPins->size() = 0&#xA;else let insertAtPin : InputPin= insertAt->asSequence()->first() in&#xA;insertAtPins->size() = 1&#xA;and insertAtPin.type = UnlimitedNatural&#xA;and insertAtPin.multiplicity.is(1,1))&#xA;endif&#xA;"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isReplaceAll" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies whether existing values of the structural feature of the object should be removed before adding the new value."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="insertAt" ordered="false"
+ eType="#//InputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Gives the position at which to insert a new value or move an existing value in ordered structural features. The type of the pin is UnlimitedNatural, but the value cannot be zero. This pin is omitted for unordered structural features."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/input"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="LinkAction" abstract="true" eSuperTypes="#//Action">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="LinkAction is an abstract class for all link actions that identify their links by the objects at the ends of the links and by the qualifiers at ends of the links."/>
+ </eAnnotations>
+ <eOperations name="same_association" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The association ends of the link end data must all be from the same association and include all and only the association ends of that association.&#xD;&#xA;self.endData->collect(end) = self.association()->collect(connection))"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="not_static" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The association ends of the link end data must not be static.&#xD;&#xA;self.endData->forall(end.oclisKindOf(NavigableEnd) implies end.isStatic = #false"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="same_pins" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The input pins of the action are the same as the pins of the link end data and insertion pins.&#xD;&#xA;self.input->asSet() =&#xA;let ledpins : Set = self.endData->collect(value) in&#xA;if self.oclIsKindOf(LinkEndCreationData)&#xA;then ledpins->union(self.endData.oclAsType(LinkEndCreationData).insertAt)&#xA;else ledpins&#xA;"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="association" ordered="false" lowerBound="1" eType="#//Association">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The association operates on LinkAction. It returns the association of the action.&#xD;&#xA;result = self.endData->asSequence().first().end.association"/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="endData" ordered="false"
+ lowerBound="2" upperBound="-1" eType="#//LinkEndData" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Data identifying one end of a link by the objects on its ends and qualifiers."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="inputValue" ordered="false"
+ lowerBound="1" upperBound="-1" eType="#//InputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Pins taking end objects and qualifier values as input."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/input"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="LinkEndData" eSuperTypes="#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A link end data is not an action. It is an element that identifies links. It identifies one end of a link to be read or written by the children of a link action. A link cannot be passed as a runtime value to or from an action. Instead, a link is identified by its end objects and qualifier values, if any. This requires more than one piece of data, namely, the statically-specified end in the user model, the object on the end, and the qualifier values for that end, if any. These pieces are brought together around a link end data. Each association end is identified separately with an instance of the LinkEndData class."/>
+ </eAnnotations>
+ <eOperations name="property_is_association_end" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The property must be an association end.&#xD;&#xA;self.end.association->size() = 1"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="same_type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type of the end object input pin is the same as the type of the association end.&#xD;&#xA;self.value.type = self.end.type"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The multiplicity of the end object input pin must be 1..1.&#xD;&#xA;self.value.multiplicity.is(1,1)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="qualifiers" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The qualifiers include all and only the qualifiers of the association end.&#xD;&#xA;self.qualifier->collect(qualifier) = self.end.qualifier"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="end_object_input_pin" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The end object input pin is not also a qualifier value input pin.&#xD;&#xA;self.value->excludesAll(self.qualifier.value)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="value" ordered="false"
+ eType="#//InputPin">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Input pin that provides the specified object for the given end. This pin is omitted if the link-end data specifies an 'open' end for reading."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="end" ordered="false" lowerBound="1"
+ eType="#//Property">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Association end for which this link-end data specifies values."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="qualifier" ordered="false"
+ upperBound="-1" eType="#//QualifierValue" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="List of qualifier values"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="QualifierValue" eSuperTypes="#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A qualifier value is not an action. It is an element that identifies links. It gives a single qualifier within a link end data specification."/>
+ </eAnnotations>
+ <eOperations name="qualifier_attribute" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The qualifier attribute must be a qualifier of the association end of the link-end data.&#xD;&#xA;self.LinkEndData.end->collect(qualifier)->includes(self.qualifier)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="type_of_qualifier" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type of the qualifier value input pin is the same as the type of the qualifier attribute.&#xD;&#xA;self.value.type = self.qualifier.type"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="multiplicity_of_qualifier" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The multiplicity of the qualifier value input pin is &quot;1..1&quot;.&#xD;&#xA;self.value.multiplicity.is(1,1)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="qualifier" ordered="false"
+ lowerBound="1" eType="#//Property">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Attribute representing the qualifier for which the value is to be specified."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="value" ordered="false"
+ lowerBound="1" eType="#//InputPin">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Input pin from which the specified value for the qualifier is taken."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ReadLinkAction" eSuperTypes="#//LinkAction">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A read link action is a link action that navigates across associations to retrieve objects on one end."/>
+ </eAnnotations>
+ <eOperations name="one_open_end" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Exactly one link-end data specification (the 'open' end) must not have an end object input pin.&#xD;&#xA;self.endData->select(ed | ed.value->size() = 0)->size() = 1"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="type_and_ordering" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type and ordering of the result output pin are same as the type and ordering of the open association end.&#xD;&#xA;let openend : AssociationEnd = self.endData->select(ed | ed.value->size() = 0)->asSequence()->first().end in&#xA;self.result.type = openend.type&#xA;and self.result.ordering = openend.ordering&#xA;"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="compatible_multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The multiplicity of the open association end must be compatible with the multiplicity of the result output pin.&#xD;&#xA;let openend : AssociationEnd = self.endData->select(ed | ed.value->size() = 0)->asSequence()->first().end in&#xA;openend.multiplicity.compatibleWith(self.result.multiplicity)&#xA;"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="navigable_open_end" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The open end must be navigable.&#xD;&#xA;let openend : AssociationEnd = self.endData->select(ed | ed.value->size() = 0)->asSequence()->first().end in&#xA;openend.isNavigable()&#xA;"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="visibility" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Visibility of the open end must allow access to the object performing the action.&#xD;&#xA;let host : Classifier = self.context in&#xA;let openend : AssociationEnd = self.endData->select(ed | ed.value->size() = 0)->asSequence()->first().end in&#xA;openend.visibility = #public&#xA;or self.endData->exists(oed | not oed.end = openend&#xA;and (host = oed.end.participant&#xA;or (openend.visibility = #protected&#xA;and host.allSupertypes->includes(oed.end.participant))))&#xA;"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="result" ordered="false"
+ lowerBound="1" eType="#//OutputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The pin on which are put the objects participating in the association at the end not specified by the inputs.&#xD;&#xA;"/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/output"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="LinkEndCreationData" eSuperTypes="#//LinkEndData">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A link end creation data is not an action. It is an element that identifies links. It identifies one end of a link to be created by a create link action."/>
+ </eAnnotations>
+ <eOperations name="create_link_action" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="LinkEndCreationData can only be end data for CreateLinkAction or one of its specializations.&#xD;&#xA;self.LinkAction.oclIsKindOf(CreateLinkAction)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="single_input_pin" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Link end creation data for ordered association ends must have a single input pin for the insertion point with type UnlimitedNatural and multiplicity of 1..1, otherwise the action has no input pin for the insertion point.&#xD;&#xA;let insertAtPins : Collection = self.insertAt in&#xA;if self.end.ordering = #unordered&#xA;then insertAtPins->size() = 0&#xA;else let insertAtPin : InputPin = insertAts->asSequence()->first() in&#xA;insertAtPins->size() = 1&#xA;and insertAtPin.type = UnlimitedNatural&#xA;and insertAtPin.multiplicity.is(1,1))&#xA;endif&#xA;"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isReplaceAll" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies whether the existing links emanating from the object on this end should be destroyed before creating a new link."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="insertAt" ordered="false"
+ eType="#//InputPin">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies where the new link should be inserted for ordered association ends, or where an existing link should be moved to. The type of the input is UnlimitedNatural, but the input cannot be zero. This pin is omitted for association ends that are not ordered."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="CreateLinkAction" eSuperTypes="#//WriteLinkAction">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A create link action is a write link action for creating links."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EReference" name="endData" ordered="false" lowerBound="2"
+ upperBound="-1" eType="#//LinkEndCreationData" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies ends of association and inputs."/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//LinkAction/endData"/>
+ </contents>
+ </eAnnotations>
+ <eOperations name="association_not_abstract" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The association cannot be an abstract classifier.&#xD;&#xA;self.association().isAbstract = #false"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="WriteLinkAction" abstract="true" eSuperTypes="#//LinkAction">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="WriteLinkAction is an abstract class for link actions that create and destroy links."/>
+ </eAnnotations>
+ <eOperations name="allow_access" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The visibility of at least one end must allow access to the class using the action.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="DestroyLinkAction" eSuperTypes="#//WriteLinkAction">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A destroy link action is a write link action that destroys links and link objects."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EReference" name="endData" ordered="false" lowerBound="2"
+ upperBound="-1" eType="#//LinkEndDestructionData" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies ends of association and inputs."/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//LinkAction/endData"/>
+ </contents>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="LinkEndDestructionData" eSuperTypes="#//LinkEndData">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A link end destruction data is not an action. It is an element that identifies links. It identifies one end of a link to be destroyed by destroy link action."/>
+ </eAnnotations>
+ <eOperations name="destroy_link_action" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="LinkEndDestructionData can only be end data for DestroyLinkAction or one of its specializations.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="unlimited_natural_and_multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="LinkEndDestructionData for ordered nonunique association ends must have a single destroyAt input pin if isDestroyDuplicates is false. It must be of type UnlimitedNatural and have a multiplicity of 1..1. Otherwise, the action has no input pin for the removal position.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isDestroyDuplicates" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies whether to destroy duplicates of the value in nonunique association ends."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="destroyAt" ordered="false"
+ eType="#//InputPin">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies the position of an existing link to be destroyed in ordered nonunique association ends. The type of the pin is UnlimitedNatural, but the value cannot be zero or unlimited."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ClearAssociationAction" eSuperTypes="#//Action">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A clear association action is an action that destroys all links of an association in which a particular object participates."/>
+ </eAnnotations>
+ <eOperations name="same_type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type of the input pin must be the same as the type of at least one of the association ends of the association.&#xD;&#xA;self.association->exists(end.type = self.object.type)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The multiplicity of the input pin is 1..1.&#xD;&#xA;self.object.multiplicity.is(1,1)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="object" ordered="false"
+ lowerBound="1" eType="#//InputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Gives the input pin from which is obtained the object whose participation in the association is to be cleared."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/input"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="association" ordered="false"
+ lowerBound="1" eType="#//Association">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Association to be cleared."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="BroadcastSignalAction" eSuperTypes="#//InvocationAction">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A broadcast signal action is an action that transmits a signal instance to all the potential target objects in the system, which may cause the firing of a state machine transitions or the execution of associated activities of a target object. The argument values are available to the execution of associated behaviors. The requestor continues execution immediately after the signals are sent out. It does not wait for receipt. Any reply messages are ignored and are not transmitted to the requestor."/>
+ </eAnnotations>
+ <eOperations name="number_and_order" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The number and order of argument pins must be the same as the number and order of attributes in the signal.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="type_ordering_multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type, ordering, and multiplicity of an argument pin must be the same as the corresponding attribute of the signal.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="signal" ordered="false"
+ lowerBound="1" eType="#//Signal">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The specification of signal object transmitted to the target objects."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="SendObjectAction" eSuperTypes="#//InvocationAction">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A send object action is an action that transmits an object to the target object, where it may invoke behavior such as the firing of state machine transitions or the execution of an activity. The value of the object is available to the execution of invoked behaviors. The requestor continues execution immediately. Any reply message is ignored and is not transmitted to the requestor."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="target" ordered="false"
+ lowerBound="1" eType="#//InputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The target object to which the object is sent."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/input"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="request" ordered="false"
+ lowerBound="1" eType="#//InputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The request object, which is transmitted to the target object. The object may be copied in transmission, so identity might not be preserved."/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//InvocationAction/argument"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ValueSpecificationAction" eSuperTypes="#//Action">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A value specification action is an action that evaluates a value specification."/>
+ </eAnnotations>
+ <eOperations name="compatible_type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type of value specification must be compatible with the type of the result pin.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The multiplicity of the result pin is 1..1&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="value" ordered="false"
+ lowerBound="1" eType="#//ValueSpecification" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Value specification to be evaluated."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="result" ordered="false"
+ lowerBound="1" eType="#//OutputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Gives the output pin on which the result is put."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/output"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="TimeExpression" eSuperTypes="#//ValueSpecification">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A time expression defines a value specification that represents a time value."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EOperation" name="stringValue" ordered="false" lowerBound="1"
+ eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="suppressedVisibility" value="true"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//ValueSpecification/stringValue"/>
+ </contents>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="expr" ordered="false" eType="#//ValueSpecification"
+ containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The value of the time expression."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="observation" ordered="false"
+ upperBound="-1" eType="#//Observation">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Refers to the time and duration observations that are involved in expr."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Observation" abstract="true" eSuperTypes="#//PackageableElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Observation is a superclass of TimeObservation and DurationObservation in order for TimeExpression and Duration to refer to either in a simple way."/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Duration" eSuperTypes="#//ValueSpecification">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Duration defines a value specification that specifies the temporal distance between two time instants."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EOperation" name="stringValue" ordered="false" lowerBound="1"
+ eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="suppressedVisibility" value="true"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//ValueSpecification/stringValue"/>
+ </contents>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="expr" ordered="false" eType="#//ValueSpecification"
+ containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The value of the Duration."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="observation" ordered="false"
+ upperBound="-1" eType="#//Observation">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Refers to the time and duration observations that are involved in expr."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="DurationInterval" eSuperTypes="#//Interval">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A duration interval defines the range between two durations."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EReference" name="min" ordered="false" lowerBound="1"
+ eType="#//ValueSpecification">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Refers to the Duration denoting the minimum value of the range."/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//Interval/min"/>
+ </contents>
+ <contents xsi:type="ecore:EReference" name="max" ordered="false" lowerBound="1"
+ eType="#//ValueSpecification">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Refers to the Duration denoting the maximum value of the range."/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//Interval/max"/>
+ </contents>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Interval" eSuperTypes="#//ValueSpecification">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An interval defines the range between two value specifications."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="min" ordered="false" lowerBound="1"
+ eType="#//ValueSpecification">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Refers to the ValueSpecification denoting the minimum value of the range."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="max" ordered="false" lowerBound="1"
+ eType="#//ValueSpecification">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Refers to the ValueSpecification denoting the maximum value of the range."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="TimeConstraint" eSuperTypes="#//IntervalConstraint">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A time constraint is a constraint that refers to a time interval."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EReference" name="specification" ordered="false" lowerBound="1"
+ eType="#//ValueSpecification" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A condition that must be true when evaluated in order for the constraint to be satisfied."/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//IntervalConstraint/%duplicates%/specification #//Constraint/specification"/>
+ </contents>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="firstEvent" ordered="false"
+ eType="#//Boolean" defaultValueLiteral="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The value of firstEvent is related to constrainedElement. If firstEvent is true, then the corresponding observation event is the first time instant the execution enters constrainedElement. If firstEvent is false, then the corresponding observation event is the last time instant the execution is within constrainedElement."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="IntervalConstraint" eSuperTypes="#//Constraint">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An interval constraint is a constraint that refers to an interval."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EReference" name="specification" ordered="false" lowerBound="1"
+ eType="#//ValueSpecification" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A condition that must be true when evaluated in order for the constraint to be satisfied."/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//Constraint/specification"/>
+ </contents>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="TimeInterval" eSuperTypes="#//Interval">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A time interval defines the range between two time expressions."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EReference" name="max" ordered="false" lowerBound="1"
+ eType="#//ValueSpecification">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Refers to the TimeExpression denoting the maximum value of the range."/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//Interval/max"/>
+ </contents>
+ <contents xsi:type="ecore:EReference" name="min" ordered="false" lowerBound="1"
+ eType="#//ValueSpecification">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Refers to the TimeExpression denoting the minimum value of the range."/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//Interval/min"/>
+ </contents>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="DurationConstraint" eSuperTypes="#//IntervalConstraint">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A duration constraint is a constraint that refers to a duration interval."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EReference" name="specification" ordered="false" lowerBound="1"
+ eType="#//ValueSpecification" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The interval constraining the duration."/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//IntervalConstraint/%duplicates%/specification #//Constraint/specification"/>
+ </contents>
+ </eAnnotations>
+ <eOperations name="first_event_multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The multiplicity of firstEvent must be 2 if the multiplicity of constrainedElement is 2. Otherwise the multiplicity of firstEvent is 0.&#xD;&#xA;if (constrainedElement->size() =2)&#xD;&#xA; then (firstEvent->size() = 2) else (firstEvent->size() = 0)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="firstEvent" ordered="false"
+ upperBound="2" eType="#//Boolean" defaultValueLiteral="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The value of firstEvent[i] is related to constrainedElement[i] (where i is 1 or 2). If firstEvent[i] is true, then the corresponding observation event is the first time instant the execution enters constrainedElement[i]. If firstEvent[i] is false, then the corresponding observation event is the last time instant the execution is within constrainedElement[i]. Default value is true applied when constrainedElement[i] refers an element that represents only one time instant."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="TimeObservation" eSuperTypes="#//Observation">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A time observation is a reference to a time instant during an execution. It points out the element in the model to observe and whether the observation is when this model element is entered or when it is exited."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="event" ordered="false"
+ lowerBound="1" eType="#//NamedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The observation is determined by the entering or exiting of the event element during execution."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="firstEvent" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The value of firstEvent is related to event. If firstEvent is true, then the corresponding observation event is the first time instant the execution enters event. If firstEvent is false, then the corresponding observation event is the time instant the execution exits event."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="DurationObservation" eSuperTypes="#//Observation">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A duration observation is a reference to a duration during an execution. It points out the element(s) in the model to observe and whether the observations are when this model element is entered or when it is exited."/>
+ </eAnnotations>
+ <eOperations name="first_event_multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The multiplicity of firstEvent must be 2 if the multiplicity of event is 2. Otherwise the multiplicity of firstEvent is 0.&#xD;&#xA;if (event->size() = 2)&#xD;&#xA; then (firstEvent->size() = 2) else (firstEvent->size() = 0)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="event" ordered="false"
+ lowerBound="1" upperBound="2" eType="#//NamedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The observation is determined by the entering or exiting of the event element during execution."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="firstEvent" ordered="false"
+ upperBound="2" eType="#//Boolean" defaultValueLiteral="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The value of firstEvent[i] is related to event[i] (where i is 1 or 2). If firstEvent[i] is true, then the corresponding observation event is the first time instant the execution enters event[i]. If firstEvent[i] is false, then the corresponding observation event is the time instant the execution exits event[i]. Default value is true applied when event[i] refers an element that represents only one time instant."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="FinalState" eSuperTypes="#//State">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A special kind of state signifying that the enclosing region is completed. If the enclosing region is directly contained in a state machine and all other regions in the state machine also are completed, then it means that the entire state machine is completed."/>
+ </eAnnotations>
+ <eOperations name="no_outgoing_transitions" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A final state cannot have any outgoing transitions.&#xD;&#xA;self.outgoing->size() = 0"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="no_regions" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A final state cannot have regions.&#xD;&#xA;self.region->size() = 0"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="cannot_reference_submachine" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A final state cannot reference a submachine.&#xD;&#xA;self.submachine->isEmpty()"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="no_entry_behavior" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A final state has no entry behavior.&#xD;&#xA;self.entry->isEmpty()"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="no_exit_behavior" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A final state has no exit behavior.&#xD;&#xA;self.exit->isEmpty()"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="no_state_behavior" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A final state has no state (doActivity) behavior.&#xD;&#xA;self.doActivity->isEmpty()"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="TimeEvent" eSuperTypes="#//Event">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A time event specifies a point in time. At the specified time, the event occurs.&#xD;&#xA;A time event can be defined relative to entering the current state of the executing state machine."/>
+ </eAnnotations>
+ <eOperations name="when_non_negative" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The ValueSpecification when must return a non-negative Integer.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="starting_time" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The starting time for a relative time event may only be omitted for a time event that is the trigger of a state machine.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isRelative" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies whether it is relative or absolute time."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="when" ordered="false" lowerBound="1"
+ eType="#//TimeExpression" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies the corresponding time deadline."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="VariableAction" abstract="true" eSuperTypes="#//Action">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="VariableAction is an abstract class for actions that operate on a statically specified variable."/>
+ </eAnnotations>
+ <eOperations name="scope_of_variable" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The action must be in the scope of the variable.&#xD;&#xA;self.variable.isAccessibleBy(self)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="variable" ordered="false"
+ lowerBound="1" eType="#//Variable">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Variable to be read."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ReadVariableAction" eSuperTypes="#//VariableAction">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A read variable action is a variable action that retrieves the values of a variable."/>
+ </eAnnotations>
+ <eOperations name="type_and_ordering" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type and ordering of the result output pin of a read-variable action are the same as the type and ordering of the variable.&#xD;&#xA;self.result.type =self.variable.type&#xA;and self.result.ordering = self.variable.ordering&#xA;"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="compatible_multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The multiplicity of the variable must be compatible with the multiplicity of the output pin.&#xD;&#xA;self.variable.multiplicity.compatibleWith(self.result.multiplicity)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="result" ordered="false"
+ lowerBound="1" eType="#//OutputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Gives the output pin on which the result is put."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/output"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="WriteVariableAction" abstract="true"
+ eSuperTypes="#//VariableAction">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="WriteVariableAction is an abstract class for variable actions that change variable values."/>
+ </eAnnotations>
+ <eOperations name="same_type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type input pin is the same as the type of the variable.&#xD;&#xA;self.value.type = self.variable.type"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The multiplicity of the input pin is 1..1.&#xD;&#xA;self.value.multiplicity.is(1,1)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="value" ordered="false"
+ lowerBound="1" eType="#//InputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Value to be added or removed from the variable."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/input"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ClearVariableAction" eSuperTypes="#//VariableAction">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A clear variable action is a variable action that removes all values of a variable."/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="AddVariableValueAction" eSuperTypes="#//WriteVariableAction">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An add variable value action is a write variable action for adding values to a variable."/>
+ </eAnnotations>
+ <eOperations name="single_input_pin" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Actions adding values to ordered variables must have a single input pin for the insertion point with type UnlimtedNatural and multiplicity of 1..1, otherwise the action has no input pin for the insertion point.&#xD;&#xA;let insertAtPins : Collection = self.insertAt in&#xA;if self.variable.ordering = #unordered&#xA;then insertAtPins->size() = 0&#xA;else let insertAtPin : InputPin = insertAt->asSequence()->first() in&#xA;insertAtPins->size() = 1&#xA;and insertAtPin.type = UnlimitedNatural&#xA;and insertAtPin.multiplicity.is(1,1))&#xA;endif&#xA;"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isReplaceAll" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies whether existing values of the variable should be removed before adding the new value."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="insertAt" ordered="false"
+ eType="#//InputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Gives the position at which to insert a new value or move an existing value in ordered variables. The types is UnlimitedINatural, but the value cannot be zero. This pin is omitted for unordered variables."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/input"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="RemoveVariableValueAction" eSuperTypes="#//WriteVariableAction">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A remove variable value action is a write variable action that removes values from variables."/>
+ </eAnnotations>
+ <eOperations name="unlimited_natural" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Actions removing a value from ordered nonunique variables must have a single removeAt input pin if isRemoveDuplicates is false. It must be of type UnlimitedNatural with multiplicity of 1..1, otherwise the action has no removeAt input pin.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isRemoveDuplicates" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies whether to remove duplicates of the value in nonunique variables."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="removeAt" ordered="false"
+ eType="#//InputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies the position of an existing value to remove in ordered nonunique variables. The type of the pin is UnlimitedNatural, but the value cannot be zero or unlimited."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/input"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="RaiseExceptionAction" eSuperTypes="#//Action">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A raise exception action is an action that causes an exception to occur. The input value becomes the exception object."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="exception" ordered="false"
+ lowerBound="1" eType="#//InputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An input pin whose value becomes an exception object."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/input"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ActionInputPin" eSuperTypes="#//InputPin">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An action input pin is a kind of pin that executes an action to determine the values to input to another."/>
+ </eAnnotations>
+ <eOperations name="one_output_pin" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The fromAction of an action input pin must have exactly one output pin.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="input_pin" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The fromAction of an action input pin must only have action input pins as input pins.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="no_control_or_data_flow" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The fromAction of an action input pin cannot have control or data flows coming into or out of it or its pins.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="fromAction" ordered="false"
+ lowerBound="1" eType="#//Action" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The action used to provide values."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="InformationItem" eSuperTypes="#//Classifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An information item is an abstraction of all kinds of information that can be exchanged between objects. It is a kind of classifier intended for representing information in a very abstract way, one which cannot be instantiated."/>
+ </eAnnotations>
+ <eOperations name="sources_and_targets" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The sources and targets of an information item (its related information flows) must designate subsets of the sources and targets of the representation information item, if any.The Classifiers that can realize an information item can only be of the following kind: Class, Interface, InformationItem, Signal, Component.&#xD;&#xA;(self.represented->select(p | p->oclIsKindOf(InformationItem))->forAll(p |&#xD;&#xA; p.informationFlow.source->forAll(q | self.informationFlow.source->include(q)) and&#xD;&#xA; p.informationFlow.target->forAll(q | self.informationFlow.target->include(q)))) and&#xD;&#xA; (self.represented->forAll(p | p->oclIsKindOf(Class) or oclIsKindOf(Interface) or&#xD;&#xA; oclIsKindOf(InformationItem) or oclIsKindOf(Signal) or oclIsKindOf(Component)))"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="has_no" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An informationItem has no feature, no generalization, and no associations.&#xD;&#xA;self.generalization->isEmpty() and self.feature->isEmpty()"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="not_instantiable" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="It is not instantiable.&#xD;&#xA;isAbstract"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="represented" ordered="false"
+ upperBound="-1" eType="#//Classifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Determines the classifiers that will specify the structure and nature of the information. An information item represents all its represented classifiers."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="InformationFlow" eSuperTypes="#//PackageableElement #//DirectedRelationship">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An information flow specifies that one or more information items circulates from its sources to its targets. Information flows require some kind of information channel for transmitting information items from the source to the destination. An information channel is represented in various ways depending on the nature of its sources and targets. It may be represented by connectors, links, associations, or even dependencies. For example, if the source and destination are parts in some composite structure such as a collaboration, then the information channel is likely to be represented by a connector between them. Or, if the source and target are objects (which are a kind of instance specification), they may be represented by a link that joins the two, and so on."/>
+ </eAnnotations>
+ <eOperations name="sources_and_targets_kind" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The sources and targets of the information flow can only be one of the following kind: Actor, Node, UseCase, Artifact, Class, Component, Port, Property, Interface, Package, ActivityNode, ActivityPartition and InstanceSpecification except when its classifier is a relationship (i.e. it represents a link).&#xD;&#xA;(self.source->forAll(p | p->oclIsKindOf(Actor) or oclIsKindOf(Node) or&#xD;&#xA; oclIsKindOf(UseCase) or oclIsKindOf(Artifact) or oclIsKindOf(Class) or&#xD;&#xA; oclIsKindOf(Component) or oclIsKindOf(Port) or oclIsKindOf(Property) or&#xD;&#xA; oclIsKindOf(Interface) or oclIsKindOf(Package) or oclIsKindOf(ActivityNode) or&#xD;&#xA; oclIsKindOf(ActivityPartition) or oclIsKindOf(InstanceSpecification))) and&#xD;&#xA; (self.target->forAll(p | p->oclIsKindOf(Actor) or oclIsKindOf(Node) or&#xD;&#xA; oclIsKindOf(UseCase) or oclIsKindOf(Artifact) or oclIsKindOf(Class) or&#xD;&#xA; oclIsKindOf(Component) or oclIsKindOf(Port) or oclIsKindOf(Property) or&#xD;&#xA; oclIsKindOf(Interface) or oclIsKindOf(Package) or oclIsKindOf(ActivityNode) or&#xD;&#xA; oclIsKindOf(ActivityPartition) or oclIsKindOf(InstanceSpecification)))"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="must_conform" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The sources and targets of the information flow must conform with the sources and targets or conversely the targets and sources of the realization relationships.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="convey_classifiers" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An information flow can only convey classifiers that are allowed to represent an information item.&#xD;&#xA;&#xD;&#xA;self.conveyed.represented->forAll(p | p->oclIsKindOf(Class) or oclIsKindOf(Interface)&#xD;&#xA; or oclIsKindOf(InformationItem) or oclIsKindOf(Signal) or oclIsKindOf(Component))"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="realization" ordered="false"
+ upperBound="-1" eType="#//Relationship">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Determines which Relationship will realize the specified flow"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="conveyed" ordered="false"
+ lowerBound="1" upperBound="-1" eType="#//Classifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies the information items that may circulate on this information flow."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="informationSource" ordered="false"
+ lowerBound="1" upperBound="-1" eType="#//NamedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Defines from which source the conveyed InformationItems are initiated."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//DirectedRelationship/source"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="informationTarget" ordered="false"
+ lowerBound="1" upperBound="-1" eType="#//NamedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Defines to which target the conveyed InformationItems are directed."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//DirectedRelationship/target"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="realizingActivityEdge"
+ ordered="false" upperBound="-1" eType="#//ActivityEdge">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Determines which ActivityEdges will realize the specified flow."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="realizingConnector" ordered="false"
+ upperBound="-1" eType="#//Connector">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Determines which Connectors will realize the specified flow."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="realizingMessage" ordered="false"
+ upperBound="-1" eType="#//Message">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Determines which Messages will realize the specified flow."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ReadExtentAction" eSuperTypes="#//Action">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A read extent action is an action that retrieves the current instances of a classifier."/>
+ </eAnnotations>
+ <eOperations name="type_is_classifier" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type of the result output pin is the classifier.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="multiplicity_of_result" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The multiplicity of the result output pin is 0..*.&#xD;&#xA;self.result.multiplicity.is(0,#null)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="result" ordered="false"
+ lowerBound="1" eType="#//OutputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The runtime instances of the classifier."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/output"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="classifier" ordered="false"
+ lowerBound="1" eType="#//Classifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The classifier whose instances are to be retrieved."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ReclassifyObjectAction" eSuperTypes="#//Action">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A reclassify object action is an action that changes which classifiers classify an object."/>
+ </eAnnotations>
+ <eOperations name="classifier_not_abstract" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="None of the new classifiers may be abstract.&#xD;&#xA;not self.newClassifier->exists(isAbstract = true)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The multiplicity of the input pin is 1..1.&#xD;&#xA;self.argument.multiplicity.is(1,1)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="input_pin" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The input pin has no type.&#xD;&#xA;self.argument.type->size() = 0"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isReplaceAll" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies whether existing classifiers should be removed before adding the new classifiers."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="oldClassifier" ordered="false"
+ upperBound="-1" eType="#//Classifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A set of classifiers to be removed from the classifiers of the object."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="newClassifier" ordered="false"
+ upperBound="-1" eType="#//Classifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A set of classifiers to be added to the classifiers of the object."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="object" ordered="false"
+ lowerBound="1" eType="#//InputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Holds the object to be reclassified."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/input"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ReadIsClassifiedObjectAction" eSuperTypes="#//Action">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A read is classified object action is an action that determines whether a runtime object is classified by a given classifier."/>
+ </eAnnotations>
+ <eOperations name="multiplicity_of_input" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The multiplicity of the input pin is 1..1.&#xD;&#xA;self.object.multiplicity.is(1,1)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="no_type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The input pin has no type.&#xD;&#xA;self.object.type->isEmpty()"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="multiplicity_of_output" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The multiplicity of the output pin is 1..1.&#xD;&#xA;self.result.multiplicity.is(1,1)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="boolean_result" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type of the output pin is Boolean&#xD;&#xA;self.result.type = Boolean"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isDirect" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Indicates whether the classifier must directly classify the input object."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="classifier" ordered="false"
+ lowerBound="1" eType="#//Classifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The classifier against which the classification of the input object is tested."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="result" ordered="false"
+ lowerBound="1" eType="#//OutputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="After termination of the action, will hold the result of the test."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/output"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="object" ordered="false"
+ lowerBound="1" eType="#//InputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Holds the object whose classification is to be tested."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/input"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="StartClassifierBehaviorAction" eSuperTypes="#//Action">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A start classifier behavior action is an action that starts the classifier behavior of the input."/>
+ </eAnnotations>
+ <eOperations name="multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The multiplicity of the input pin is 1..1&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="type_has_classifier" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If the input pin has a type, then the type must have a classifier behavior.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="object" ordered="false"
+ lowerBound="1" eType="#//InputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Holds the object on which to start the owned behavior."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/input"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ReadLinkObjectEndAction" eSuperTypes="#//Action">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A read link object end action is an action that retrieves an end object from a link object."/>
+ </eAnnotations>
+ <eOperations name="property" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The property must be an association end.&#xD;&#xA;self.end.association.notEmpty()"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="association_of_association" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The association of the association end must be an association class.&#xD;&#xA;self.end.Association.oclIsKindOf(AssociationClass)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="ends_of_association" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The ends of the association must not be static.&#xD;&#xA;self.end.association.memberEnd->forall(e | not e.isStatic)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="type_of_object" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type of the object input pin is the association class that owns the association end.&#xD;&#xA;self.object.type = self.end.association"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="multiplicity_of_object" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The multiplicity of the object input pin is 1..1.&#xD;&#xA;self.object.multiplicity.is(1,1)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="type_of_result" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type of the result output pin is the same as the type of the association end.&#xD;&#xA;self.result.type = self.end.type"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="multiplicity_of_result" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The multiplicity of the result output pin is 1..1.&#xD;&#xA;self.result.multiplicity.is(1,1)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="object" ordered="false"
+ lowerBound="1" eType="#//InputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Gives the input pin from which the link object is obtained."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/input"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="end" ordered="false" lowerBound="1"
+ eType="#//Property">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Link end to be read."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="result" ordered="false"
+ lowerBound="1" eType="#//OutputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Pin where the result value is placed."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/output"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ReadLinkObjectEndQualifierAction" eSuperTypes="#//Action">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A read link object end qualifier action is an action that retrieves a qualifier end value from a link object."/>
+ </eAnnotations>
+ <eOperations name="qualifier_attribute" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The qualifier attribute must be a qualifier attribute of an association end.&#xD;&#xA;self.qualifier.associationEnd->size() = 1"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="association_of_association" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The association of the association end of the qualifier attribute must be an association class.&#xD;&#xA;self.qualifier.associationEnd.association.oclIsKindOf(AssociationClass)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="ends_of_association" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The ends of the association must not be static.&#xD;&#xA;self.qualifier.associationEnd.association.memberEnd->forall(e | not e.isStatic)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="type_of_object" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type of the object input pin is the association class that owns the association end that has the given qualifier attribute.&#xD;&#xA;self.object.type = self.qualifier.associationEnd.association"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="multiplicity_of_qualifier" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The multiplicity of the qualifier attribute is 1..1.&#xD;&#xA;self.qualifier.multiplicity.is(1,1)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="multiplicity_of_object" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The multiplicity of the object input pin is 1..1.&#xD;&#xA;self.object.multiplicity.is(1,1)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="same_type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type of the result output pin is the same as the type of the qualifier attribute.&#xD;&#xA;self.result.type = self.qualifier.type"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="multiplicity_of_result" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The multiplicity of the result output pin is 1..1.&#xD;&#xA;self.result.multiplicity.is(1,1)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="object" ordered="false"
+ lowerBound="1" eType="#//InputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Gives the input pin from which the link object is obtained."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/input"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="result" ordered="false"
+ lowerBound="1" eType="#//OutputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Pin where the result value is placed."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/output"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="qualifier" ordered="false"
+ lowerBound="1" eType="#//Property">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The attribute representing the qualifier to be read."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="CreateLinkObjectAction" eSuperTypes="#//CreateLinkAction">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A create link object action creates a link object."/>
+ </eAnnotations>
+ <eOperations name="association_class" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The association must be an association class.&#xD;&#xA;self.association().oclIsKindOf(Class)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="type_of_result" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type of the result pin must be the same as the association of the action.&#xD;&#xA;self.result.type = self.association()"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The multiplicity of the output pin is 1..1.&#xD;&#xA;self.result.multiplicity.is(1,1)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="result" ordered="false"
+ lowerBound="1" eType="#//OutputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Gives the output pin on which the result is put."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/output"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="AcceptEventAction" eSuperTypes="#//Action">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A accept event action is an action that waits for the occurrence of an event meeting specified conditions."/>
+ </eAnnotations>
+ <eOperations name="no_input_pins" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="AcceptEventActions may have no input pins.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="no_output_pins" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="There are no output pins if the trigger events are only ChangeEvents, or if they are only CallEvents when this action is an instance of AcceptEventAction and not an instance of a descendant of AcceptEventAction (such as AcceptCallAction).&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="trigger_events" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If the trigger events are all TimeEvents, there is exactly one output pin.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="unmarshall_signal_events" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If isUnmarshall is true, there must be exactly one trigger for events of type SignalEvent. The number of result output pins must be the same as the number of attributes of the signal. The type and ordering of each result output pin must be the same as the corresponding attribute of the signal. The multiplicity of each result output pin must be compatible with the multiplicity of the corresponding attribute.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isUnmarshall" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Indicates whether there is a single output pin for the event, or multiple output pins for attributes of the event."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="result" ordered="false"
+ upperBound="-1" eType="#//OutputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Pins holding the received event objects or their attributes. Event objects may be copied in transmission, so identity might not be preserved."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/output"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="trigger" ordered="false"
+ lowerBound="1" upperBound="-1" eType="#//Trigger" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type of events accepted by the action, as specified by triggers. For triggers with signal events, a signal of the specified type or any subtype of the specified signal type is accepted."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="AcceptCallAction" eSuperTypes="#//AcceptEventAction">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An accept call action is an accept event action representing the receipt of a synchronous call request. In addition to the normal operation parameters, the action produces an output that is needed later to supply the information to the reply action necessary to return control to the caller. This action is for synchronous calls. If it is used to handle an asynchronous call, execution of the subsequent reply action will complete immediately with no effects."/>
+ </eAnnotations>
+ <eOperations name="result_pins" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The result pins must match the in and inout parameters of the operation specified by the trigger event in number, type, and order.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="trigger_call_event" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The trigger event must be a CallEvent.&#xD;&#xA;trigger.event.oclIsKindOf(CallEvent)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="unmarshall" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="isUnmrashall must be true for an AcceptCallAction.&#xD;&#xA;isUnmarshall = true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="returnInformation" ordered="false"
+ lowerBound="1" eType="#//OutputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Pin where a value is placed containing sufficient information to perform a subsequent reply and return control to the caller. The contents of this value are opaque. It can be passed and copied but it cannot be manipulated by the model."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/output"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ReplyAction" eSuperTypes="#//Action">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A reply action is an action that accepts a set of return values and a value containing return information produced by a previous accept call action. The reply action returns the values to the caller of the previous call, completing execution of the call."/>
+ </eAnnotations>
+ <eOperations name="pins_match_parameter" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The reply value pins must match the return, out, and inout parameters of the operation on the event on the trigger in number, type, and order.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="event_on_reply_to_call_trigger" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The event on replyToCall trigger must be a CallEvent replyToCallEvent.oclIsKindOf(CallEvent)&#xD;&#xA;replyToCallEvent.oclIsKindOf(CallEvent)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="replyToCall" ordered="false"
+ lowerBound="1" eType="#//Trigger">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The trigger specifying the operation whose call is being replied to."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="returnInformation" ordered="false"
+ lowerBound="1" eType="#//InputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A pin containing the return information value produced by an earlier AcceptCallAction."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/input"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="replyValue" ordered="false"
+ upperBound="-1" eType="#//InputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A list of pins containing the reply values of the operation. These values are returned to the caller."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/input"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="UnmarshallAction" eSuperTypes="#//Action">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An unmarshall action is an action that breaks an object of a known type into outputs each of which is equal to a value from a structural feature of the object."/>
+ </eAnnotations>
+ <eOperations name="same_type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type of the object input pin must be the same as the unmarshall classifier.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="multiplicity_of_object" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The multiplicity of the object input pin is 1..1&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="number_of_result" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The number of result output pins must be the same as the number of structural features of the unmarshall classifier.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="type_and_ordering" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type and ordering of each result output pin must be the same as the corresponding structural feature of the unmarshall classifier.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="multiplicity_of_result" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The multiplicity of each result output pin must be compatible with the multiplicity of the corresponding structural features of the unmarshall classifier.&#xD;&#xA;&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="structural_feature" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The unmarshall classifier must have at least one structural feature.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="unmarshallType_is_classifier" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="unmarshallType must be a Classifier with ordered attributes&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="result" ordered="false"
+ lowerBound="1" upperBound="-1" eType="#//OutputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The values of the structural features of the input object."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/output"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="unmarshallType" ordered="false"
+ lowerBound="1" eType="#//Classifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type of the object to be unmarshalled."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="object" ordered="false"
+ lowerBound="1" eType="#//InputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The object to be unmarshalled."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/input"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ReduceAction" eSuperTypes="#//Action">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A reduce action is an action that reduces a collection to a single value by combining the elements of the collection."/>
+ </eAnnotations>
+ <eOperations name="input_type_is_collection" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type of the input must be a collection.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="output_types_are_compatible" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type of the output must be compatible with the type of the output of the reducer behavior.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="reducer_inputs_output" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The reducer behavior must have two input parameters and one output parameter, of types compatible with the types of elements of the input collection.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="reducer" ordered="false"
+ lowerBound="1" eType="#//Behavior">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Behavior that is applied to two elements of the input collection to produce a value that is the same type as elements of the collection."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="result" ordered="false"
+ lowerBound="1" eType="#//OutputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Gives the output pin on which the result is put."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/output"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="collection" ordered="false"
+ lowerBound="1" eType="#//InputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The collection to be reduced."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/input"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isOrdered" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Tells whether the order of the input collection should determine the order in which the behavior is applied to its elements."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="StartObjectBehaviorAction" eSuperTypes="#//CallAction">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="StartObjectBehaviorAction is an action that starts the execution either of a directly instantiated behavior or of the classifier behavior of an object. Argument values may be supplied for the input parameters of the behavior. If the behavior is invoked synchronously, then output values may be obtained for output parameters."/>
+ </eAnnotations>
+ <eOperations name="type_of_object" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type of the object input pin must be either a Behavior or a BehavioredClassifier with a classifier behavior.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="multiplicity_of_object" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The multiplicity of the object input pin must be [1..1].&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="number_order_arguments" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The number and order of the argument pins must be the same as the number and order of the in and in-out parameters of the invoked behavior. Pins are matched to parameters by order.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="number_order_results" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The number and order of result pins must be the same as the number and order of the in-out, out and return parameters of the invoked behavior. Pins are matched to parameters by order.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="type_ordering_multiplicity_match" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type, ordering, and multiplicity of an argument or result pin must be the same as the corresponding parameter of the behavior.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="object" ordered="false"
+ lowerBound="1" eType="#//InputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Holds the object which is either a behavior to be started or has a classifier behavior to be started."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/input"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="JoinNode" eSuperTypes="#//ControlNode">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A join node is a control node that synchronizes multiple flows.&#xD;&#xA;Join nodes have a Boolean value specification using the names of the incoming edges to specify the conditions under which the join will emit a token."/>
+ </eAnnotations>
+ <eOperations name="one_outgoing_edge" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A join node has one outgoing edge.&#xD;&#xA;self.outgoing->size() = 1"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="incoming_object_flow" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If a join node has an incoming object flow, it must have an outgoing object flow, otherwise, it must have an outgoing control flow.&#xD;&#xA;(self.incoming.select(e | e.isTypeOf(ObjectFlow)->notEmpty() implies&#xD;&#xA; self.outgoing.isTypeOf(ObjectFlow)) and&#xD;&#xA; (self.incoming.select(e | e.isTypeOf(ObjectFlow)->empty() implies&#xD;&#xA; self.outgoing.isTypeOf(ControlFlow))"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isCombineDuplicate" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Tells whether tokens having objects with the same identity are combined into one by the join."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="joinSpec" ordered="false"
+ lowerBound="1" eType="#//ValueSpecification" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A specification giving the conditions under which the join with emit a token. Default is &quot;and&quot;."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="DataStoreNode" eSuperTypes="#//CentralBufferNode">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A data store node is a central buffer node for non-transient information."/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ConditionalNode" eSuperTypes="#//StructuredActivityNode">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A conditional node is a structured activity node that represents an exclusive choice among some number of alternatives."/>
+ </eAnnotations>
+ <eOperations name="result_no_incoming" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The result output pins have no incoming edges.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isDeterminate" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If true, the modeler asserts that at most one test will succeed."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isAssured" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If true, the modeler asserts that at least one test will succeed."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="clause" ordered="false"
+ lowerBound="1" upperBound="-1" eType="#//Clause" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Set of clauses composing the conditional."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="result" upperBound="-1"
+ eType="#//OutputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A list of output pins that constitute the data flow outputs of the conditional."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/output"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Clause" eSuperTypes="#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A clause is an element that represents a single branch of a conditional construct, including a test and a body section. The body section is executed only if (but not necessarily if) the test section evaluates true."/>
+ </eAnnotations>
+ <eOperations name="decider_output" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The decider output pin must be for the test body or a node contained by the test body as a structured node.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="body_output_pins" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The bodyOutput pins are output pins on actions in the body of the clause.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="test" ordered="false" upperBound="-1"
+ eType="#//ExecutableNode">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A nested activity fragment with a designated output pin that specifies the result of the test."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="body" ordered="false" upperBound="-1"
+ eType="#//ExecutableNode">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A nested activity fragment that is executed if the test evaluates to true and the clause is chosen over any concurrent clauses that also evaluate to true."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="predecessorClause" ordered="false"
+ upperBound="-1" eType="#//Clause" eOpposite="#//Clause/successorClause">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A set of clauses whose tests must all evaluate false before the current clause can be tested."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="successorClause" ordered="false"
+ upperBound="-1" eType="#//Clause" eOpposite="#//Clause/predecessorClause">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A set of clauses which may not be tested unless the current clause tests false."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="decider" ordered="false"
+ lowerBound="1" eType="#//OutputPin">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An output pin within the test fragment the value of which is examined after execution of the test to determine whether the body should be executed."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="bodyOutput" upperBound="-1"
+ eType="#//OutputPin">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A list of output pins within the body fragment whose values are moved to the result pins of the containing conditional node after execution of the clause body."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="LoopNode" eSuperTypes="#//StructuredActivityNode">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A loop node is a structured activity node that represents a loop with setup, test, and body sections."/>
+ </eAnnotations>
+ <eOperations name="input_edges" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Loop variable inputs must not have outgoing edges.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="body_output_pins" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The bodyOutput pins are output pins on actions in the body of the loop node.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="result_no_incoming" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The result output pins have no incoming edges.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isTestedFirst" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If true, the test is performed before the first execution of the body.&#xA;If false, the body is executed once before the test is performed.&#xA;"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="bodyPart" ordered="false"
+ upperBound="-1" eType="#//ExecutableNode">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The set of nodes and edges that perform the repetitive computations of the loop. The body section is executed as long as the test section produces a true value."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="setupPart" ordered="false"
+ upperBound="-1" eType="#//ExecutableNode">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The set of nodes and edges that initialize values or perform other setup computations for the loop."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="decider" ordered="false"
+ lowerBound="1" eType="#//OutputPin">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An output pin within the test fragment the value of which is examined after execution of the test to determine whether to execute the loop body."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="test" ordered="false" upperBound="-1"
+ eType="#//ExecutableNode">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The set of nodes, edges, and designated value that compute a Boolean value to determine if another execution of the body will be performed."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="result" upperBound="-1"
+ eType="#//OutputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A list of output pins that constitute the data flow output of the entire loop."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/output"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="loopVariable" upperBound="-1"
+ eType="#//OutputPin">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A list of output pins that hold the values of the loop variables during an execution of the loop. When the test fails, the values are movied to the result pins of the loop."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="bodyOutput" upperBound="-1"
+ eType="#//OutputPin">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A list of output pins within the body fragment the values of which are moved to the loop variable pins after completion of execution of the body, before the next iteration of the loop begins or before the loop exits."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="loopVariableInput" upperBound="-1"
+ eType="#//InputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A list of values that are moved into the loop variable pins before the first iteration of the loop."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/input"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ExpansionNode" eSuperTypes="#//ObjectNode">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An expansion node is an object node used to indicate a flow across the boundary of an expansion region. A flow into a region contains a collection that is broken into its individual elements inside the region, which is executed once per element. A flow out of a region combines individual elements into a collection for use outside the region."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="regionAsOutput" ordered="false"
+ eType="#//ExpansionRegion" eOpposite="#//ExpansionRegion/outputElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The expansion region for which the node is an output."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="regionAsInput" ordered="false"
+ eType="#//ExpansionRegion" eOpposite="#//ExpansionRegion/inputElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The expansion region for which the node is an input."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ExpansionRegion" eSuperTypes="#//StructuredActivityNode">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An expansion region is a structured activity region that executes multiple times corresponding to elements of an input collection."/>
+ </eAnnotations>
+ <eOperations name="expansion_nodes" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An ExpansionRegion must have one or more argument ExpansionNodes and zero or more result ExpansionNodes.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="mode" ordered="false" lowerBound="1"
+ eType="#//ExpansionKind" defaultValueLiteral="iterative">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The way in which the executions interact:&#xD;&#xA;parallel: all interactions are independent&#xD;&#xA;iterative: the interactions occur in order of the elements&#xD;&#xA;stream: a stream of values flows into a single execution&#xD;&#xA;"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="inputElement" ordered="false"
+ lowerBound="1" upperBound="-1" eType="#//ExpansionNode" eOpposite="#//ExpansionNode/regionAsInput">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An object node that holds a separate element of the input collection during each of the multiple executions of the region."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="outputElement" ordered="false"
+ upperBound="-1" eType="#//ExpansionNode" eOpposite="#//ExpansionNode/regionAsOutput">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An object node that accepts a separate element of the output collection during each of the multiple executions of the region. The values are formed into a collection that is available when the execution of the region is complete."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="ExpansionKind">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="ExpansionKind is an enumeration type used to specify how multiple executions of an expansion region interact."/>
+ </eAnnotations>
+ <eLiterals name="parallel">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The executions are independent. They may be executed concurrently."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="iterative" value="1">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The executions are dependent and must be executed one at a time, in order of the collection elements."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="stream" value="2">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A stream of collection elements flows into a single execution, in order of the collection elements."/>
+ </eAnnotations>
+ </eLiterals>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ProtocolTransition" eSuperTypes="#//Transition">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A protocol transition specifies a legal transition for an operation. Transitions of protocol state machines have the following information: a pre condition (guard), on trigger, and a post condition. Every protocol transition is associated to zero or one operation (referred BehavioralFeature) that belongs to the context classifier of the protocol state machine."/>
+ </eAnnotations>
+ <eOperations name="belongs_to_psm" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A protocol transition always belongs to a protocol state machine.&#xD;&#xA;container.belongsToPSM()"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="associated_actions" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A protocol transition never has associated actions.&#xD;&#xA;effect->isEmpty()"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="refers_to_operation" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If a protocol transition refers to an operation (i. e. has a call trigger corresponding to an operation), then that operation should apply to the context classifier of the state machine of the protocol transition.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="postCondition" ordered="false"
+ eType="#//Constraint">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies the post condition of the transition which is the condition that should be obtained once the transition is triggered. This post condition is part of the post condition of the operation connected to the transition.&#xD;&#xA;"/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedRule"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="referred" ordered="false"
+ upperBound="-1" eType="#//Operation" changeable="false" volatile="true" transient="true"
+ derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="This association refers to the associated operation. It is derived from the operation of the call trigger when applicable."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="preCondition" ordered="false"
+ eType="#//Constraint">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies the precondition of the transition. It specifies the condition that should be verified before triggering the transition. This guard condition added to the source state will be evaluated as part of the precondition of the operation referred by the transition if any."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Transition/guard"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="AssociationClass" eSuperTypes="#//Class #//Association">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A model element that has both association and class properties. An AssociationClass can be seen as an association that also has class properties, or as a class that also has association properties. It not only connects a set of classifiers but also defines a set of features that belong to the relationship itself and not to any of the classifiers."/>
+ </eAnnotations>
+ <eOperations name="cannot_be_defined" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An AssociationClass cannot be defined between itself and something else.&#xD;&#xA;self.endType->excludes(self) and self.endType>collect(et|et.allparents()->excludes(self))"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="allConnections" ordered="false" lowerBound="2" upperBound="-1"
+ eType="#//Property">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The operation allConnections results in the set of all AssociationEnds of the Association.&#xD;&#xA;result = memberEnd->union ( self.parents ()->collect (p | p.allConnections () )"/>
+ </eAnnotations>
+ </eOperations>
+ </eClassifiers>
+</ecore:EPackage>
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/model/UML.genmodel b/plugins/marte/org.eclipse.papyrus.marte.vsl/model/UML.genmodel
new file mode 100644
index 00000000000..f32968996e1
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/model/UML.genmodel
@@ -0,0 +1,4474 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:genmodel="http://www.eclipse.org/uml2/2.2.0/GenModel" modelDirectory="/org.eclipse.uml2.uml/src"
+ creationIcons="false" creationSubmenus="true" modelPluginID="org.eclipse.uml2.uml"
+ templateDirectory="/org.eclipse.uml2.uml/templates" runtimeJar="true" dynamicTemplates="true"
+ modelName="UML" modelPluginClass="org.eclipse.uml2.uml.UMLPlugin" editPluginClass="org.eclipse.uml2.uml.edit.UMLEditPlugin"
+ editorPluginClass="org.eclipse.uml2.uml.editor.UMLEditorPlugin" nonNLSMarkers="true"
+ rootExtendsInterface="" codeFormatting="true" booleanFlagsField="eFlags" booleanFlagsReservedBits="8"
+ importerID="org.eclipse.uml2.uml.ecore.importer" containmentProxies="true" minimalReflectiveMethods="false"
+ complianceLevel="5.0" colorProviders="true" fontProviders="true" packedEnums="true"
+ usedGenPackages="platform:/plugin/org.eclipse.emf.ecore/model/Ecore.genmodel#//ecore"
+ operationReflection="true" factoryMethods="true" pluralizedGetters="true" cacheAdapterSupport="true"
+ invariantPrefix="validate">
+ <genAnnotations source="http://www.eclipse.org/emf/2002/GenModel/importer/org.eclipse.uml2.uml.ecore.importer">
+ <details key="DUPLICATE_FEATURES" value="PROCESS"/>
+ <details key="DUPLICATE_FEATURE_INHERITANCE" value="PROCESS"/>
+ <details key="REDEFINING_PROPERTIES" value="PROCESS"/>
+ <details key="DUPLICATE_OPERATIONS" value="PROCESS"/>
+ <details key="DERIVED_FEATURES" value="PROCESS"/>
+ <details key="SUBSETTING_PROPERTIES" value="PROCESS"/>
+ <details key="ECORE_TAGGED_VALUES" value="PROCESS"/>
+ <details key="REDEFINING_OPERATIONS" value="PROCESS"/>
+ <details key="ANNOTATION_DETAILS" value="PROCESS"/>
+ <details key="SUPER_CLASS_ORDER" value="PROCESS"/>
+ <details key="UNION_PROPERTIES" value="PROCESS"/>
+ <details key="DUPLICATE_OPERATION_INHERITANCE" value="PROCESS"/>
+ <details key="OPERATION_BODIES" value="IGNORE"/>
+ <details key="INVARIANT_CONSTRAINTS" value="PROCESS"/>
+ <details key="COMMENTS" value="PROCESS"/>
+ <details key="CAMEL_CASE_NAMES" value="IGNORE"/>
+ </genAnnotations>
+ <foreignModel>UML.merged.uml</foreignModel>
+ <genPackages xsi:type="genmodel:GenPackage" prefix="UML" basePackage="org.eclipse.uml2"
+ disposableProviderFactory="true" loadInitialization="true" classPackageSuffix="internal.impl"
+ providerPackageSuffix="edit.providers" presentationPackageSuffix="editor.presentation"
+ generateExampleClass="false" multipleEditorPages="false" extensibleProviderFactory="true"
+ childCreationExtenders="true" contentTypeIdentifier="org.eclipse.uml2.uml" fileExtensions="uml"
+ ecorePackage="UML.ecore#/" resourceInterfaces="true" operationsPackage="org.eclipse.uml2.uml.internal.operations">
+ <genEnums xsi:type="genmodel:GenEnum" ecoreEnum="UML.ecore#//VisibilityKind">
+ <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="UML.ecore#//VisibilityKind/public"/>
+ <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="UML.ecore#//VisibilityKind/private"/>
+ <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="UML.ecore#//VisibilityKind/protected"/>
+ <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="UML.ecore#//VisibilityKind/package"/>
+ </genEnums>
+ <genEnums xsi:type="genmodel:GenEnum" ecoreEnum="UML.ecore#//TransitionKind">
+ <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="UML.ecore#//TransitionKind/internal"/>
+ <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="UML.ecore#//TransitionKind/local"/>
+ <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="UML.ecore#//TransitionKind/external"/>
+ </genEnums>
+ <genEnums xsi:type="genmodel:GenEnum" ecoreEnum="UML.ecore#//PseudostateKind">
+ <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="UML.ecore#//PseudostateKind/initial"/>
+ <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="UML.ecore#//PseudostateKind/deepHistory"/>
+ <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="UML.ecore#//PseudostateKind/shallowHistory"/>
+ <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="UML.ecore#//PseudostateKind/join"/>
+ <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="UML.ecore#//PseudostateKind/fork"/>
+ <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="UML.ecore#//PseudostateKind/junction"/>
+ <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="UML.ecore#//PseudostateKind/choice"/>
+ <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="UML.ecore#//PseudostateKind/entryPoint"/>
+ <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="UML.ecore#//PseudostateKind/exitPoint"/>
+ <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="UML.ecore#//PseudostateKind/terminate"/>
+ </genEnums>
+ <genEnums xsi:type="genmodel:GenEnum" ecoreEnum="UML.ecore#//ConnectorKind">
+ <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="UML.ecore#//ConnectorKind/assembly"/>
+ <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="UML.ecore#//ConnectorKind/delegation"/>
+ </genEnums>
+ <genEnums xsi:type="genmodel:GenEnum" ecoreEnum="UML.ecore#//CallConcurrencyKind">
+ <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="UML.ecore#//CallConcurrencyKind/sequential"/>
+ <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="UML.ecore#//CallConcurrencyKind/guarded"/>
+ <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="UML.ecore#//CallConcurrencyKind/concurrent"/>
+ </genEnums>
+ <genEnums xsi:type="genmodel:GenEnum" ecoreEnum="UML.ecore#//AggregationKind">
+ <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="UML.ecore#//AggregationKind/none"/>
+ <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="UML.ecore#//AggregationKind/shared"/>
+ <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="UML.ecore#//AggregationKind/composite"/>
+ </genEnums>
+ <genEnums xsi:type="genmodel:GenEnum" ecoreEnum="UML.ecore#//ParameterDirectionKind">
+ <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="UML.ecore#//ParameterDirectionKind/in"/>
+ <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="UML.ecore#//ParameterDirectionKind/inout"/>
+ <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="UML.ecore#//ParameterDirectionKind/out"/>
+ <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="UML.ecore#//ParameterDirectionKind/return"/>
+ </genEnums>
+ <genEnums xsi:type="genmodel:GenEnum" ecoreEnum="UML.ecore#//ParameterEffectKind">
+ <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="UML.ecore#//ParameterEffectKind/create"/>
+ <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="UML.ecore#//ParameterEffectKind/read"/>
+ <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="UML.ecore#//ParameterEffectKind/update"/>
+ <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="UML.ecore#//ParameterEffectKind/delete"/>
+ </genEnums>
+ <genEnums xsi:type="genmodel:GenEnum" ecoreEnum="UML.ecore#//ObjectNodeOrderingKind">
+ <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="UML.ecore#//ObjectNodeOrderingKind/unordered"/>
+ <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="UML.ecore#//ObjectNodeOrderingKind/ordered"/>
+ <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="UML.ecore#//ObjectNodeOrderingKind/LIFO"/>
+ <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="UML.ecore#//ObjectNodeOrderingKind/FIFO"/>
+ </genEnums>
+ <genEnums xsi:type="genmodel:GenEnum" ecoreEnum="UML.ecore#//MessageKind">
+ <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="UML.ecore#//MessageKind/complete"/>
+ <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="UML.ecore#//MessageKind/lost"/>
+ <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="UML.ecore#//MessageKind/found"/>
+ <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="UML.ecore#//MessageKind/unknown"/>
+ </genEnums>
+ <genEnums xsi:type="genmodel:GenEnum" ecoreEnum="UML.ecore#//MessageSort">
+ <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="UML.ecore#//MessageSort/synchCall"/>
+ <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="UML.ecore#//MessageSort/asynchCall"/>
+ <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="UML.ecore#//MessageSort/asynchSignal"/>
+ <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="UML.ecore#//MessageSort/createMessage"/>
+ <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="UML.ecore#//MessageSort/deleteMessage"/>
+ <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="UML.ecore#//MessageSort/reply"/>
+ </genEnums>
+ <genEnums xsi:type="genmodel:GenEnum" ecoreEnum="UML.ecore#//InteractionOperatorKind">
+ <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="UML.ecore#//InteractionOperatorKind/seq"/>
+ <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="UML.ecore#//InteractionOperatorKind/alt"/>
+ <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="UML.ecore#//InteractionOperatorKind/opt"/>
+ <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="UML.ecore#//InteractionOperatorKind/break"/>
+ <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="UML.ecore#//InteractionOperatorKind/par"/>
+ <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="UML.ecore#//InteractionOperatorKind/strict"/>
+ <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="UML.ecore#//InteractionOperatorKind/loop"/>
+ <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="UML.ecore#//InteractionOperatorKind/critical"/>
+ <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="UML.ecore#//InteractionOperatorKind/neg"/>
+ <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="UML.ecore#//InteractionOperatorKind/assert"/>
+ <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="UML.ecore#//InteractionOperatorKind/ignore"/>
+ <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="UML.ecore#//InteractionOperatorKind/consider"/>
+ </genEnums>
+ <genEnums xsi:type="genmodel:GenEnum" ecoreEnum="UML.ecore#//ExpansionKind">
+ <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="UML.ecore#//ExpansionKind/parallel"/>
+ <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="UML.ecore#//ExpansionKind/iterative"/>
+ <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="UML.ecore#//ExpansionKind/stream"/>
+ </genEnums>
+ <genDataTypes xsi:type="genmodel:GenDataType" ecoreDataType="UML.ecore#//Integer"/>
+ <genDataTypes xsi:type="genmodel:GenDataType" ecoreDataType="UML.ecore#//Boolean"/>
+ <genDataTypes xsi:type="genmodel:GenDataType" ecoreDataType="UML.ecore#//String"/>
+ <genDataTypes xsi:type="genmodel:GenDataType" ecoreDataType="UML.ecore#//UnlimitedNatural"/>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//Comment">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" propertyMultiLine="true"
+ ecoreFeature="ecore:EAttribute UML.ecore#//Comment/body"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Comment/annotatedElement"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="UML.ecore#//Element">
+ <genFeatures xsi:type="genmodel:GenFeature" property="Readonly" notify="false"
+ createChild="false" ecoreFeature="ecore:EReference UML.ecore#//Element/ownedElement">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" property="Readonly" notify="false"
+ createChild="false" ecoreFeature="ecore:EReference UML.ecore#//Element/owner">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Element/ownedComment">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Element/not_own_self">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Element/not_own_self/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Element/not_own_self/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Element/has_owner">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Element/has_owner/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Element/has_owner/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Element/destroy"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Element/hasKeyword">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Element/hasKeyword/keyword"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Element/getKeywords"
+ cacheAdapterScope="Resource"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Element/addKeyword">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Element/addKeyword/keyword"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Element/removeKeyword">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Element/removeKeyword/keyword"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Element/getNearestPackage"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Element/getModel"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Element/isStereotypeApplicable">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Element/isStereotypeApplicable/stereotype"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Element/isStereotypeRequired">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Element/isStereotypeRequired/stereotype"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Element/isStereotypeApplied">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Element/isStereotypeApplied/stereotype"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Element/applyStereotype">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Element/applyStereotype/stereotype"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Element/unapplyStereotype">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Element/unapplyStereotype/stereotype"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Element/getApplicableStereotypes"
+ cacheAdapterScope="Global"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Element/getApplicableStereotype">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Element/getApplicableStereotype/qualifiedName"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Element/getStereotypeApplications"
+ cacheAdapterScope="Global"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Element/getStereotypeApplication">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Element/getStereotypeApplication/stereotype"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Element/getRequiredStereotypes"
+ cacheAdapterScope="Global"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Element/getRequiredStereotype">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Element/getRequiredStereotype/qualifiedName"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Element/getAppliedStereotypes"
+ cacheAdapterScope="Global"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Element/getAppliedStereotype">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Element/getAppliedStereotype/qualifiedName"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Element/getAppliedSubstereotypes">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Element/getAppliedSubstereotypes/stereotype"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Element/getAppliedSubstereotype">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Element/getAppliedSubstereotype/stereotype"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Element/getAppliedSubstereotype/qualifiedName"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Element/hasValue">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Element/hasValue/stereotype"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Element/hasValue/propertyName"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Element/getValue">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Element/getValue/stereotype"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Element/getValue/propertyName"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Element/setValue">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Element/setValue/stereotype"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Element/setValue/propertyName"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Element/setValue/newValue"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Element/createEAnnotation">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Element/createEAnnotation/source"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Element/getRelationships"
+ cacheAdapterScope="Global"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Element/getRelationships.1">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Element/getRelationships.1/eClass"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Element/getSourceDirectedRelationships"
+ cacheAdapterScope="Global"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Element/getSourceDirectedRelationships.1">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Element/getSourceDirectedRelationships.1/eClass"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Element/getTargetDirectedRelationships"
+ cacheAdapterScope="Global"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Element/getTargetDirectedRelationships.1">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Element/getTargetDirectedRelationships.1/eClass"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Element/allOwnedElements"
+ cacheAdapterScope="Global"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Element/mustBeOwned"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//Package">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="true" propertySortChoices="true"
+ ecoreFeature="ecore:EReference UML.ecore#//Package/ownedType">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Package/packageMerge">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Package/packagedElement">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="true" propertySortChoices="true"
+ ecoreFeature="ecore:EReference UML.ecore#//Package/nestedPackage">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Package/nestingPackage">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+ createChild="true" propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Package/profileApplication"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Package/elements_public_or_private">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Package/elements_public_or_private/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Package/elements_public_or_private/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Package/createOwnedClass">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Package/createOwnedClass/name"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Package/createOwnedClass/isAbstract"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Package/createOwnedEnumeration">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Package/createOwnedEnumeration/name"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Package/createOwnedPrimitiveType">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Package/createOwnedPrimitiveType/name"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Package/createOwnedInterface">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Package/createOwnedInterface/name"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Package/isProfileApplied">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Package/isProfileApplied/profile"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Package/applyProfile">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Package/applyProfile/profile"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Package/unapplyProfile">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Package/unapplyProfile/profile"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Package/getAppliedProfiles"
+ cacheAdapterScope="Global"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Package/getAllAppliedProfiles"
+ cacheAdapterScope="Global"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Package/getAppliedProfile">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Package/getAppliedProfile/qualifiedName"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Package/getAppliedProfile.1">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Package/getAppliedProfile.1/qualifiedName"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Package/getAppliedProfile.1/recurse"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Package/getAllProfileApplications"
+ cacheAdapterScope="Global"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Package/getProfileApplication">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Package/getProfileApplication/profile"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Package/getProfileApplication.1">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Package/getProfileApplication.1/profile"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Package/getProfileApplication.1/recurse"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Package/isModelLibrary"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Package/visibleMembers"
+ cacheAdapterScope="Global"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Package/makesVisible">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Package/makesVisible/el"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="UML.ecore#//PackageableElement"/>
+ <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="UML.ecore#//NamedElement">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//NamedElement/name"
+ key="true"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//NamedElement/visibility"/>
+ <genFeatures xsi:type="genmodel:GenFeature" property="Readonly" createChild="false"
+ ecoreFeature="ecore:EAttribute UML.ecore#//NamedElement/qualifiedName">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//NamedElement/clientDependency"/>
+ <genFeatures xsi:type="genmodel:GenFeature" property="Readonly" notify="false"
+ createChild="false" ecoreFeature="ecore:EReference UML.ecore#//NamedElement/namespace">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//NamedElement/nameExpression">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//NamedElement/has_no_qualified_name">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//NamedElement/has_no_qualified_name/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//NamedElement/has_no_qualified_name/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//NamedElement/has_qualified_name">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//NamedElement/has_qualified_name/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//NamedElement/has_qualified_name/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//NamedElement/visibility_needs_ownership">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//NamedElement/visibility_needs_ownership/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//NamedElement/visibility_needs_ownership/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//NamedElement/createDependency">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//NamedElement/createDependency/supplier"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//NamedElement/getLabel"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//NamedElement/getLabel.1">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//NamedElement/getLabel.1/localize"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//NamedElement/createUsage">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//NamedElement/createUsage/supplier"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//NamedElement/getQualifiedName"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//NamedElement/allNamespaces"
+ cacheAdapterScope="Global"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//NamedElement/isDistinguishableFrom">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//NamedElement/isDistinguishableFrom/n"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//NamedElement/isDistinguishableFrom/ns"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//NamedElement/separator"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//NamedElement/allOwningPackages"
+ cacheAdapterScope="Global"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//Dependency">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" propertySortChoices="true"
+ ecoreFeature="ecore:EReference UML.ecore#//Dependency/supplier"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Dependency/client"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="UML.ecore#//DirectedRelationship">
+ <genFeatures xsi:type="genmodel:GenFeature" property="Readonly" notify="false"
+ createChild="false" ecoreFeature="ecore:EReference UML.ecore#//DirectedRelationship/source">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" property="Readonly" notify="false"
+ createChild="false" ecoreFeature="ecore:EReference UML.ecore#//DirectedRelationship/target">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="UML.ecore#//Relationship">
+ <genFeatures xsi:type="genmodel:GenFeature" property="Readonly" notify="false"
+ createChild="false" ecoreFeature="ecore:EReference UML.ecore#//Relationship/relatedElement">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="UML.ecore#//Namespace">
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Namespace/elementImport">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Namespace/packageImport">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Namespace/ownedRule">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" property="Readonly" notify="false"
+ createChild="false" ecoreFeature="ecore:EReference UML.ecore#//Namespace/member">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" property="Readonly" notify="false"
+ createChild="false" ecoreFeature="ecore:EReference UML.ecore#//Namespace/importedMember">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" property="Readonly" notify="false"
+ createChild="false" ecoreFeature="ecore:EReference UML.ecore#//Namespace/ownedMember">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Namespace/members_distinguishable">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Namespace/members_distinguishable/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Namespace/members_distinguishable/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Namespace/createElementImport">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Namespace/createElementImport/element"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Namespace/createElementImport/visibility"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Namespace/createPackageImport">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Namespace/createPackageImport/package_"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Namespace/createPackageImport/visibility"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Namespace/getImportedElements"
+ cacheAdapterScope="Global"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Namespace/getImportedPackages"
+ cacheAdapterScope="Global"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Namespace/getImportedMembers"
+ cacheAdapterScope="Global"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Namespace/getNamesOfMember">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Namespace/getNamesOfMember/element"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Namespace/membersAreDistinguishable"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Namespace/importMembers">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Namespace/importMembers/imps"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Namespace/excludeCollisions">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Namespace/excludeCollisions/imps"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//ElementImport">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//ElementImport/visibility"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//ElementImport/alias"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ElementImport/importedElement"
+ key="true"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ElementImport/importingNamespace">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ElementImport/visibility_public_or_private">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ElementImport/visibility_public_or_private/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ElementImport/visibility_public_or_private/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ElementImport/imported_element_is_public">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ElementImport/imported_element_is_public/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ElementImport/imported_element_is_public/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ElementImport/getName"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//PackageImport">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//PackageImport/visibility"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" propertySortChoices="true"
+ ecoreFeature="ecore:EReference UML.ecore#//PackageImport/importedPackage"
+ key="true"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//PackageImport/importingNamespace">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//PackageImport/public_or_private">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//PackageImport/public_or_private/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//PackageImport/public_or_private/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//Constraint">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Constraint/constrainedElement"/>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Constraint/specification">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Constraint/context">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Constraint/not_apply_to_self">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Constraint/not_apply_to_self/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Constraint/not_apply_to_self/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Constraint/value_specification_boolean">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Constraint/value_specification_boolean/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Constraint/value_specification_boolean/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Constraint/boolean_value">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Constraint/boolean_value/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Constraint/boolean_value/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Constraint/no_side_effects">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Constraint/no_side_effects/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Constraint/no_side_effects/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Constraint/not_applied_to_self">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Constraint/not_applied_to_self/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Constraint/not_applied_to_self/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="UML.ecore#//ValueSpecification">
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ValueSpecification/isComputable"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ValueSpecification/integerValue"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ValueSpecification/booleanValue"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ValueSpecification/stringValue"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ValueSpecification/unlimitedValue"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ValueSpecification/isNull"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="UML.ecore#//TypedElement">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" propertySortChoices="true"
+ ecoreFeature="ecore:EReference UML.ecore#//TypedElement/type" key="true"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="UML.ecore#//Type">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Type/package">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Type/createAssociation">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Type/createAssociation/end1IsNavigable"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Type/createAssociation/end1Aggregation"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Type/createAssociation/end1Name"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Type/createAssociation/end1Lower"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Type/createAssociation/end1Upper"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Type/createAssociation/end1Type"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Type/createAssociation/end2IsNavigable"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Type/createAssociation/end2Aggregation"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Type/createAssociation/end2Name"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Type/createAssociation/end2Lower"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Type/createAssociation/end2Upper"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Type/getAssociations"
+ cacheAdapterScope="Global"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Type/conformsTo">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Type/conformsTo/other"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//Association">
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Association/ownedEnd">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" propertySortChoices="true"
+ ecoreFeature="ecore:EReference UML.ecore#//Association/memberEnd"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//Association/isDerived"/>
+ <genFeatures xsi:type="genmodel:GenFeature" property="Readonly" notify="false"
+ createChild="false" ecoreFeature="ecore:EReference UML.ecore#//Association/endType">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="true" propertySortChoices="true"
+ ecoreFeature="ecore:EReference UML.ecore#//Association/navigableOwnedEnd"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Association/specialized_end_number">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Association/specialized_end_number/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Association/specialized_end_number/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Association/specialized_end_types">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Association/specialized_end_types/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Association/specialized_end_types/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Association/binary_associations">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Association/binary_associations/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Association/binary_associations/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Association/association_ends">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Association/association_ends/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Association/association_ends/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Association/isBinary"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Association/getEndTypes"
+ cacheAdapterScope="Global"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="UML.ecore#//Classifier">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//Classifier/isAbstract"/>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Classifier/generalization">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Classifier/powertypeExtent"/>
+ <genFeatures xsi:type="genmodel:GenFeature" property="Readonly" notify="false"
+ createChild="false" ecoreFeature="ecore:EReference UML.ecore#//Classifier/feature">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ ecoreFeature="ecore:EReference UML.ecore#//Classifier/inheritedMember">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Classifier/redefinedClassifier"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Classifier/general">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Classifier/substitution">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" property="Readonly" notify="false"
+ createChild="false" ecoreFeature="ecore:EReference UML.ecore#//Classifier/attribute">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="true" propertySortChoices="true"
+ ecoreFeature="ecore:EReference UML.ecore#//Classifier/representation"/>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Classifier/collaborationUse">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Classifier/ownedUseCase">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Classifier/useCase"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Classifier/no_cycles_in_generalization">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Classifier/no_cycles_in_generalization/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Classifier/no_cycles_in_generalization/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Classifier/generalization_hierarchies">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Classifier/generalization_hierarchies/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Classifier/generalization_hierarchies/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Classifier/specialize_type">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Classifier/specialize_type/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Classifier/specialize_type/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Classifier/maps_to_generalization_set">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Classifier/maps_to_generalization_set/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Classifier/maps_to_generalization_set/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Classifier/getAllAttributes"
+ cacheAdapterScope="Global"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Classifier/getOperations"
+ cacheAdapterScope="Global"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Classifier/getAllOperations"
+ cacheAdapterScope="Global"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Classifier/getOperation">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Classifier/getOperation/name"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Classifier/getOperation/parameterNames"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Classifier/getOperation/parameterTypes"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Classifier/getOperation.1">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Classifier/getOperation.1/name"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Classifier/getOperation.1/parameterNames"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Classifier/getOperation.1/parameterTypes"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Classifier/getOperation.1/ignoreCase"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Classifier/getUsedInterfaces"
+ cacheAdapterScope="Global"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Classifier/getAllUsedInterfaces"
+ cacheAdapterScope="Global"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Classifier/getGenerals"
+ cacheAdapterScope="Global"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Classifier/getInheritedMembers"
+ cacheAdapterScope="Global"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Classifier/allFeatures"
+ cacheAdapterScope="Global"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Classifier/parents"
+ cacheAdapterScope="Global"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Classifier/inheritableMembers">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Classifier/inheritableMembers/c"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Classifier/hasVisibilityOf">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Classifier/hasVisibilityOf/n"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Classifier/conformsTo">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Classifier/conformsTo/other"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Classifier/inherit">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Classifier/inherit/inhs"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Classifier/maySpecializeType">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Classifier/maySpecializeType/c"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Classifier/allParents"
+ cacheAdapterScope="Global"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="UML.ecore#//RedefinableElement">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//RedefinableElement/isLeaf"/>
+ <genFeatures xsi:type="genmodel:GenFeature" property="Readonly" notify="false"
+ createChild="false" ecoreFeature="ecore:EReference UML.ecore#//RedefinableElement/redefinedElement">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" property="Readonly" notify="false"
+ createChild="false" ecoreFeature="ecore:EReference UML.ecore#//RedefinableElement/redefinitionContext">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//RedefinableElement/redefinition_context_valid">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//RedefinableElement/redefinition_context_valid/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//RedefinableElement/redefinition_context_valid/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//RedefinableElement/redefinition_consistent">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//RedefinableElement/redefinition_consistent/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//RedefinableElement/redefinition_consistent/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//RedefinableElement/isConsistentWith">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//RedefinableElement/isConsistentWith/redefinee"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//RedefinableElement/isRedefinitionContextValid">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//RedefinableElement/isRedefinitionContextValid/redefined"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="UML.ecore#//TemplateableElement">
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//TemplateableElement/templateBinding">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//TemplateableElement/ownedTemplateSignature">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//TemplateableElement/parameterableElements"
+ cacheAdapterScope="Global"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//TemplateableElement/isTemplate"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//TemplateBinding">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" propertySortChoices="true"
+ ecoreFeature="ecore:EReference UML.ecore#//TemplateBinding/signature" key="true"/>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//TemplateBinding/parameterSubstitution">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//TemplateBinding/boundElement">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//TemplateBinding/parameter_substitution_formal">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//TemplateBinding/parameter_substitution_formal/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//TemplateBinding/parameter_substitution_formal/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//TemplateBinding/one_parameter_substitution">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//TemplateBinding/one_parameter_substitution/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//TemplateBinding/one_parameter_substitution/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//TemplateSignature">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//TemplateSignature/parameter"/>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//TemplateSignature/ownedParameter">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//TemplateSignature/template">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//TemplateSignature/own_elements">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//TemplateSignature/own_elements/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//TemplateSignature/own_elements/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//TemplateParameter">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//TemplateParameter/signature">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" propertySortChoices="true"
+ ecoreFeature="ecore:EReference UML.ecore#//TemplateParameter/parameteredElement"/>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//TemplateParameter/ownedParameteredElement">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//TemplateParameter/default"/>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//TemplateParameter/ownedDefault">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//TemplateParameter/must_be_compatible">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//TemplateParameter/must_be_compatible/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//TemplateParameter/must_be_compatible/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="UML.ecore#//ParameterableElement">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ParameterableElement/owningTemplateParameter">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ParameterableElement/templateParameter"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ParameterableElement/isCompatibleWith">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ParameterableElement/isCompatibleWith/p"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ParameterableElement/isTemplateParameter"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//TemplateParameterSubstitution">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//TemplateParameterSubstitution/formal"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//TemplateParameterSubstitution/actual"/>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//TemplateParameterSubstitution/ownedActual">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//TemplateParameterSubstitution/templateBinding">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//TemplateParameterSubstitution/must_be_compatible">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//TemplateParameterSubstitution/must_be_compatible/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//TemplateParameterSubstitution/must_be_compatible/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//Generalization">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//Generalization/isSubstitutable"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" propertySortChoices="true"
+ ecoreFeature="ecore:EReference UML.ecore#//Generalization/general" key="true"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Generalization/generalizationSet"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Generalization/specific">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Generalization/generalization_same_classifier">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Generalization/generalization_same_classifier/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Generalization/generalization_same_classifier/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//GeneralizationSet">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//GeneralizationSet/isCovering"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//GeneralizationSet/isDisjoint"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//GeneralizationSet/powertype"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" propertySortChoices="true"
+ ecoreFeature="ecore:EReference UML.ecore#//GeneralizationSet/generalization"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//GeneralizationSet/generalization_same_classifier">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//GeneralizationSet/generalization_same_classifier/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//GeneralizationSet/generalization_same_classifier/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//GeneralizationSet/maps_to_generalization_set">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//GeneralizationSet/maps_to_generalization_set/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//GeneralizationSet/maps_to_generalization_set/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="UML.ecore#//Feature">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//Feature/isStatic"/>
+ <genFeatures xsi:type="genmodel:GenFeature" property="Readonly" notify="false"
+ createChild="false" ecoreFeature="ecore:EReference UML.ecore#//Feature/featuringClassifier">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//Substitution">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" propertySortChoices="true"
+ ecoreFeature="ecore:EReference UML.ecore#//Substitution/contract" key="true"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Substitution/substitutingClassifier">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//Realization"/>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//Abstraction">
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Abstraction/mapping">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//OpaqueExpression">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" propertyMultiLine="true"
+ ecoreFeature="ecore:EAttribute UML.ecore#//OpaqueExpression/body"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//OpaqueExpression/language"/>
+ <genFeatures xsi:type="genmodel:GenFeature" property="Readonly" notify="false"
+ createChild="false" ecoreFeature="ecore:EReference UML.ecore#//OpaqueExpression/result">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//OpaqueExpression/behavior"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//OpaqueExpression/language_body_size">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//OpaqueExpression/language_body_size/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//OpaqueExpression/language_body_size/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//OpaqueExpression/only_return_result_parameters">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//OpaqueExpression/only_return_result_parameters/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//OpaqueExpression/only_return_result_parameters/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//OpaqueExpression/one_return_result_parameter">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//OpaqueExpression/one_return_result_parameter/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//OpaqueExpression/one_return_result_parameter/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//OpaqueExpression/getResult"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//OpaqueExpression/value"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//OpaqueExpression/isIntegral"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//OpaqueExpression/isPositive"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//OpaqueExpression/isNonNegative"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//Parameter">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Parameter/parameterSet"/>
+ <genFeatures xsi:type="genmodel:GenFeature" property="Readonly" notify="false"
+ createChild="false" ecoreFeature="ecore:EReference UML.ecore#//Parameter/operation"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//Parameter/direction"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//Parameter/default"/>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Parameter/defaultValue">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//Parameter/isException"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//Parameter/isStream"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//Parameter/effect"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Parameter/connector_end">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Parameter/connector_end/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Parameter/connector_end/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Parameter/stream_and_exception">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Parameter/stream_and_exception/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Parameter/stream_and_exception/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Parameter/not_exception">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Parameter/not_exception/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Parameter/not_exception/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Parameter/reentrant_behaviors">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Parameter/reentrant_behaviors/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Parameter/reentrant_behaviors/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Parameter/in_and_out">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Parameter/in_and_out/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Parameter/in_and_out/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Parameter/getDefault"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Parameter/isSetDefault"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Parameter/setDefault">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Parameter/setDefault/newDefault"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Parameter/unsetDefault"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Parameter/setBooleanDefaultValue">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Parameter/setBooleanDefaultValue/value"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Parameter/setIntegerDefaultValue">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Parameter/setIntegerDefaultValue/value"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Parameter/setStringDefaultValue">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Parameter/setStringDefaultValue/value"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Parameter/setUnlimitedNaturalDefaultValue">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Parameter/setUnlimitedNaturalDefaultValue/value"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Parameter/setNullDefaultValue"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="UML.ecore#//MultiplicityElement">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//MultiplicityElement/isOrdered"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//MultiplicityElement/isUnique"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//MultiplicityElement/upper"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//MultiplicityElement/lower"/>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//MultiplicityElement/upperValue">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//MultiplicityElement/lowerValue">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//MultiplicityElement/lower_ge_0">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//MultiplicityElement/lower_ge_0/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//MultiplicityElement/lower_ge_0/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//MultiplicityElement/upper_ge_lower">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//MultiplicityElement/upper_ge_lower/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//MultiplicityElement/upper_ge_lower/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//MultiplicityElement/value_specification_no_side_effects">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//MultiplicityElement/value_specification_no_side_effects/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//MultiplicityElement/value_specification_no_side_effects/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//MultiplicityElement/value_specification_constant">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//MultiplicityElement/value_specification_constant/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//MultiplicityElement/value_specification_constant/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//MultiplicityElement/setLower">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//MultiplicityElement/setLower/newLower"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//MultiplicityElement/setUpper">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//MultiplicityElement/setUpper/newUpper"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//MultiplicityElement/getLower"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//MultiplicityElement/getUpper"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//MultiplicityElement/isMultivalued"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//MultiplicityElement/includesCardinality">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//MultiplicityElement/includesCardinality/C"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//MultiplicityElement/includesMultiplicity">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//MultiplicityElement/includesMultiplicity/M"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//MultiplicityElement/lowerBound"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//MultiplicityElement/upperBound"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//MultiplicityElement/compatibleWith">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//MultiplicityElement/compatibleWith/other"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//MultiplicityElement/is">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//MultiplicityElement/is/lowerbound"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//MultiplicityElement/is/upperbound"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="UML.ecore#//ConnectableElement">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ConnectableElement/end"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ConnectableElement/getEnds"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//ConnectorEnd">
+ <genFeatures xsi:type="genmodel:GenFeature" property="Readonly" notify="false"
+ createChild="false" ecoreFeature="ecore:EReference UML.ecore#//ConnectorEnd/definingEnd">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ConnectorEnd/role"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ConnectorEnd/partWithPort"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ConnectorEnd/multiplicity">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ConnectorEnd/multiplicity/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ConnectorEnd/multiplicity/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ConnectorEnd/part_with_port_empty">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ConnectorEnd/part_with_port_empty/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ConnectorEnd/part_with_port_empty/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ConnectorEnd/role_and_part_with_port">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ConnectorEnd/role_and_part_with_port/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ConnectorEnd/role_and_part_with_port/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ConnectorEnd/self_part_with_port">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ConnectorEnd/self_part_with_port/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ConnectorEnd/self_part_with_port/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ConnectorEnd/getDefiningEnd"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//Property">
+ <genFeatures xsi:type="genmodel:GenFeature" property="Readonly" notify="false"
+ createChild="false" ecoreFeature="ecore:EReference UML.ecore#//Property/class"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Property/datatype">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//Property/isDerived"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//Property/isDerivedUnion"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//Property/default"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//Property/aggregation"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//Property/isComposite.1">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Property/redefinedProperty"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Property/owningAssociation">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Property/defaultValue">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Property/opposite">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Property/subsettedProperty"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" propertySortChoices="true"
+ ecoreFeature="ecore:EReference UML.ecore#//Property/association"/>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Property/qualifier">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Property/associationEnd">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Property/multiplicity_of_composite">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Property/multiplicity_of_composite/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Property/multiplicity_of_composite/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Property/subsetting_context_conforms">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Property/subsetting_context_conforms/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Property/subsetting_context_conforms/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Property/redefined_property_inherited">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Property/redefined_property_inherited/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Property/redefined_property_inherited/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Property/subsetting_rules">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Property/subsetting_rules/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Property/subsetting_rules/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Property/navigable_readonly">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Property/navigable_readonly/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Property/navigable_readonly/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Property/derived_union_is_derived">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Property/derived_union_is_derived/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Property/derived_union_is_derived/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Property/derived_union_is_read_only">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Property/derived_union_is_read_only/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Property/derived_union_is_read_only/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Property/subsetted_property_names">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Property/subsetted_property_names/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Property/subsetted_property_names/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Property/deployment_target">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Property/deployment_target/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Property/deployment_target/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Property/binding_to_attribute">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Property/binding_to_attribute/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Property/binding_to_attribute/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Property/getDefault"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Property/isSetDefault"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Property/setDefault">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Property/setDefault/newDefault"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Property/setIsComposite">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Property/setIsComposite/newIsComposite"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Property/setOpposite">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Property/setOpposite/newOpposite"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Property/unsetDefault"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Property/setIsNavigable">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Property/setIsNavigable/isNavigable"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Property/getOtherEnd"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Property/setBooleanDefaultValue">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Property/setBooleanDefaultValue/value"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Property/setIntegerDefaultValue">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Property/setIntegerDefaultValue/value"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Property/setStringDefaultValue">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Property/setStringDefaultValue/value"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Property/setUnlimitedNaturalDefaultValue">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Property/setUnlimitedNaturalDefaultValue/value"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Property/setNullDefaultValue"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Property/isAttribute">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Property/isAttribute/p"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Property/getOpposite"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Property/isComposite"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Property/subsettingContext"
+ cacheAdapterScope="Global"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Property/isNavigable"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="UML.ecore#//DeploymentTarget">
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//DeploymentTarget/deployment">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" property="Readonly" notify="false"
+ createChild="false" ecoreFeature="ecore:EReference UML.ecore#//DeploymentTarget/deployedElement">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//DeploymentTarget/getDeployedElements"
+ cacheAdapterScope="Global"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//Deployment">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" propertySortChoices="true"
+ ecoreFeature="ecore:EReference UML.ecore#//Deployment/deployedArtifact"/>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Deployment/configuration">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Deployment/location">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="UML.ecore#//DeployedArtifact"/>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//DeploymentSpecification">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//DeploymentSpecification/deploymentLocation"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//DeploymentSpecification/executionLocation"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//DeploymentSpecification/deployment">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//DeploymentSpecification/deployed_elements">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//DeploymentSpecification/deployed_elements/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//DeploymentSpecification/deployed_elements/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//DeploymentSpecification/deployment_target">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//DeploymentSpecification/deployment_target/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//DeploymentSpecification/deployment_target/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//Artifact">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//Artifact/fileName"/>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Artifact/nestedArtifact">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Artifact/manifestation">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Artifact/ownedOperation">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Artifact/ownedAttribute">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Artifact/createOwnedOperation">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Artifact/createOwnedOperation/name"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Artifact/createOwnedOperation/parameterNames"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Artifact/createOwnedOperation/parameterTypes"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Artifact/createOwnedOperation/returnType"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Artifact/createOwnedAttribute">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Artifact/createOwnedAttribute/name"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Artifact/createOwnedAttribute/type"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Artifact/createOwnedAttribute/lower"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Artifact/createOwnedAttribute/upper"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//Manifestation">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" propertySortChoices="true"
+ ecoreFeature="ecore:EReference UML.ecore#//Manifestation/utilizedElement"
+ key="true"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//Operation">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Operation/interface">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Operation/class">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//Operation/isQuery"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//Operation/isOrdered.1"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//Operation/isUnique.1"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//Operation/lower"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//Operation/upper"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="true" propertySortChoices="true"
+ ecoreFeature="ecore:EReference UML.ecore#//Operation/precondition"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="true" propertySortChoices="true"
+ ecoreFeature="ecore:EReference UML.ecore#//Operation/postcondition"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Operation/redefinedOperation"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Operation/datatype">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="true" propertySortChoices="true"
+ ecoreFeature="ecore:EReference UML.ecore#//Operation/bodyCondition"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Operation/type"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Operation/at_most_one_return">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Operation/at_most_one_return/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Operation/at_most_one_return/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Operation/only_body_for_query">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Operation/only_body_for_query/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Operation/only_body_for_query/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Operation/getLower"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Operation/getUpper"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Operation/setIsOrdered">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Operation/setIsOrdered/newIsOrdered"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Operation/setIsUnique">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Operation/setIsUnique/newIsUnique"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Operation/setLower">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Operation/setLower/newLower"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Operation/setType">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Operation/setType/newType"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Operation/setUpper">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Operation/setUpper/newUpper"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Operation/getReturnResult"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Operation/isOrdered"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Operation/isUnique"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Operation/lowerBound"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Operation/upperBound"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Operation/getType"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Operation/returnResult"
+ cacheAdapterScope="Global"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="UML.ecore#//BehavioralFeature">
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//BehavioralFeature/ownedParameter"
+ key="true">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//BehavioralFeature/isAbstract"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//BehavioralFeature/method"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//BehavioralFeature/concurrency"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//BehavioralFeature/raisedException"/>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//BehavioralFeature/ownedParameterSet">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//BehavioralFeature/createReturnResult">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//BehavioralFeature/createReturnResult/name"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//BehavioralFeature/createReturnResult/type"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="UML.ecore#//Behavior">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//Behavior/isReentrant"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Behavior/redefinedBehavior"/>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Behavior/ownedParameter">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" property="Readonly" notify="false"
+ createChild="false" ecoreFeature="ecore:EReference UML.ecore#//Behavior/context">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" property="None" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Behavior/precondition"/>
+ <genFeatures xsi:type="genmodel:GenFeature" property="None" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Behavior/postcondition"/>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Behavior/ownedParameterSet">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Behavior/specification"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Behavior/parameters_match">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Behavior/parameters_match/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Behavior/parameters_match/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Behavior/feature_of_context_classifier">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Behavior/feature_of_context_classifier/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Behavior/feature_of_context_classifier/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Behavior/must_realize">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Behavior/must_realize/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Behavior/must_realize/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Behavior/most_one_behaviour">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Behavior/most_one_behaviour/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Behavior/most_one_behaviour/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Behavior/getContext"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//Class">
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Class/nestedClassifier">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Class/ownedOperation">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Class/superClass">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//Class/isActive"/>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Class/ownedReception">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" property="Readonly" notify="false"
+ createChild="false" ecoreFeature="ecore:EReference UML.ecore#//Class/extension">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Class/passive_class">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Class/passive_class/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Class/passive_class/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Class/getExtensions"
+ cacheAdapterScope="Global"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Class/createOwnedOperation">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Class/createOwnedOperation/name"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Class/createOwnedOperation/parameterNames"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Class/createOwnedOperation/parameterTypes"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Class/createOwnedOperation/returnType"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Class/isMetaclass"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="UML.ecore#//BehavioredClassifier">
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//BehavioredClassifier/ownedBehavior">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="true" propertySortChoices="true"
+ ecoreFeature="ecore:EReference UML.ecore#//BehavioredClassifier/classifierBehavior"/>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//BehavioredClassifier/interfaceRealization">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//BehavioredClassifier/ownedTrigger">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//BehavioredClassifier/class_behavior">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//BehavioredClassifier/class_behavior/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//BehavioredClassifier/class_behavior/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//BehavioredClassifier/getImplementedInterfaces"
+ cacheAdapterScope="Global"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//BehavioredClassifier/getAllImplementedInterfaces"
+ cacheAdapterScope="Global"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//InterfaceRealization">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" propertySortChoices="true"
+ ecoreFeature="ecore:EReference UML.ecore#//InterfaceRealization/contract"
+ key="true"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//InterfaceRealization/implementingClassifier">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//Interface">
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Interface/ownedAttribute">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Interface/ownedOperation">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Interface/nestedClassifier">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Interface/redefinedInterface"/>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Interface/ownedReception">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Interface/protocol">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Interface/visibility">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Interface/visibility/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Interface/visibility/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Interface/createOwnedOperation">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Interface/createOwnedOperation/name"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Interface/createOwnedOperation/parameterNames"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Interface/createOwnedOperation/parameterTypes"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Interface/createOwnedOperation/returnType"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Interface/createOwnedAttribute">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Interface/createOwnedAttribute/name"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Interface/createOwnedAttribute/type"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Interface/createOwnedAttribute/lower"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Interface/createOwnedAttribute/upper"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//Reception">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Reception/signal"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Reception/not_query">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Reception/not_query/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Reception/not_query/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//Signal">
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Signal/ownedAttribute">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Signal/createOwnedAttribute">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Signal/createOwnedAttribute/name"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Signal/createOwnedAttribute/type"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Signal/createOwnedAttribute/lower"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Signal/createOwnedAttribute/upper"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//ProtocolStateMachine">
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ProtocolStateMachine/conformance">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ProtocolStateMachine/protocol_transitions">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ProtocolStateMachine/protocol_transitions/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ProtocolStateMachine/protocol_transitions/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ProtocolStateMachine/entry_exit_do">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ProtocolStateMachine/entry_exit_do/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ProtocolStateMachine/entry_exit_do/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ProtocolStateMachine/deep_or_shallow_history">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ProtocolStateMachine/deep_or_shallow_history/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ProtocolStateMachine/deep_or_shallow_history/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ProtocolStateMachine/ports_connected">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ProtocolStateMachine/ports_connected/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ProtocolStateMachine/ports_connected/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//StateMachine">
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//StateMachine/region">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//StateMachine/submachineState"/>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//StateMachine/connectionPoint">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//StateMachine/extendedStateMachine"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//StateMachine/classifier_context">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//StateMachine/classifier_context/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//StateMachine/classifier_context/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//StateMachine/context_classifier">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//StateMachine/context_classifier/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//StateMachine/context_classifier/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//StateMachine/connection_points">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//StateMachine/connection_points/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//StateMachine/connection_points/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//StateMachine/method">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//StateMachine/method/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//StateMachine/method/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//StateMachine/LCA">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//StateMachine/LCA/s1"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//StateMachine/LCA/s2"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//StateMachine/ancestor">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//StateMachine/ancestor/s1"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//StateMachine/ancestor/s2"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//StateMachine/isRedefinitionContextValid">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//StateMachine/isRedefinitionContextValid/redefined"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//Region">
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Region/subvertex">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Region/transition">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Region/state">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Region/extendedRegion"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Region/stateMachine">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Region/initial_vertex">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Region/initial_vertex/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Region/initial_vertex/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Region/deep_history_vertex">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Region/deep_history_vertex/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Region/deep_history_vertex/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Region/shallow_history_vertex">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Region/shallow_history_vertex/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Region/shallow_history_vertex/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Region/owned">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Region/owned/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Region/owned/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Region/redefinitionContext"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Region/isRedefinitionContextValid">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Region/isRedefinitionContextValid/redefined"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Region/containingStateMachine"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Region/belongsToPSM"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="UML.ecore#//Vertex">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Vertex/outgoing"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Vertex/incoming"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Vertex/container">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Vertex/containingStateMachine"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Vertex/getOutgoings"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Vertex/getIncomings"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//Transition">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//Transition/kind"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Transition/container">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Transition/source"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Transition/target"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Transition/redefinedTransition"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="true" propertySortChoices="true"
+ ecoreFeature="ecore:EReference UML.ecore#//Transition/guard">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Transition/effect">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Transition/trigger">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Transition/fork_segment_guards">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Transition/fork_segment_guards/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Transition/fork_segment_guards/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Transition/join_segment_guards">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Transition/join_segment_guards/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Transition/join_segment_guards/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Transition/fork_segment_state">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Transition/fork_segment_state/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Transition/fork_segment_state/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Transition/join_segment_state">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Transition/join_segment_state/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Transition/join_segment_state/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Transition/outgoing_pseudostates">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Transition/outgoing_pseudostates/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Transition/outgoing_pseudostates/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Transition/initial_transition">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Transition/initial_transition/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Transition/initial_transition/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Transition/signatures_compatible">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Transition/signatures_compatible/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Transition/signatures_compatible/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Transition/redefinitionContext"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Transition/containingStateMachine"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//Trigger">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Trigger/event"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Trigger/port"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="UML.ecore#//Event"/>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//Port">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//Port/isBehavior"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//Port/isService"/>
+ <genFeatures xsi:type="genmodel:GenFeature" property="Readonly" notify="false"
+ createChild="false" ecoreFeature="ecore:EReference UML.ecore#//Port/required">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Port/redefinedPort"/>
+ <genFeatures xsi:type="genmodel:GenFeature" property="Readonly" notify="false"
+ createChild="false" ecoreFeature="ecore:EReference UML.ecore#//Port/provided">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Port/protocol"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Port/required_interfaces">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Port/required_interfaces/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Port/required_interfaces/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Port/port_aggregation">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Port/port_aggregation/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Port/port_aggregation/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Port/port_destroyed">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Port/port_destroyed/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Port/port_destroyed/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Port/default_value">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Port/default_value/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Port/default_value/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Port/getProvideds"
+ cacheAdapterScope="Global"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Port/getRequireds"
+ cacheAdapterScope="Global"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//State">
+ <genFeatures xsi:type="genmodel:GenFeature" property="Readonly" createChild="false"
+ ecoreFeature="ecore:EAttribute UML.ecore#//State/isComposite.1">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" property="Readonly" createChild="false"
+ ecoreFeature="ecore:EAttribute UML.ecore#//State/isOrthogonal.1">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" property="Readonly" createChild="false"
+ ecoreFeature="ecore:EAttribute UML.ecore#//State/isSimple.1">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" property="Readonly" createChild="false"
+ ecoreFeature="ecore:EAttribute UML.ecore#//State/isSubmachineState.1">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//State/submachine"/>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//State/connection">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//State/connectionPoint">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//State/redefinedState"/>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//State/stateInvariant">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//State/entry">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//State/exit">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//State/doActivity">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//State/deferrableTrigger">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//State/region">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//State/submachine_states">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//State/submachine_states/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//State/submachine_states/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//State/destinations_or_sources_of_transitions">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//State/destinations_or_sources_of_transitions/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//State/destinations_or_sources_of_transitions/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//State/submachine_or_regions">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//State/submachine_or_regions/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//State/submachine_or_regions/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//State/composite_states">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//State/composite_states/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//State/composite_states/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//State/entry_or_exit">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//State/entry_or_exit/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//State/entry_or_exit/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//State/isSimple"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//State/isComposite"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//State/isOrthogonal"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//State/isSubmachineState"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//State/redefinitionContext"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//State/isRedefinitionContextValid">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//State/isRedefinitionContextValid/redefined"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//ConnectionPointReference">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ConnectionPointReference/entry"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ConnectionPointReference/exit"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ConnectionPointReference/state">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ConnectionPointReference/entry_pseudostates">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ConnectionPointReference/entry_pseudostates/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ConnectionPointReference/entry_pseudostates/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ConnectionPointReference/exit_pseudostates">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ConnectionPointReference/exit_pseudostates/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ConnectionPointReference/exit_pseudostates/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//Pseudostate">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//Pseudostate/kind"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Pseudostate/stateMachine">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Pseudostate/state">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Pseudostate/initial_vertex">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Pseudostate/initial_vertex/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Pseudostate/initial_vertex/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Pseudostate/history_vertices">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Pseudostate/history_vertices/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Pseudostate/history_vertices/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Pseudostate/join_vertex">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Pseudostate/join_vertex/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Pseudostate/join_vertex/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Pseudostate/transitions_incoming">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Pseudostate/transitions_incoming/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Pseudostate/transitions_incoming/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Pseudostate/fork_vertex">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Pseudostate/fork_vertex/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Pseudostate/fork_vertex/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Pseudostate/transitions_outgoing">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Pseudostate/transitions_outgoing/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Pseudostate/transitions_outgoing/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Pseudostate/junction_vertex">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Pseudostate/junction_vertex/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Pseudostate/junction_vertex/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Pseudostate/choice_vertex">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Pseudostate/choice_vertex/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Pseudostate/choice_vertex/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Pseudostate/outgoing_from_initial">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Pseudostate/outgoing_from_initial/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Pseudostate/outgoing_from_initial/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//ProtocolConformance">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ProtocolConformance/generalMachine"
+ key="true"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ProtocolConformance/specificMachine">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="UML.ecore#//EncapsulatedClassifier">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="true" propertySortChoices="true"
+ ecoreFeature="ecore:EReference UML.ecore#//EncapsulatedClassifier/ownedPort"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="UML.ecore#//StructuredClassifier">
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//StructuredClassifier/ownedAttribute">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" property="Readonly" notify="false"
+ createChild="false" ecoreFeature="ecore:EReference UML.ecore#//StructuredClassifier/part">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" property="Readonly" notify="false"
+ createChild="false" ecoreFeature="ecore:EReference UML.ecore#//StructuredClassifier/role">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//StructuredClassifier/ownedConnector">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//StructuredClassifier/multiplicities">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//StructuredClassifier/multiplicities/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//StructuredClassifier/multiplicities/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//StructuredClassifier/createOwnedAttribute">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//StructuredClassifier/createOwnedAttribute/name"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//StructuredClassifier/createOwnedAttribute/type"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//StructuredClassifier/createOwnedAttribute/lower"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//StructuredClassifier/createOwnedAttribute/upper"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//Connector">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Connector/type"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Connector/redefinedConnector"/>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Connector/end">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//Connector/kind"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Connector/contract"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Connector/types">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Connector/types/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Connector/types/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Connector/compatible">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Connector/compatible/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Connector/compatible/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Connector/roles">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Connector/roles/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Connector/roles/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Connector/between_interfaces_ports">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Connector/between_interfaces_ports/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Connector/between_interfaces_ports/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Connector/between_interface_port_implements">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Connector/between_interface_port_implements/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Connector/between_interface_port_implements/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Connector/between_interface_port_signature">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Connector/between_interface_port_signature/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Connector/between_interface_port_signature/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Connector/union_signature_compatible">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Connector/union_signature_compatible/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Connector/union_signature_compatible/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Connector/assembly_connector">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Connector/assembly_connector/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Connector/assembly_connector/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//Extension">
+ <genFeatures xsi:type="genmodel:GenFeature" property="Readonly" createChild="false"
+ ecoreFeature="ecore:EAttribute UML.ecore#//Extension/isRequired.1">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" property="Readonly" notify="false"
+ createChild="false" ecoreFeature="ecore:EReference UML.ecore#//Extension/metaclass">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Extension/non_owned_end">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Extension/non_owned_end/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Extension/non_owned_end/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Extension/is_binary">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Extension/is_binary/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Extension/is_binary/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Extension/getStereotypeEnd"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Extension/getStereotype"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Extension/metaclassEnd"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Extension/getMetaclass"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Extension/isRequired"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//ExtensionEnd">
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ExtensionEnd/multiplicity">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ExtensionEnd/multiplicity/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ExtensionEnd/multiplicity/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ExtensionEnd/aggregation">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ExtensionEnd/aggregation/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ExtensionEnd/aggregation/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//Stereotype">
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Stereotype/icon"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Stereotype/name_not_clash">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Stereotype/name_not_clash/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Stereotype/name_not_clash/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Stereotype/generalize">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Stereotype/generalize/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Stereotype/generalize/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Stereotype/createExtension">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Stereotype/createExtension/metaclass"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Stereotype/createExtension/isRequired"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Stereotype/getProfile"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Stereotype/getKeyword"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Stereotype/getKeyword.1">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Stereotype/getKeyword.1/localize"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Stereotype/getExtendedMetaclasses"
+ cacheAdapterScope="Global"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Stereotype/getAllExtendedMetaclasses"
+ cacheAdapterScope="Global"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Stereotype/getDefinition"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Stereotype/createIcon">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Stereotype/createIcon/location"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Stereotype/createIcon.1">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Stereotype/createIcon.1/format"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Stereotype/createIcon.1/content"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//Image" labelFeature="#//uml/Image/format">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//Image/content"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//Image/location"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//Image/format"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//Profile">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="true" propertySortChoices="true"
+ ecoreFeature="ecore:EReference UML.ecore#//Profile/ownedStereotype"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="true" propertySortChoices="true"
+ ecoreFeature="ecore:EReference UML.ecore#//Profile/metaclassReference"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="true" propertySortChoices="true"
+ ecoreFeature="ecore:EReference UML.ecore#//Profile/metamodelReference"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Profile/metaclass_reference_not_specialized">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Profile/metaclass_reference_not_specialized/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Profile/metaclass_reference_not_specialized/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Profile/references_same_metamodel">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Profile/references_same_metamodel/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Profile/references_same_metamodel/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Profile/create">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Profile/create/classifier"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Profile/createOwnedStereotype">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Profile/createOwnedStereotype/name"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Profile/createOwnedStereotype/isAbstract"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Profile/isDefined"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Profile/define"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Profile/define.1">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Profile/define.1/options"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Profile/define.1/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Profile/define.1/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Profile/getDefinition"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Profile/getDefinition.1">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Profile/getDefinition.1/namedElement"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Profile/getReferencedMetaclasses"
+ cacheAdapterScope="Global"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Profile/getReferencedMetamodels"
+ cacheAdapterScope="Global"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Profile/getOwnedExtensions">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Profile/getOwnedExtensions/requiredOnly"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//Model">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//Model/viewpoint"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Model/isMetamodel"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//ParameterSet">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" propertySortChoices="true"
+ ecoreFeature="ecore:EReference UML.ecore#//ParameterSet/parameter"/>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ParameterSet/condition">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ParameterSet/same_parameterized_entity">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ParameterSet/same_parameterized_entity/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ParameterSet/same_parameterized_entity/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ParameterSet/input">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ParameterSet/input/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ParameterSet/input/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ParameterSet/two_parameter_sets">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ParameterSet/two_parameter_sets/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ParameterSet/two_parameter_sets/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//DataType">
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//DataType/ownedAttribute">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//DataType/ownedOperation">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//DataType/createOwnedOperation">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//DataType/createOwnedOperation/name"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//DataType/createOwnedOperation/parameterNames"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//DataType/createOwnedOperation/parameterTypes"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//DataType/createOwnedOperation/returnType"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//DataType/createOwnedAttribute">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//DataType/createOwnedAttribute/name"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//DataType/createOwnedAttribute/type"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//DataType/createOwnedAttribute/lower"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//DataType/createOwnedAttribute/upper"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//OperationTemplateParameter"/>
+ <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="UML.ecore#//StructuralFeature">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//StructuralFeature/isReadOnly"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//ConnectableElementTemplateParameter"/>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//CollaborationUse">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//CollaborationUse/type"/>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//CollaborationUse/roleBinding">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//CollaborationUse/client_elements">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//CollaborationUse/client_elements/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//CollaborationUse/client_elements/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//CollaborationUse/every_role">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//CollaborationUse/every_role/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//CollaborationUse/every_role/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//CollaborationUse/connectors">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//CollaborationUse/connectors/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//CollaborationUse/connectors/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//Collaboration">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Collaboration/collaborationRole"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//UseCase">
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//UseCase/include">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//UseCase/extend">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//UseCase/extensionPoint">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//UseCase/subject"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//UseCase/must_have_name">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//UseCase/must_have_name/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//UseCase/must_have_name/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//UseCase/binary_associations">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//UseCase/binary_associations/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//UseCase/binary_associations/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//UseCase/no_association_to_use_case">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//UseCase/no_association_to_use_case/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//UseCase/no_association_to_use_case/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//UseCase/cannot_include_self">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//UseCase/cannot_include_self/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//UseCase/cannot_include_self/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//UseCase/allIncludedUseCases"
+ cacheAdapterScope="Global"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//Include">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" propertySortChoices="true"
+ ecoreFeature="ecore:EReference UML.ecore#//Include/addition" key="true"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Include/includingCase">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//Extend">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" propertySortChoices="true"
+ ecoreFeature="ecore:EReference UML.ecore#//Extend/extendedCase" key="true"/>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Extend/condition">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Extend/extensionLocation"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Extend/extension">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Extend/extension_points">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Extend/extension_points/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Extend/extension_points/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//ExtensionPoint">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ExtensionPoint/useCase">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ExtensionPoint/must_have_name">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ExtensionPoint/must_have_name/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ExtensionPoint/must_have_name/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//RedefinableTemplateSignature">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//RedefinableTemplateSignature/extendedSignature"/>
+ <genFeatures xsi:type="genmodel:GenFeature" property="Readonly" notify="false"
+ createChild="false" ecoreFeature="ecore:EReference UML.ecore#//RedefinableTemplateSignature/inheritedParameter">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ ecoreFeature="ecore:EReference UML.ecore#//RedefinableTemplateSignature/classifier">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//RedefinableTemplateSignature/inherited_parameters">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//RedefinableTemplateSignature/inherited_parameters/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//RedefinableTemplateSignature/inherited_parameters/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//RedefinableTemplateSignature/getInheritedParameters"
+ cacheAdapterScope="Global"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//ClassifierTemplateParameter">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//ClassifierTemplateParameter/allowSubstitutable"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ClassifierTemplateParameter/constrainingClassifier"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ClassifierTemplateParameter/has_constraining_classifier">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ClassifierTemplateParameter/has_constraining_classifier/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ClassifierTemplateParameter/has_constraining_classifier/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//StringExpression">
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//StringExpression/subExpression">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//StringExpression/owningExpression">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//StringExpression/operands">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//StringExpression/operands/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//StringExpression/operands/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//StringExpression/subexpressions">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//StringExpression/subexpressions/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//StringExpression/subexpressions/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//Expression">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//Expression/symbol"/>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Expression/operand">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//Usage"/>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//PackageMerge">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" propertySortChoices="true"
+ ecoreFeature="ecore:EReference UML.ecore#//PackageMerge/mergedPackage" key="true"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//PackageMerge/receivingPackage">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//ProfileApplication">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" propertySortChoices="true"
+ ecoreFeature="ecore:EReference UML.ecore#//ProfileApplication/appliedProfile"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//ProfileApplication/isStrict"/>
+ <genFeatures xsi:type="genmodel:GenFeature" property="None" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ProfileApplication/applyingPackage"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ProfileApplication/getAppliedDefinition"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ProfileApplication/getAppliedDefinition.1">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ProfileApplication/getAppliedDefinition.1/namedElement"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//Enumeration">
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Enumeration/ownedLiteral">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//EnumerationLiteral">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//EnumerationLiteral/enumeration">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//InstanceSpecification">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//InstanceSpecification/classifier"/>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//InstanceSpecification/slot">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//InstanceSpecification/specification">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//InstanceSpecification/defining_feature">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//InstanceSpecification/defining_feature/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//InstanceSpecification/defining_feature/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//InstanceSpecification/structural_feature">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//InstanceSpecification/structural_feature/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//InstanceSpecification/structural_feature/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//InstanceSpecification/deployment_target">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//InstanceSpecification/deployment_target/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//InstanceSpecification/deployment_target/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//InstanceSpecification/deployment_artifact">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//InstanceSpecification/deployment_artifact/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//InstanceSpecification/deployment_artifact/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//Slot">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" propertySortChoices="true"
+ ecoreFeature="ecore:EReference UML.ecore#//Slot/definingFeature"/>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Slot/value">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Slot/owningInstance">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//PrimitiveType"/>
+ <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="UML.ecore#//LiteralSpecification"/>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//LiteralInteger">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//LiteralInteger/value"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//LiteralString">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//LiteralString/value"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//LiteralBoolean">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//LiteralBoolean/value"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//LiteralNull"/>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//InstanceValue">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//InstanceValue/instance"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//LiteralUnlimitedNatural">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//LiteralUnlimitedNatural/value"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//OpaqueBehavior">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" propertyMultiLine="true"
+ ecoreFeature="ecore:EAttribute UML.ecore#//OpaqueBehavior/body"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//OpaqueBehavior/language"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//FunctionBehavior">
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//FunctionBehavior/one_output_parameter">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//FunctionBehavior/one_output_parameter/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//FunctionBehavior/one_output_parameter/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//FunctionBehavior/types_of_parameters">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//FunctionBehavior/types_of_parameters/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//FunctionBehavior/types_of_parameters/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//OpaqueAction">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" propertyMultiLine="true"
+ ecoreFeature="ecore:EAttribute UML.ecore#//OpaqueAction/body"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//OpaqueAction/language"/>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//OpaqueAction/inputValue">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//OpaqueAction/outputValue">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="UML.ecore#//Action">
+ <genFeatures xsi:type="genmodel:GenFeature" property="Readonly" notify="false"
+ createChild="false" ecoreFeature="ecore:EReference UML.ecore#//Action/output">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" property="Readonly" notify="false"
+ createChild="false" ecoreFeature="ecore:EReference UML.ecore#//Action/input">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" property="Readonly" notify="false"
+ createChild="false" ecoreFeature="ecore:EReference UML.ecore#//Action/context">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Action/localPrecondition">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Action/localPostcondition">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="UML.ecore#//ExecutableNode">
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ExecutableNode/handler">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="UML.ecore#//ActivityNode">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ActivityNode/inStructuredNode">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ActivityNode/activity">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ActivityNode/outgoing"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ActivityNode/incoming"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ActivityNode/inPartition"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ActivityNode/inInterruptibleRegion"/>
+ <genFeatures xsi:type="genmodel:GenFeature" property="Readonly" notify="false"
+ createChild="false" ecoreFeature="ecore:EReference UML.ecore#//ActivityNode/inGroup">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ActivityNode/redefinedNode"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ActivityNode/owned_structured_node">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ActivityNode/owned_structured_node/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ActivityNode/owned_structured_node/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ActivityNode/owned">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ActivityNode/owned/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ActivityNode/owned/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//StructuredActivityNode">
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//StructuredActivityNode/variable">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//StructuredActivityNode/edge">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//StructuredActivityNode/mustIsolate"/>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//StructuredActivityNode/node">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//StructuredActivityNode/edges">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//StructuredActivityNode/edges/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//StructuredActivityNode/edges/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="UML.ecore#//ActivityGroup">
+ <genFeatures xsi:type="genmodel:GenFeature" property="Readonly" notify="false"
+ createChild="false" ecoreFeature="ecore:EReference UML.ecore#//ActivityGroup/subgroup">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" property="Readonly" notify="false"
+ createChild="false" ecoreFeature="ecore:EReference UML.ecore#//ActivityGroup/superGroup">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ActivityGroup/inActivity">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" property="Readonly" notify="false"
+ createChild="false" ecoreFeature="ecore:EReference UML.ecore#//ActivityGroup/containedEdge">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" property="Readonly" notify="false"
+ createChild="false" ecoreFeature="ecore:EReference UML.ecore#//ActivityGroup/containedNode">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ActivityGroup/nodes_and_edges">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ActivityGroup/nodes_and_edges/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ActivityGroup/nodes_and_edges/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ActivityGroup/not_contained">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ActivityGroup/not_contained/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ActivityGroup/not_contained/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ActivityGroup/group_owned">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ActivityGroup/group_owned/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ActivityGroup/group_owned/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//Activity">
+ <genFeatures xsi:type="genmodel:GenFeature" property="Readonly" notify="false"
+ createChild="false" ecoreFeature="ecore:EReference UML.ecore#//Activity/structuredNode">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Activity/variable">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Activity/node">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//Activity/isReadOnly"/>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Activity/edge">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="true" propertySortChoices="true"
+ ecoreFeature="ecore:EReference UML.ecore#//Activity/partition"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//Activity/isSingleExecution"/>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Activity/group">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Activity/no_supergroups">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Activity/no_supergroups/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Activity/no_supergroups/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Activity/activity_parameter_node">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Activity/activity_parameter_node/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Activity/activity_parameter_node/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Activity/autonomous">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Activity/autonomous/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Activity/autonomous/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//Variable">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Variable/scope">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Variable/activityScope">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Variable/owned">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Variable/owned/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Variable/owned/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Variable/isAccessibleBy">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Variable/isAccessibleBy/a"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="UML.ecore#//ActivityEdge">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ActivityEdge/source"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ActivityEdge/target"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ActivityEdge/redefinedEdge"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ActivityEdge/inPartition"/>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ActivityEdge/guard">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ActivityEdge/weight">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ActivityEdge/interrupts"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ActivityEdge/inStructuredNode">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" property="Readonly" notify="false"
+ createChild="false" ecoreFeature="ecore:EReference UML.ecore#//ActivityEdge/inGroup">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ActivityEdge/activity">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ActivityEdge/source_and_target">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ActivityEdge/source_and_target/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ActivityEdge/source_and_target/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ActivityEdge/owned">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ActivityEdge/owned/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ActivityEdge/owned/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ActivityEdge/structured_node">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ActivityEdge/structured_node/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ActivityEdge/structured_node/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//ActivityPartition">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//ActivityPartition/isDimension"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//ActivityPartition/isExternal"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ActivityPartition/node"/>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ActivityPartition/subpartition">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ActivityPartition/superPartition">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ActivityPartition/represents"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ActivityPartition/edge"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ActivityPartition/dimension_not_contained">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ActivityPartition/dimension_not_contained/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ActivityPartition/dimension_not_contained/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ActivityPartition/represents_part">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ActivityPartition/represents_part/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ActivityPartition/represents_part/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ActivityPartition/represents_classifier">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ActivityPartition/represents_classifier/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ActivityPartition/represents_classifier/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ActivityPartition/represents_part_and_is_contained">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ActivityPartition/represents_part_and_is_contained/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ActivityPartition/represents_part_and_is_contained/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//InterruptibleActivityRegion">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//InterruptibleActivityRegion/node"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//InterruptibleActivityRegion/interruptingEdge"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//InterruptibleActivityRegion/interrupting_edges">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//InterruptibleActivityRegion/interrupting_edges/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//InterruptibleActivityRegion/interrupting_edges/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//ExceptionHandler">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ExceptionHandler/handlerBody"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ExceptionHandler/exceptionInput"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ExceptionHandler/exceptionType"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ExceptionHandler/protectedNode">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ExceptionHandler/exception_body">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ExceptionHandler/exception_body/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ExceptionHandler/exception_body/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ExceptionHandler/result_pins">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ExceptionHandler/result_pins/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ExceptionHandler/result_pins/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ExceptionHandler/one_input">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ExceptionHandler/one_input/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ExceptionHandler/one_input/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ExceptionHandler/edge_source_target">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ExceptionHandler/edge_source_target/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ExceptionHandler/edge_source_target/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="UML.ecore#//ObjectNode">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//ObjectNode/ordering"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//ObjectNode/isControlType"/>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ObjectNode/upperBound">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ObjectNode/inState"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ObjectNode/selection"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ObjectNode/object_flow_edges">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ObjectNode/object_flow_edges/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ObjectNode/object_flow_edges/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ObjectNode/not_unique">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ObjectNode/not_unique/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ObjectNode/not_unique/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ObjectNode/selection_behavior">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ObjectNode/selection_behavior/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ObjectNode/selection_behavior/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ObjectNode/input_output_parameter">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ObjectNode/input_output_parameter/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ObjectNode/input_output_parameter/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//OutputPin">
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//OutputPin/incoming_edges_structured_only">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//OutputPin/incoming_edges_structured_only/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//OutputPin/incoming_edges_structured_only/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//Pin">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//Pin/isControl"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Pin/control_pins">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Pin/control_pins/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Pin/control_pins/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//InputPin">
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//InputPin/outgoing_edges_structured_only">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//InputPin/outgoing_edges_structured_only/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//InputPin/outgoing_edges_structured_only/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="UML.ecore#//CallAction">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//CallAction/isSynchronous"/>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//CallAction/result">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//CallAction/synchronous_call">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//CallAction/synchronous_call/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//CallAction/synchronous_call/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//CallAction/number_and_order">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//CallAction/number_and_order/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//CallAction/number_and_order/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//CallAction/type_ordering_multiplicity">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//CallAction/type_ordering_multiplicity/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//CallAction/type_ordering_multiplicity/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="UML.ecore#//InvocationAction">
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//InvocationAction/argument">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//InvocationAction/onPort"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//InvocationAction/on_port_receiver">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//InvocationAction/on_port_receiver/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//InvocationAction/on_port_receiver/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//SendSignalAction">
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//SendSignalAction/target">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//SendSignalAction/signal"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//SendSignalAction/number_order">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//SendSignalAction/number_order/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//SendSignalAction/number_order/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//SendSignalAction/type_ordering_multiplicity">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//SendSignalAction/type_ordering_multiplicity/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//SendSignalAction/type_ordering_multiplicity/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//CallOperationAction">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//CallOperationAction/operation"/>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//CallOperationAction/target">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//CallOperationAction/argument_pin_equal_parameter">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//CallOperationAction/argument_pin_equal_parameter/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//CallOperationAction/argument_pin_equal_parameter/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//CallOperationAction/result_pin_equal_parameter">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//CallOperationAction/result_pin_equal_parameter/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//CallOperationAction/result_pin_equal_parameter/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//CallOperationAction/type_target_pin">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//CallOperationAction/type_target_pin/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//CallOperationAction/type_target_pin/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//CallBehaviorAction">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//CallBehaviorAction/behavior"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//CallBehaviorAction/argument_pin_equal_parameter">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//CallBehaviorAction/argument_pin_equal_parameter/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//CallBehaviorAction/argument_pin_equal_parameter/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//CallBehaviorAction/result_pin_equal_parameter">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//CallBehaviorAction/result_pin_equal_parameter/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//CallBehaviorAction/result_pin_equal_parameter/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//SequenceNode">
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//SequenceNode/executableNode">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="UML.ecore#//ControlNode"/>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//ControlFlow">
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ControlFlow/object_nodes">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ControlFlow/object_nodes/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ControlFlow/object_nodes/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//InitialNode">
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//InitialNode/no_incoming_edges">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//InitialNode/no_incoming_edges/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//InitialNode/no_incoming_edges/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//InitialNode/control_edges">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//InitialNode/control_edges/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//InitialNode/control_edges/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//ActivityParameterNode">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ActivityParameterNode/parameter"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ActivityParameterNode/has_parameters">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ActivityParameterNode/has_parameters/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ActivityParameterNode/has_parameters/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ActivityParameterNode/same_type">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ActivityParameterNode/same_type/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ActivityParameterNode/same_type/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ActivityParameterNode/no_edges">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ActivityParameterNode/no_edges/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ActivityParameterNode/no_edges/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ActivityParameterNode/no_incoming_edges">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ActivityParameterNode/no_incoming_edges/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ActivityParameterNode/no_incoming_edges/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ActivityParameterNode/no_outgoing_edges">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ActivityParameterNode/no_outgoing_edges/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ActivityParameterNode/no_outgoing_edges/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ActivityParameterNode/maximum_one_parameter_node">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ActivityParameterNode/maximum_one_parameter_node/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ActivityParameterNode/maximum_one_parameter_node/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ActivityParameterNode/maximum_two_parameter_nodes">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ActivityParameterNode/maximum_two_parameter_nodes/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ActivityParameterNode/maximum_two_parameter_nodes/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//ValuePin">
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ValuePin/value">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ValuePin/compatible_type">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ValuePin/compatible_type/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ValuePin/compatible_type/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ValuePin/no_incoming_edges">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ValuePin/no_incoming_edges/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ValuePin/no_incoming_edges/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//Message">
+ <genFeatures xsi:type="genmodel:GenFeature" property="Readonly" createChild="false"
+ ecoreFeature="ecore:EAttribute UML.ecore#//Message/messageKind">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//Message/messageSort"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Message/receiveEvent"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Message/sendEvent"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Message/connector"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Message/interaction">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Message/argument">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" property="Readonly" notify="false"
+ createChild="false" ecoreFeature="ecore:EReference UML.ecore#//Message/signature">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Message/sending_receiving_message_event">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Message/sending_receiving_message_event/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Message/sending_receiving_message_event/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Message/signature_refer_to">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Message/signature_refer_to/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Message/signature_refer_to/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Message/signature_is_operation">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Message/signature_is_operation/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Message/signature_is_operation/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Message/signature_is_signal">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Message/signature_is_signal/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Message/signature_is_signal/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Message/arguments">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Message/arguments/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Message/arguments/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Message/cannot_cross_boundaries">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Message/cannot_cross_boundaries/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Message/cannot_cross_boundaries/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Message/occurrence_specifications">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Message/occurrence_specifications/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Message/occurrence_specifications/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Message/getMessageKind"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Message/getSignature"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="UML.ecore#//MessageEnd">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//MessageEnd/message"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//Interaction">
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Interaction/lifeline">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Interaction/fragment">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Interaction/action">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Interaction/formalGate">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Interaction/message">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="UML.ecore#//InteractionFragment">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//InteractionFragment/covered"/>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//InteractionFragment/generalOrdering">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//InteractionFragment/enclosingInteraction">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//InteractionFragment/enclosingOperand">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//Lifeline">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Lifeline/represents"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Lifeline/interaction">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Lifeline/selector">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Lifeline/decomposedAs"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Lifeline/coveredBy"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Lifeline/interaction_uses_share_lifeline">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Lifeline/interaction_uses_share_lifeline/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Lifeline/interaction_uses_share_lifeline/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Lifeline/selector_specified">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Lifeline/selector_specified/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Lifeline/selector_specified/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Lifeline/same_classifier">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Lifeline/same_classifier/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Lifeline/same_classifier/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//PartDecomposition">
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//PartDecomposition/parts_of_internal_structures">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//PartDecomposition/parts_of_internal_structures/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//PartDecomposition/parts_of_internal_structures/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//PartDecomposition/assume">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//PartDecomposition/assume/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//PartDecomposition/assume/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//PartDecomposition/commutativity_of_decomposition">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//PartDecomposition/commutativity_of_decomposition/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//PartDecomposition/commutativity_of_decomposition/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//InteractionUse">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//InteractionUse/refersTo"/>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//InteractionUse/actualGate">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//InteractionUse/argument">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//InteractionUse/gates_match">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//InteractionUse/gates_match/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//InteractionUse/gates_match/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//InteractionUse/all_lifelines">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//InteractionUse/all_lifelines/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//InteractionUse/all_lifelines/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//InteractionUse/arguments_correspond_to_parameters">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//InteractionUse/arguments_correspond_to_parameters/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//InteractionUse/arguments_correspond_to_parameters/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//InteractionUse/arguments_are_constants">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//InteractionUse/arguments_are_constants/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//InteractionUse/arguments_are_constants/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//Gate">
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Gate/messages_actual_gate">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Gate/messages_actual_gate/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Gate/messages_actual_gate/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Gate/messages_combined_fragment">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Gate/messages_combined_fragment/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Gate/messages_combined_fragment/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//GeneralOrdering">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//GeneralOrdering/before"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//GeneralOrdering/after"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//OccurrenceSpecification">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//OccurrenceSpecification/toBefore"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//OccurrenceSpecification/event"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//OccurrenceSpecification/toAfter"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//InteractionOperand">
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//InteractionOperand/guard">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//InteractionOperand/fragment">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//InteractionOperand/guard_directly_prior">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//InteractionOperand/guard_directly_prior/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//InteractionOperand/guard_directly_prior/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//InteractionOperand/guard_contain_references">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//InteractionOperand/guard_contain_references/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//InteractionOperand/guard_contain_references/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//InteractionConstraint">
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//InteractionConstraint/minint">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//InteractionConstraint/maxint">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//InteractionConstraint/dynamic_variables">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//InteractionConstraint/dynamic_variables/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//InteractionConstraint/dynamic_variables/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//InteractionConstraint/global_data">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//InteractionConstraint/global_data/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//InteractionConstraint/global_data/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//InteractionConstraint/minint_maxint">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//InteractionConstraint/minint_maxint/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//InteractionConstraint/minint_maxint/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//InteractionConstraint/minint_non_negative">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//InteractionConstraint/minint_non_negative/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//InteractionConstraint/minint_non_negative/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//InteractionConstraint/maxint_positive">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//InteractionConstraint/maxint_positive/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//InteractionConstraint/maxint_positive/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//InteractionConstraint/maxint_greater_equal_minint">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//InteractionConstraint/maxint_greater_equal_minint/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//InteractionConstraint/maxint_greater_equal_minint/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="UML.ecore#//ExecutionSpecification">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ExecutionSpecification/start"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ExecutionSpecification/finish"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ExecutionSpecification/same_lifeline">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ExecutionSpecification/same_lifeline/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ExecutionSpecification/same_lifeline/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//StateInvariant">
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//StateInvariant/invariant">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//ActionExecutionSpecification">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ActionExecutionSpecification/action"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ActionExecutionSpecification/action_referenced">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ActionExecutionSpecification/action_referenced/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ActionExecutionSpecification/action_referenced/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//BehaviorExecutionSpecification">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//BehaviorExecutionSpecification/behavior"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//ExecutionEvent"/>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//CreationEvent">
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//CreationEvent/no_occurrence_above">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//CreationEvent/no_occurrence_above/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//CreationEvent/no_occurrence_above/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//DestructionEvent">
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//DestructionEvent/no_occurrence_specifications_below">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//DestructionEvent/no_occurrence_specifications_below/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//DestructionEvent/no_occurrence_specifications_below/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//SendOperationEvent">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//SendOperationEvent/operation"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="UML.ecore#//MessageEvent"/>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//SendSignalEvent">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//SendSignalEvent/signal"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//MessageOccurrenceSpecification"/>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//ExecutionOccurrenceSpecification">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ExecutionOccurrenceSpecification/execution"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//ReceiveOperationEvent">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ReceiveOperationEvent/operation"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//ReceiveSignalEvent">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ReceiveSignalEvent/signal"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//Actor">
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Actor/associations">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Actor/associations/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Actor/associations/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Actor/must_have_name">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Actor/must_have_name/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Actor/must_have_name/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//CallEvent">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//CallEvent/operation"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//ChangeEvent">
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ChangeEvent/changeExpression">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//SignalEvent">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//SignalEvent/signal"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//AnyReceiveEvent"/>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//ForkNode">
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ForkNode/one_incoming_edge">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ForkNode/one_incoming_edge/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ForkNode/one_incoming_edge/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ForkNode/edges">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ForkNode/edges/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ForkNode/edges/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//FlowFinalNode"/>
+ <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="UML.ecore#//FinalNode">
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//FinalNode/no_outgoing_edges">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//FinalNode/no_outgoing_edges/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//FinalNode/no_outgoing_edges/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//CentralBufferNode"/>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//MergeNode">
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//MergeNode/one_outgoing_edge">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//MergeNode/one_outgoing_edge/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//MergeNode/one_outgoing_edge/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//MergeNode/edges">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//MergeNode/edges/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//MergeNode/edges/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//DecisionNode">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//DecisionNode/decisionInput"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//DecisionNode/decisionInputFlow"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//DecisionNode/incoming_outgoing_edges">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//DecisionNode/incoming_outgoing_edges/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//DecisionNode/incoming_outgoing_edges/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//DecisionNode/edges">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//DecisionNode/edges/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//DecisionNode/edges/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//DecisionNode/decision_input_flow_incoming">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//DecisionNode/decision_input_flow_incoming/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//DecisionNode/decision_input_flow_incoming/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//DecisionNode/parameters">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//DecisionNode/parameters/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//DecisionNode/parameters/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//DecisionNode/zero_input_parameters">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//DecisionNode/zero_input_parameters/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//DecisionNode/zero_input_parameters/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//DecisionNode/incoming_object_one_input_parameter">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//DecisionNode/incoming_object_one_input_parameter/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//DecisionNode/incoming_object_one_input_parameter/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//DecisionNode/incoming_control_one_input_parameter">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//DecisionNode/incoming_control_one_input_parameter/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//DecisionNode/incoming_control_one_input_parameter/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//DecisionNode/two_input_parameters">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//DecisionNode/two_input_parameters/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//DecisionNode/two_input_parameters/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//ObjectFlow">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//ObjectFlow/isMulticast"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//ObjectFlow/isMultireceive"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ObjectFlow/transformation"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ObjectFlow/selection"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ObjectFlow/no_actions">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ObjectFlow/no_actions/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ObjectFlow/no_actions/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ObjectFlow/compatible_types">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ObjectFlow/compatible_types/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ObjectFlow/compatible_types/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ObjectFlow/same_upper_bounds">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ObjectFlow/same_upper_bounds/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ObjectFlow/same_upper_bounds/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ObjectFlow/target">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ObjectFlow/target/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ObjectFlow/target/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ObjectFlow/transformation_behaviour">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ObjectFlow/transformation_behaviour/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ObjectFlow/transformation_behaviour/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ObjectFlow/selection_behaviour">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ObjectFlow/selection_behaviour/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ObjectFlow/selection_behaviour/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ObjectFlow/input_and_output_parameter">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ObjectFlow/input_and_output_parameter/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ObjectFlow/input_and_output_parameter/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ObjectFlow/is_multicast_or_is_multireceive">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ObjectFlow/is_multicast_or_is_multireceive/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ObjectFlow/is_multicast_or_is_multireceive/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//ActivityFinalNode"/>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//ComponentRealization">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ComponentRealization/abstraction">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" propertySortChoices="true"
+ ecoreFeature="ecore:EReference UML.ecore#//ComponentRealization/realizingClassifier"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//Component">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//Component/isIndirectlyInstantiated"/>
+ <genFeatures xsi:type="genmodel:GenFeature" property="Readonly" notify="false"
+ createChild="false" ecoreFeature="ecore:EReference UML.ecore#//Component/required">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" property="Readonly" notify="false"
+ createChild="false" ecoreFeature="ecore:EReference UML.ecore#//Component/provided">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Component/packagedElement">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Component/realization">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Component/createOwnedClass">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Component/createOwnedClass/name"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Component/createOwnedClass/isAbstract"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Component/createOwnedEnumeration">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Component/createOwnedEnumeration/name"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Component/createOwnedPrimitiveType">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Component/createOwnedPrimitiveType/name"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Component/createOwnedInterface">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Component/createOwnedInterface/name"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Component/realizedInterfaces">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Component/realizedInterfaces/classifier"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Component/usedInterfaces">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Component/usedInterfaces/classifier"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Component/getRequireds"
+ cacheAdapterScope="Global"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Component/getProvideds"
+ cacheAdapterScope="Global"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//Node">
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Node/nestedNode">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Node/internal_structure">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Node/internal_structure/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Node/internal_structure/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Node/createCommunicationPath">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Node/createCommunicationPath/end1IsNavigable"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Node/createCommunicationPath/end1Aggregation"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Node/createCommunicationPath/end1Name"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Node/createCommunicationPath/end1Lower"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Node/createCommunicationPath/end1Upper"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Node/createCommunicationPath/end1Node"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Node/createCommunicationPath/end2IsNavigable"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Node/createCommunicationPath/end2Aggregation"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Node/createCommunicationPath/end2Name"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Node/createCommunicationPath/end2Lower"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Node/createCommunicationPath/end2Upper"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Node/getCommunicationPaths"
+ cacheAdapterScope="Global"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//CommunicationPath"/>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//Device"/>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//ExecutionEnvironment"/>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//CombinedFragment">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//CombinedFragment/interactionOperator"/>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//CombinedFragment/operand">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//CombinedFragment/cfragmentGate">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//CombinedFragment/opt_loop_break_neg">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//CombinedFragment/opt_loop_break_neg/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//CombinedFragment/opt_loop_break_neg/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//CombinedFragment/minint_and_maxint">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//CombinedFragment/minint_and_maxint/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//CombinedFragment/minint_and_maxint/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//CombinedFragment/break">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//CombinedFragment/break/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//CombinedFragment/break/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//CombinedFragment/consider_and_ignore">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//CombinedFragment/consider_and_ignore/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//CombinedFragment/consider_and_ignore/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//Continuation">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//Continuation/setting"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Continuation/same_name">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Continuation/same_name/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Continuation/same_name/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Continuation/global">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Continuation/global/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Continuation/global/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Continuation/first_or_last_interaction_fragment">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Continuation/first_or_last_interaction_fragment/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Continuation/first_or_last_interaction_fragment/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//ConsiderIgnoreFragment">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ConsiderIgnoreFragment/message"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ConsiderIgnoreFragment/consider_or_ignore">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ConsiderIgnoreFragment/consider_or_ignore/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ConsiderIgnoreFragment/consider_or_ignore/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ConsiderIgnoreFragment/type">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ConsiderIgnoreFragment/type/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ConsiderIgnoreFragment/type/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//CreateObjectAction">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//CreateObjectAction/classifier"/>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//CreateObjectAction/result">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//CreateObjectAction/classifier_not_abstract">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//CreateObjectAction/classifier_not_abstract/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//CreateObjectAction/classifier_not_abstract/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//CreateObjectAction/classifier_not_association_class">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//CreateObjectAction/classifier_not_association_class/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//CreateObjectAction/classifier_not_association_class/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//CreateObjectAction/same_type">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//CreateObjectAction/same_type/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//CreateObjectAction/same_type/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//CreateObjectAction/multiplicity">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//CreateObjectAction/multiplicity/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//CreateObjectAction/multiplicity/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//DestroyObjectAction">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//DestroyObjectAction/isDestroyLinks"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//DestroyObjectAction/isDestroyOwnedObjects"/>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//DestroyObjectAction/target">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//DestroyObjectAction/multiplicity">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//DestroyObjectAction/multiplicity/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//DestroyObjectAction/multiplicity/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//DestroyObjectAction/no_type">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//DestroyObjectAction/no_type/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//DestroyObjectAction/no_type/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//TestIdentityAction">
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//TestIdentityAction/first">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//TestIdentityAction/second">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//TestIdentityAction/result">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//TestIdentityAction/no_type">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//TestIdentityAction/no_type/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//TestIdentityAction/no_type/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//TestIdentityAction/multiplicity">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//TestIdentityAction/multiplicity/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//TestIdentityAction/multiplicity/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//TestIdentityAction/result_is_boolean">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//TestIdentityAction/result_is_boolean/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//TestIdentityAction/result_is_boolean/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//ReadSelfAction">
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ReadSelfAction/result">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ReadSelfAction/contained">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReadSelfAction/contained/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReadSelfAction/contained/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ReadSelfAction/not_static">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReadSelfAction/not_static/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReadSelfAction/not_static/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ReadSelfAction/type">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReadSelfAction/type/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReadSelfAction/type/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ReadSelfAction/multiplicity">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReadSelfAction/multiplicity/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReadSelfAction/multiplicity/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="UML.ecore#//StructuralFeatureAction">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//StructuralFeatureAction/structuralFeature"/>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//StructuralFeatureAction/object">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//StructuralFeatureAction/not_static">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//StructuralFeatureAction/not_static/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//StructuralFeatureAction/not_static/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//StructuralFeatureAction/same_type">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//StructuralFeatureAction/same_type/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//StructuralFeatureAction/same_type/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//StructuralFeatureAction/multiplicity">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//StructuralFeatureAction/multiplicity/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//StructuralFeatureAction/multiplicity/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//StructuralFeatureAction/visibility">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//StructuralFeatureAction/visibility/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//StructuralFeatureAction/visibility/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//StructuralFeatureAction/one_featuring_classifier">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//StructuralFeatureAction/one_featuring_classifier/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//StructuralFeatureAction/one_featuring_classifier/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//ReadStructuralFeatureAction">
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ReadStructuralFeatureAction/result">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ReadStructuralFeatureAction/type_and_ordering">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReadStructuralFeatureAction/type_and_ordering/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReadStructuralFeatureAction/type_and_ordering/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="UML.ecore#//WriteStructuralFeatureAction">
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//WriteStructuralFeatureAction/value">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+ createChild="true" ecoreFeature="ecore:EReference UML.ecore#//WriteStructuralFeatureAction/result"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//WriteStructuralFeatureAction/input_pin">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//WriteStructuralFeatureAction/input_pin/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//WriteStructuralFeatureAction/input_pin/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//WriteStructuralFeatureAction/type_of_result">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//WriteStructuralFeatureAction/type_of_result/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//WriteStructuralFeatureAction/type_of_result/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//WriteStructuralFeatureAction/multiplicity_of_result">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//WriteStructuralFeatureAction/multiplicity_of_result/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//WriteStructuralFeatureAction/multiplicity_of_result/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//ClearStructuralFeatureAction">
+ <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+ createChild="true" ecoreFeature="ecore:EReference UML.ecore#//ClearStructuralFeatureAction/result"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ClearStructuralFeatureAction/type_of_result">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ClearStructuralFeatureAction/type_of_result/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ClearStructuralFeatureAction/type_of_result/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ClearStructuralFeatureAction/multiplicity_of_result">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ClearStructuralFeatureAction/multiplicity_of_result/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ClearStructuralFeatureAction/multiplicity_of_result/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//RemoveStructuralFeatureValueAction">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//RemoveStructuralFeatureValueAction/isRemoveDuplicates"/>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//RemoveStructuralFeatureValueAction/removeAt">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//RemoveStructuralFeatureValueAction/non_unique_removal">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//RemoveStructuralFeatureValueAction/non_unique_removal/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//RemoveStructuralFeatureValueAction/non_unique_removal/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//AddStructuralFeatureValueAction">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//AddStructuralFeatureValueAction/isReplaceAll"/>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//AddStructuralFeatureValueAction/insertAt">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//AddStructuralFeatureValueAction/unlimited_natural_and_multiplicity">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//AddStructuralFeatureValueAction/unlimited_natural_and_multiplicity/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//AddStructuralFeatureValueAction/unlimited_natural_and_multiplicity/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="UML.ecore#//LinkAction">
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//LinkAction/endData">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//LinkAction/inputValue">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//LinkAction/same_association">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//LinkAction/same_association/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//LinkAction/same_association/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//LinkAction/not_static">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//LinkAction/not_static/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//LinkAction/not_static/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//LinkAction/same_pins">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//LinkAction/same_pins/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//LinkAction/same_pins/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//LinkAction/association"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//LinkEndData">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//LinkEndData/value"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//LinkEndData/end"/>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//LinkEndData/qualifier">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//LinkEndData/property_is_association_end">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//LinkEndData/property_is_association_end/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//LinkEndData/property_is_association_end/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//LinkEndData/same_type">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//LinkEndData/same_type/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//LinkEndData/same_type/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//LinkEndData/multiplicity">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//LinkEndData/multiplicity/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//LinkEndData/multiplicity/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//LinkEndData/qualifiers">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//LinkEndData/qualifiers/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//LinkEndData/qualifiers/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//LinkEndData/end_object_input_pin">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//LinkEndData/end_object_input_pin/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//LinkEndData/end_object_input_pin/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//QualifierValue">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//QualifierValue/qualifier"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//QualifierValue/value"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//QualifierValue/qualifier_attribute">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//QualifierValue/qualifier_attribute/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//QualifierValue/qualifier_attribute/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//QualifierValue/type_of_qualifier">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//QualifierValue/type_of_qualifier/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//QualifierValue/type_of_qualifier/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//QualifierValue/multiplicity_of_qualifier">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//QualifierValue/multiplicity_of_qualifier/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//QualifierValue/multiplicity_of_qualifier/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//ReadLinkAction">
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ReadLinkAction/result">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ReadLinkAction/one_open_end">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReadLinkAction/one_open_end/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReadLinkAction/one_open_end/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ReadLinkAction/type_and_ordering">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReadLinkAction/type_and_ordering/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReadLinkAction/type_and_ordering/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ReadLinkAction/compatible_multiplicity">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReadLinkAction/compatible_multiplicity/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReadLinkAction/compatible_multiplicity/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ReadLinkAction/navigable_open_end">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReadLinkAction/navigable_open_end/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReadLinkAction/navigable_open_end/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ReadLinkAction/visibility">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReadLinkAction/visibility/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReadLinkAction/visibility/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//LinkEndCreationData">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//LinkEndCreationData/isReplaceAll"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//LinkEndCreationData/insertAt"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//LinkEndCreationData/create_link_action">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//LinkEndCreationData/create_link_action/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//LinkEndCreationData/create_link_action/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//LinkEndCreationData/single_input_pin">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//LinkEndCreationData/single_input_pin/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//LinkEndCreationData/single_input_pin/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//CreateLinkAction">
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//CreateLinkAction/association_not_abstract">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//CreateLinkAction/association_not_abstract/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//CreateLinkAction/association_not_abstract/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="UML.ecore#//WriteLinkAction">
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//WriteLinkAction/allow_access">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//WriteLinkAction/allow_access/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//WriteLinkAction/allow_access/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//DestroyLinkAction"/>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//LinkEndDestructionData">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//LinkEndDestructionData/isDestroyDuplicates"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//LinkEndDestructionData/destroyAt"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//LinkEndDestructionData/destroy_link_action">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//LinkEndDestructionData/destroy_link_action/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//LinkEndDestructionData/destroy_link_action/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//LinkEndDestructionData/unlimited_natural_and_multiplicity">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//LinkEndDestructionData/unlimited_natural_and_multiplicity/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//LinkEndDestructionData/unlimited_natural_and_multiplicity/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//ClearAssociationAction">
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ClearAssociationAction/object">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ClearAssociationAction/association"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ClearAssociationAction/same_type">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ClearAssociationAction/same_type/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ClearAssociationAction/same_type/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ClearAssociationAction/multiplicity">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ClearAssociationAction/multiplicity/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ClearAssociationAction/multiplicity/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//BroadcastSignalAction">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//BroadcastSignalAction/signal"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//BroadcastSignalAction/number_and_order">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//BroadcastSignalAction/number_and_order/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//BroadcastSignalAction/number_and_order/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//BroadcastSignalAction/type_ordering_multiplicity">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//BroadcastSignalAction/type_ordering_multiplicity/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//BroadcastSignalAction/type_ordering_multiplicity/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//SendObjectAction">
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//SendObjectAction/target">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//SendObjectAction/request">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//ValueSpecificationAction">
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ValueSpecificationAction/value">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ValueSpecificationAction/result">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ValueSpecificationAction/compatible_type">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ValueSpecificationAction/compatible_type/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ValueSpecificationAction/compatible_type/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ValueSpecificationAction/multiplicity">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ValueSpecificationAction/multiplicity/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ValueSpecificationAction/multiplicity/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//TimeExpression">
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//TimeExpression/expr"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//TimeExpression/observation"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="UML.ecore#//Observation"/>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//Duration">
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Duration/expr"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Duration/observation"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//DurationInterval"/>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//Interval">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" propertySortChoices="true"
+ ecoreFeature="ecore:EReference UML.ecore#//Interval/min"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" propertySortChoices="true"
+ ecoreFeature="ecore:EReference UML.ecore#//Interval/max"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//TimeConstraint">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//TimeConstraint/firstEvent"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//IntervalConstraint"/>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//TimeInterval"/>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//DurationConstraint">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//DurationConstraint/firstEvent"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//DurationConstraint/first_event_multiplicity">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//DurationConstraint/first_event_multiplicity/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//DurationConstraint/first_event_multiplicity/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//TimeObservation">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//TimeObservation/event"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//TimeObservation/firstEvent"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//DurationObservation">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//DurationObservation/event"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//DurationObservation/firstEvent"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//DurationObservation/first_event_multiplicity">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//DurationObservation/first_event_multiplicity/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//DurationObservation/first_event_multiplicity/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//FinalState">
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//FinalState/no_outgoing_transitions">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//FinalState/no_outgoing_transitions/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//FinalState/no_outgoing_transitions/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//FinalState/no_regions">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//FinalState/no_regions/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//FinalState/no_regions/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//FinalState/cannot_reference_submachine">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//FinalState/cannot_reference_submachine/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//FinalState/cannot_reference_submachine/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//FinalState/no_entry_behavior">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//FinalState/no_entry_behavior/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//FinalState/no_entry_behavior/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//FinalState/no_exit_behavior">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//FinalState/no_exit_behavior/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//FinalState/no_exit_behavior/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//FinalState/no_state_behavior">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//FinalState/no_state_behavior/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//FinalState/no_state_behavior/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//TimeEvent">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//TimeEvent/isRelative"/>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//TimeEvent/when">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//TimeEvent/when_non_negative">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//TimeEvent/when_non_negative/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//TimeEvent/when_non_negative/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//TimeEvent/starting_time">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//TimeEvent/starting_time/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//TimeEvent/starting_time/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="UML.ecore#//VariableAction">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//VariableAction/variable"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//VariableAction/scope_of_variable">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//VariableAction/scope_of_variable/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//VariableAction/scope_of_variable/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//ReadVariableAction">
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ReadVariableAction/result">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ReadVariableAction/type_and_ordering">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReadVariableAction/type_and_ordering/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReadVariableAction/type_and_ordering/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ReadVariableAction/compatible_multiplicity">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReadVariableAction/compatible_multiplicity/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReadVariableAction/compatible_multiplicity/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="UML.ecore#//WriteVariableAction">
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//WriteVariableAction/value">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//WriteVariableAction/same_type">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//WriteVariableAction/same_type/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//WriteVariableAction/same_type/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//WriteVariableAction/multiplicity">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//WriteVariableAction/multiplicity/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//WriteVariableAction/multiplicity/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//ClearVariableAction"/>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//AddVariableValueAction">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//AddVariableValueAction/isReplaceAll"/>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//AddVariableValueAction/insertAt">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//AddVariableValueAction/single_input_pin">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//AddVariableValueAction/single_input_pin/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//AddVariableValueAction/single_input_pin/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//RemoveVariableValueAction">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//RemoveVariableValueAction/isRemoveDuplicates"/>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//RemoveVariableValueAction/removeAt">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//RemoveVariableValueAction/unlimited_natural">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//RemoveVariableValueAction/unlimited_natural/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//RemoveVariableValueAction/unlimited_natural/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//RaiseExceptionAction">
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//RaiseExceptionAction/exception">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//ActionInputPin">
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ActionInputPin/fromAction">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ActionInputPin/one_output_pin">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ActionInputPin/one_output_pin/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ActionInputPin/one_output_pin/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ActionInputPin/input_pin">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ActionInputPin/input_pin/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ActionInputPin/input_pin/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ActionInputPin/no_control_or_data_flow">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ActionInputPin/no_control_or_data_flow/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ActionInputPin/no_control_or_data_flow/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//InformationItem">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//InformationItem/represented"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//InformationItem/sources_and_targets">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//InformationItem/sources_and_targets/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//InformationItem/sources_and_targets/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//InformationItem/has_no">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//InformationItem/has_no/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//InformationItem/has_no/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//InformationItem/not_instantiable">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//InformationItem/not_instantiable/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//InformationItem/not_instantiable/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//InformationFlow">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//InformationFlow/realization"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//InformationFlow/conveyed"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//InformationFlow/informationSource"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//InformationFlow/informationTarget"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//InformationFlow/realizingActivityEdge"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//InformationFlow/realizingConnector"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//InformationFlow/realizingMessage"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//InformationFlow/sources_and_targets_kind">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//InformationFlow/sources_and_targets_kind/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//InformationFlow/sources_and_targets_kind/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//InformationFlow/must_conform">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//InformationFlow/must_conform/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//InformationFlow/must_conform/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//InformationFlow/convey_classifiers">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//InformationFlow/convey_classifiers/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//InformationFlow/convey_classifiers/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//ReadExtentAction">
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ReadExtentAction/result">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ReadExtentAction/classifier"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ReadExtentAction/type_is_classifier">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReadExtentAction/type_is_classifier/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReadExtentAction/type_is_classifier/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ReadExtentAction/multiplicity_of_result">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReadExtentAction/multiplicity_of_result/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReadExtentAction/multiplicity_of_result/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//ReclassifyObjectAction">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//ReclassifyObjectAction/isReplaceAll"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ReclassifyObjectAction/oldClassifier"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ReclassifyObjectAction/newClassifier"/>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ReclassifyObjectAction/object">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ReclassifyObjectAction/classifier_not_abstract">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReclassifyObjectAction/classifier_not_abstract/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReclassifyObjectAction/classifier_not_abstract/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ReclassifyObjectAction/multiplicity">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReclassifyObjectAction/multiplicity/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReclassifyObjectAction/multiplicity/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ReclassifyObjectAction/input_pin">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReclassifyObjectAction/input_pin/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReclassifyObjectAction/input_pin/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//ReadIsClassifiedObjectAction">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//ReadIsClassifiedObjectAction/isDirect"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ReadIsClassifiedObjectAction/classifier"/>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ReadIsClassifiedObjectAction/result">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ReadIsClassifiedObjectAction/object">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ReadIsClassifiedObjectAction/multiplicity_of_input">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReadIsClassifiedObjectAction/multiplicity_of_input/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReadIsClassifiedObjectAction/multiplicity_of_input/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ReadIsClassifiedObjectAction/no_type">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReadIsClassifiedObjectAction/no_type/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReadIsClassifiedObjectAction/no_type/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ReadIsClassifiedObjectAction/multiplicity_of_output">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReadIsClassifiedObjectAction/multiplicity_of_output/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReadIsClassifiedObjectAction/multiplicity_of_output/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ReadIsClassifiedObjectAction/boolean_result">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReadIsClassifiedObjectAction/boolean_result/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReadIsClassifiedObjectAction/boolean_result/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//StartClassifierBehaviorAction">
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//StartClassifierBehaviorAction/object">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//StartClassifierBehaviorAction/multiplicity">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//StartClassifierBehaviorAction/multiplicity/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//StartClassifierBehaviorAction/multiplicity/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//StartClassifierBehaviorAction/type_has_classifier">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//StartClassifierBehaviorAction/type_has_classifier/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//StartClassifierBehaviorAction/type_has_classifier/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//ReadLinkObjectEndAction">
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ReadLinkObjectEndAction/object">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ReadLinkObjectEndAction/end"/>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ReadLinkObjectEndAction/result">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ReadLinkObjectEndAction/property">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReadLinkObjectEndAction/property/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReadLinkObjectEndAction/property/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ReadLinkObjectEndAction/association_of_association">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReadLinkObjectEndAction/association_of_association/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReadLinkObjectEndAction/association_of_association/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ReadLinkObjectEndAction/ends_of_association">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReadLinkObjectEndAction/ends_of_association/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReadLinkObjectEndAction/ends_of_association/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ReadLinkObjectEndAction/type_of_object">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReadLinkObjectEndAction/type_of_object/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReadLinkObjectEndAction/type_of_object/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ReadLinkObjectEndAction/multiplicity_of_object">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReadLinkObjectEndAction/multiplicity_of_object/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReadLinkObjectEndAction/multiplicity_of_object/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ReadLinkObjectEndAction/type_of_result">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReadLinkObjectEndAction/type_of_result/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReadLinkObjectEndAction/type_of_result/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ReadLinkObjectEndAction/multiplicity_of_result">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReadLinkObjectEndAction/multiplicity_of_result/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReadLinkObjectEndAction/multiplicity_of_result/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//ReadLinkObjectEndQualifierAction">
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ReadLinkObjectEndQualifierAction/object">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ReadLinkObjectEndQualifierAction/result">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ReadLinkObjectEndQualifierAction/qualifier"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ReadLinkObjectEndQualifierAction/qualifier_attribute">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReadLinkObjectEndQualifierAction/qualifier_attribute/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReadLinkObjectEndQualifierAction/qualifier_attribute/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ReadLinkObjectEndQualifierAction/association_of_association">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReadLinkObjectEndQualifierAction/association_of_association/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReadLinkObjectEndQualifierAction/association_of_association/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ReadLinkObjectEndQualifierAction/ends_of_association">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReadLinkObjectEndQualifierAction/ends_of_association/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReadLinkObjectEndQualifierAction/ends_of_association/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ReadLinkObjectEndQualifierAction/type_of_object">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReadLinkObjectEndQualifierAction/type_of_object/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReadLinkObjectEndQualifierAction/type_of_object/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ReadLinkObjectEndQualifierAction/multiplicity_of_qualifier">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReadLinkObjectEndQualifierAction/multiplicity_of_qualifier/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReadLinkObjectEndQualifierAction/multiplicity_of_qualifier/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ReadLinkObjectEndQualifierAction/multiplicity_of_object">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReadLinkObjectEndQualifierAction/multiplicity_of_object/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReadLinkObjectEndQualifierAction/multiplicity_of_object/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ReadLinkObjectEndQualifierAction/same_type">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReadLinkObjectEndQualifierAction/same_type/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReadLinkObjectEndQualifierAction/same_type/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ReadLinkObjectEndQualifierAction/multiplicity_of_result">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReadLinkObjectEndQualifierAction/multiplicity_of_result/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReadLinkObjectEndQualifierAction/multiplicity_of_result/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//CreateLinkObjectAction">
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//CreateLinkObjectAction/result">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//CreateLinkObjectAction/association_class">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//CreateLinkObjectAction/association_class/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//CreateLinkObjectAction/association_class/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//CreateLinkObjectAction/type_of_result">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//CreateLinkObjectAction/type_of_result/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//CreateLinkObjectAction/type_of_result/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//CreateLinkObjectAction/multiplicity">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//CreateLinkObjectAction/multiplicity/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//CreateLinkObjectAction/multiplicity/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//AcceptEventAction">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//AcceptEventAction/isUnmarshall"/>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//AcceptEventAction/result">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//AcceptEventAction/trigger">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//AcceptEventAction/no_input_pins">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//AcceptEventAction/no_input_pins/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//AcceptEventAction/no_input_pins/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//AcceptEventAction/no_output_pins">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//AcceptEventAction/no_output_pins/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//AcceptEventAction/no_output_pins/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//AcceptEventAction/trigger_events">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//AcceptEventAction/trigger_events/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//AcceptEventAction/trigger_events/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//AcceptEventAction/unmarshall_signal_events">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//AcceptEventAction/unmarshall_signal_events/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//AcceptEventAction/unmarshall_signal_events/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//AcceptCallAction">
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//AcceptCallAction/returnInformation">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//AcceptCallAction/result_pins">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//AcceptCallAction/result_pins/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//AcceptCallAction/result_pins/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//AcceptCallAction/trigger_call_event">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//AcceptCallAction/trigger_call_event/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//AcceptCallAction/trigger_call_event/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//AcceptCallAction/unmarshall">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//AcceptCallAction/unmarshall/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//AcceptCallAction/unmarshall/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//ReplyAction">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ReplyAction/replyToCall"/>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ReplyAction/returnInformation">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ReplyAction/replyValue">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ReplyAction/pins_match_parameter">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReplyAction/pins_match_parameter/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReplyAction/pins_match_parameter/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ReplyAction/event_on_reply_to_call_trigger">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReplyAction/event_on_reply_to_call_trigger/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReplyAction/event_on_reply_to_call_trigger/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//UnmarshallAction">
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//UnmarshallAction/result">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//UnmarshallAction/unmarshallType"/>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//UnmarshallAction/object">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//UnmarshallAction/same_type">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//UnmarshallAction/same_type/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//UnmarshallAction/same_type/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//UnmarshallAction/multiplicity_of_object">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//UnmarshallAction/multiplicity_of_object/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//UnmarshallAction/multiplicity_of_object/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//UnmarshallAction/number_of_result">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//UnmarshallAction/number_of_result/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//UnmarshallAction/number_of_result/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//UnmarshallAction/type_and_ordering">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//UnmarshallAction/type_and_ordering/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//UnmarshallAction/type_and_ordering/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//UnmarshallAction/multiplicity_of_result">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//UnmarshallAction/multiplicity_of_result/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//UnmarshallAction/multiplicity_of_result/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//UnmarshallAction/structural_feature">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//UnmarshallAction/structural_feature/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//UnmarshallAction/structural_feature/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//UnmarshallAction/unmarshallType_is_classifier">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//UnmarshallAction/unmarshallType_is_classifier/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//UnmarshallAction/unmarshallType_is_classifier/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//ReduceAction">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ReduceAction/reducer"/>
+ <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+ createChild="true" propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ReduceAction/result"/>
+ <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+ createChild="true" propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ReduceAction/collection"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//ReduceAction/isOrdered"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ReduceAction/input_type_is_collection">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReduceAction/input_type_is_collection/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReduceAction/input_type_is_collection/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ReduceAction/output_types_are_compatible">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReduceAction/output_types_are_compatible/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReduceAction/output_types_are_compatible/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ReduceAction/reducer_inputs_output">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReduceAction/reducer_inputs_output/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ReduceAction/reducer_inputs_output/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//StartObjectBehaviorAction">
+ <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+ createChild="true" ecoreFeature="ecore:EReference UML.ecore#//StartObjectBehaviorAction/object"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//StartObjectBehaviorAction/type_of_object">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//StartObjectBehaviorAction/type_of_object/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//StartObjectBehaviorAction/type_of_object/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//StartObjectBehaviorAction/multiplicity_of_object">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//StartObjectBehaviorAction/multiplicity_of_object/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//StartObjectBehaviorAction/multiplicity_of_object/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//StartObjectBehaviorAction/number_order_arguments">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//StartObjectBehaviorAction/number_order_arguments/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//StartObjectBehaviorAction/number_order_arguments/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//StartObjectBehaviorAction/number_order_results">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//StartObjectBehaviorAction/number_order_results/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//StartObjectBehaviorAction/number_order_results/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//StartObjectBehaviorAction/type_ordering_multiplicity_match">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//StartObjectBehaviorAction/type_ordering_multiplicity_match/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//StartObjectBehaviorAction/type_ordering_multiplicity_match/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//JoinNode">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//JoinNode/isCombineDuplicate"/>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//JoinNode/joinSpec">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//JoinNode/one_outgoing_edge">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//JoinNode/one_outgoing_edge/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//JoinNode/one_outgoing_edge/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//JoinNode/incoming_object_flow">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//JoinNode/incoming_object_flow/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//JoinNode/incoming_object_flow/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//DataStoreNode"/>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//ConditionalNode">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//ConditionalNode/isDeterminate"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//ConditionalNode/isAssured"/>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ConditionalNode/clause">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ConditionalNode/result">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ConditionalNode/result_no_incoming">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ConditionalNode/result_no_incoming/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ConditionalNode/result_no_incoming/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//Clause">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Clause/test"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Clause/body"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Clause/predecessorClause"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Clause/successorClause"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Clause/decider"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//Clause/bodyOutput"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Clause/decider_output">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Clause/decider_output/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Clause/decider_output/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//Clause/body_output_pins">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Clause/body_output_pins/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//Clause/body_output_pins/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//LoopNode">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//LoopNode/isTestedFirst"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//LoopNode/bodyPart"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//LoopNode/setupPart"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//LoopNode/decider"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//LoopNode/test"/>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//LoopNode/result">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//LoopNode/loopVariable"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//LoopNode/bodyOutput"/>
+ <genFeatures xsi:type="genmodel:GenFeature" children="true" createChild="true"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//LoopNode/loopVariableInput">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//LoopNode/input_edges">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//LoopNode/input_edges/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//LoopNode/input_edges/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//LoopNode/body_output_pins">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//LoopNode/body_output_pins/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//LoopNode/body_output_pins/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//LoopNode/result_no_incoming">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//LoopNode/result_no_incoming/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//LoopNode/result_no_incoming/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//ExpansionNode">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ExpansionNode/regionAsOutput"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ExpansionNode/regionAsInput"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//ExpansionRegion">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute UML.ecore#//ExpansionRegion/mode"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ExpansionRegion/inputElement"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ExpansionRegion/outputElement"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ExpansionRegion/expansion_nodes">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ExpansionRegion/expansion_nodes/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ExpansionRegion/expansion_nodes/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//ProtocolTransition">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="true" propertySortChoices="true"
+ ecoreFeature="ecore:EReference UML.ecore#//ProtocolTransition/postCondition">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" property="Readonly" notify="false"
+ createChild="false" ecoreFeature="ecore:EReference UML.ecore#//ProtocolTransition/referred">
+ <propertyFilterFlags>org.eclipse.ui.views.properties.expert</propertyFilterFlags>
+ </genFeatures>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference UML.ecore#//ProtocolTransition/preCondition"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ProtocolTransition/belongs_to_psm">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ProtocolTransition/belongs_to_psm/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ProtocolTransition/belongs_to_psm/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ProtocolTransition/associated_actions">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ProtocolTransition/associated_actions/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ProtocolTransition/associated_actions/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//ProtocolTransition/refers_to_operation">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ProtocolTransition/refers_to_operation/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//ProtocolTransition/refers_to_operation/context"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="UML.ecore#//AssociationClass">
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//AssociationClass/cannot_be_defined">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//AssociationClass/cannot_be_defined/diagnostics"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="UML.ecore#//AssociationClass/cannot_be_defined/context"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="UML.ecore#//AssociationClass/allConnections"
+ cacheAdapterScope="Global"/>
+ </genClasses>
+ </genPackages>
+</genmodel:GenModel>
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/plugin.properties b/plugins/marte/org.eclipse.papyrus.marte.vsl/plugin.properties
new file mode 100644
index 00000000000..54ce97478bd
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/plugin.properties
@@ -0,0 +1,12 @@
+#################################################################################
+# Copyright (c) 2010 CEA LIST.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+# Chokri MRAIDHA chokri.mraidha@cea.fr - Initial API and implementation
+##################################################################################
+pluginName = UML profile and library for MARTE (Incubation)
+providerName=Eclipse Modeling Project
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/plugin.xml b/plugins/marte/org.eclipse.papyrus.marte.vsl/plugin.xml
new file mode 100644
index 00000000000..e43e7c56f87
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/plugin.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<plugin>
+
+ <extension point="org.eclipse.emf.ecore.generated_package">
+ <package
+ uri = "http://www.eclipse.org/papyrus/marte/vsl/VSL"
+ class = "org.eclipse.papyrus.marte.vsl.vSL.VSLPackage"
+ genModel = "org/eclipse/papyrus/marte/vsl/VSL.genmodel" />
+
+ </extension>
+
+
+
+
+
+</plugin>
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/plugin.xml_gen b/plugins/marte/org.eclipse.papyrus.marte.vsl/plugin.xml_gen
new file mode 100644
index 00000000000..d1eb33fac0f
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/plugin.xml_gen
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<plugin>
+
+ <extension point="org.eclipse.emf.ecore.generated_package">
+ <package
+ uri = "http://www.eclipse.org/papyrus/marte/vsl/VSL"
+ class = "org.eclipse.papyrus.marte.vsl.vSL.VSLPackage"
+ genModel = "org/eclipse/papyrus/marte/vsl/VSL.genmodel" />
+
+ </extension>
+
+
+
+
+</plugin>
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/AbstractVSLRuntimeModule.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/AbstractVSLRuntimeModule.java
new file mode 100644
index 00000000000..872544e7773
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/AbstractVSLRuntimeModule.java
@@ -0,0 +1,117 @@
+/*
+ * generated by Xtext
+ */
+package org.eclipse.papyrus.marte.vsl;
+
+import java.util.Properties;
+
+import org.eclipse.xtext.Constants;
+import org.eclipse.xtext.service.DefaultRuntimeModule;
+
+import com.google.inject.Binder;
+import com.google.inject.name.Names;
+
+/**
+ * Manual modifications go to {org.eclipse.papyrus.marte.vsl.VSLRuntimeModule}
+ */
+ @SuppressWarnings("all")
+public abstract class AbstractVSLRuntimeModule extends DefaultRuntimeModule {
+
+ protected Properties properties = null;
+
+ @Override
+ public void configure(Binder binder) {
+ properties = tryBindProperties(binder, "org/eclipse/papyrus/marte/vsl/VSL.properties");
+ super.configure(binder);
+ }
+
+ public void configureLanguageName(Binder binder) {
+ binder.bind(String.class).annotatedWith(Names.named(Constants.LANGUAGE_NAME)).toInstance("org.eclipse.papyrus.marte.vsl.VSL");
+ }
+
+ public void configureFileExtensions(Binder binder) {
+ if (properties == null || properties.getProperty(Constants.FILE_EXTENSIONS) == null)
+ binder.bind(String.class).annotatedWith(Names.named(Constants.FILE_EXTENSIONS)).toInstance("vsl");
+ }
+
+ // contributed by org.eclipse.xtext.generator.grammarAccess.GrammarAccessFragment
+ public Class<? extends org.eclipse.xtext.IGrammarAccess> bindIGrammarAccess() {
+ return org.eclipse.papyrus.marte.vsl.services.VSLGrammarAccess.class;
+ }
+
+ // contributed by org.eclipse.xtext.generator.parseTreeConstructor.ParseTreeConstructorFragment
+ public Class<? extends org.eclipse.xtext.parsetree.reconstr.IParseTreeConstructor> bindIParseTreeConstructor() {
+ return org.eclipse.papyrus.marte.vsl.parseTreeConstruction.VSLParsetreeConstructor.class;
+ }
+
+ // contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+ public Class<? extends org.eclipse.xtext.parser.IParser> bindIParser() {
+ return org.eclipse.papyrus.marte.vsl.parser.antlr.VSLParser.class;
+ }
+
+ // contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+ public Class<? extends org.eclipse.xtext.parser.ITokenToStringConverter> bindITokenToStringConverter() {
+ return org.eclipse.xtext.parser.antlr.AntlrTokenToStringConverter.class;
+ }
+
+ // contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+ public Class<? extends org.eclipse.xtext.parser.antlr.IAntlrTokenFileProvider> bindIAntlrTokenFileProvider() {
+ return org.eclipse.papyrus.marte.vsl.parser.antlr.VSLAntlrTokenFileProvider.class;
+ }
+
+ // contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+ public Class<? extends org.eclipse.xtext.parser.antlr.Lexer> bindLexer() {
+ return org.eclipse.papyrus.marte.vsl.parser.antlr.internal.InternalVSLLexer.class;
+ }
+
+ // contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+ public com.google.inject.Provider<org.eclipse.papyrus.marte.vsl.parser.antlr.internal.InternalVSLLexer> provideInternalVSLLexer() {
+ return org.eclipse.xtext.parser.antlr.LexerProvider.create(org.eclipse.papyrus.marte.vsl.parser.antlr.internal.InternalVSLLexer.class);
+ }
+
+ // contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+ public void configureRuntimeLexer(com.google.inject.Binder binder) {
+ binder.bind(org.eclipse.xtext.parser.antlr.Lexer.class).annotatedWith(com.google.inject.name.Names.named(org.eclipse.xtext.parser.antlr.LexerBindings.RUNTIME)).to(org.eclipse.papyrus.marte.vsl.parser.antlr.internal.InternalVSLLexer.class);
+ }
+
+ // contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+ public Class<? extends org.eclipse.xtext.parser.antlr.ITokenDefProvider> bindITokenDefProvider() {
+ return org.eclipse.xtext.parser.antlr.AntlrTokenDefProvider.class;
+ }
+
+ // contributed by org.eclipse.xtext.generator.validation.JavaValidatorFragment
+ @org.eclipse.xtext.service.SingletonBinding(eager=true) public Class<? extends org.eclipse.papyrus.marte.vsl.validation.VSLJavaValidator> bindVSLJavaValidator() {
+ return org.eclipse.papyrus.marte.vsl.validation.VSLJavaValidator.class;
+ }
+
+ // contributed by org.eclipse.xtext.generator.scoping.AbstractScopingFragment
+ public Class<? extends org.eclipse.xtext.scoping.IScopeProvider> bindIScopeProvider() {
+ return org.eclipse.papyrus.marte.vsl.scoping.VSLScopeProvider.class;
+ }
+
+ // contributed by org.eclipse.xtext.generator.scoping.AbstractScopingFragment
+ public void configureIScopeProviderDelegate(com.google.inject.Binder binder) {
+ binder.bind(org.eclipse.xtext.scoping.IScopeProvider.class).annotatedWith(com.google.inject.name.Names.named(org.eclipse.xtext.scoping.impl.AbstractDeclarativeScopeProvider.NAMED_DELEGATE)).to(org.eclipse.xtext.scoping.impl.SimpleLocalScopeProvider.class);
+ }
+
+ // contributed by org.eclipse.xtext.generator.scoping.AbstractScopingFragment
+ public Class<? extends org.eclipse.xtext.scoping.IGlobalScopeProvider> bindIGlobalScopeProvider() {
+ return org.eclipse.xtext.scoping.impl.ImportUriGlobalScopeProvider.class;
+ }
+
+ // contributed by org.eclipse.xtext.generator.scoping.AbstractScopingFragment
+ public void configureIgnoreCaseLinking(com.google.inject.Binder binder) {
+ binder.bindConstant().annotatedWith(org.eclipse.xtext.scoping.IgnoreCaseLinking.class).to(false);
+ }
+
+ // contributed by org.eclipse.xtext.generator.exporting.SimpleNamesFragment
+ public Class<? extends org.eclipse.xtext.naming.IQualifiedNameProvider> bindIQualifiedNameProvider() {
+ return org.eclipse.xtext.naming.SimpleNameProvider.class;
+ }
+
+ // contributed by org.eclipse.xtext.generator.formatting.FormatterFragment
+ public Class<? extends org.eclipse.xtext.formatting.IFormatter> bindIFormatter() {
+ return org.eclipse.papyrus.marte.vsl.formatting.VSLFormatter.class;
+ }
+
+}
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore
new file mode 100644
index 00000000000..3f7ed2097e4
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore
@@ -0,0 +1,808 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="vSL"
+ nsURI="http://www.eclipse.org/papyrus/marte/vsl/VSL" nsPrefix="vSL">
+ <eClassifiers xsi:type="ecore:EClass" name="Expression" eSuperTypes="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//ValueSpecification">
+ <eOperations name="getFilteredParentRule" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EObject">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;"/>
+ </eAnnotations>
+ <eParameters name="filter" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EClass"/>
+ </eOperations>
+ <eOperations name="getExpectedType" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getContextElement" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;"/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="exp" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//AndOrXorExpression"
+ containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="AndOrXorExpression">
+ <eOperations name="getFilteredParentRule" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EObject">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;"/>
+ </eAnnotations>
+ <eParameters name="filter" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EClass"/>
+ </eOperations>
+ <eOperations name="getExpectedType" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getContextElement" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;"/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="exp" upperBound="-1" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//EqualityExpression"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="op" unique="false" upperBound="-1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="EqualityExpression">
+ <eOperations name="getFilteredParentRule" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EObject">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;"/>
+ </eAnnotations>
+ <eParameters name="filter" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EClass"/>
+ </eOperations>
+ <eOperations name="getExpectedType" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getContextElement" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;"/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="exp" upperBound="-1" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//RelationalExpression"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="op" unique="false" upperBound="-1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="RelationalExpression">
+ <eOperations name="getFilteredParentRule" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EObject">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;"/>
+ </eAnnotations>
+ <eParameters name="filter" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EClass"/>
+ </eOperations>
+ <eOperations name="getExpectedType" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getContextElement" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;"/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="exp" upperBound="-1" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//ConditionalExpression"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="op" unique="false" upperBound="-1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ConditionalExpression">
+ <eOperations name="getFilteredParentRule" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EObject">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;"/>
+ </eAnnotations>
+ <eParameters name="filter" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EClass"/>
+ </eOperations>
+ <eOperations name="getExpectedType" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getContextElement" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;"/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="exp" upperBound="-1" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//AdditiveExpression"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="op" unique="false" upperBound="-1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="AdditiveExpression">
+ <eOperations name="getFilteredParentRule" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EObject">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;"/>
+ </eAnnotations>
+ <eParameters name="filter" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EClass"/>
+ </eOperations>
+ <eOperations name="getExpectedType" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getContextElement" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;"/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="exp" upperBound="-1" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//MultiplicativeExpression"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="op" unique="false" upperBound="-1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="MultiplicativeExpression">
+ <eOperations name="getFilteredParentRule" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EObject">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;"/>
+ </eAnnotations>
+ <eParameters name="filter" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EClass"/>
+ </eOperations>
+ <eOperations name="getExpectedType" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getContextElement" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;"/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="exp" upperBound="-1" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//UnaryExpression"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="op" unique="false" upperBound="-1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="UnaryExpression">
+ <eOperations name="getFilteredParentRule" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EObject">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;"/>
+ </eAnnotations>
+ <eParameters name="filter" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EClass"/>
+ </eOperations>
+ <eOperations name="getExpectedType" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getContextElement" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;"/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="op" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="unary" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//UnaryExpression"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="exp" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//PrimaryExpression"
+ containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="PrimaryExpression">
+ <eOperations name="getFilteredParentRule" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EObject">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;"/>
+ </eAnnotations>
+ <eParameters name="filter" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EClass"/>
+ </eOperations>
+ <eOperations name="getExpectedType" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getContextElement" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;"/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="prefix" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//ValueSpecification"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="suffix" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//SuffixExpression"
+ containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ValueSpecification">
+ <eOperations name="getFilteredParentRule" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EObject">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;"/>
+ </eAnnotations>
+ <eParameters name="filter" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EClass"/>
+ </eOperations>
+ <eOperations name="getExpectedType" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getContextElement" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;"/>
+ </eAnnotations>
+ </eOperations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="SuffixExpression">
+ <eOperations name="getFilteredParentRule" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EObject">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;"/>
+ </eAnnotations>
+ <eParameters name="filter" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EClass"/>
+ </eOperations>
+ <eOperations name="getExpectedType" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getContextElement" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;"/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="suffix" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//SuffixExpression"
+ containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="PropertyCallExpression" eSuperTypes="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//SuffixExpression">
+ <eOperations name="getFilteredParentRule" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EObject">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;"/>
+ </eAnnotations>
+ <eParameters name="filter" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EClass"/>
+ </eOperations>
+ <eOperations name="getExpectedType" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getContextElement" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;"/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="property" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Property"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="OperationCallExpression" eSuperTypes="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//SuffixExpression">
+ <eOperations name="getFilteredParentRule" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EObject">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;"/>
+ </eAnnotations>
+ <eParameters name="filter" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EClass"/>
+ </eOperations>
+ <eOperations name="getExpectedType" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getContextElement" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;"/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="operation" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Operation"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="arguments" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//ListOfValues"
+ containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Literal" eSuperTypes="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//ValueSpecification">
+ <eOperations name="getFilteredParentRule" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EObject">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;"/>
+ </eAnnotations>
+ <eParameters name="filter" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EClass"/>
+ </eOperations>
+ <eOperations name="getExpectedType" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getContextElement" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;"/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="NameOrChoiceOrBehaviorCall" eSuperTypes="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//ValueSpecification">
+ <eOperations name="getFilteredParentRule" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EObject">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;"/>
+ </eAnnotations>
+ <eParameters name="filter" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EClass"/>
+ </eOperations>
+ <eOperations name="getExpectedType" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getContextElement" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;"/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="path" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//QualifiedName"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="id" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//NamedElement"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="arguments" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//ListOfValues"
+ containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="QualifiedName">
+ <eOperations name="getFilteredParentRule" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EObject">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;"/>
+ </eAnnotations>
+ <eParameters name="filter" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EClass"/>
+ </eOperations>
+ <eOperations name="getExpectedType" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getContextElement" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;"/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="path" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Namespace"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="remaining" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//QualifiedName"
+ containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Interval" eSuperTypes="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//ValueSpecification">
+ <eOperations name="getFilteredParentRule" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EObject">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;"/>
+ </eAnnotations>
+ <eParameters name="filter" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EClass"/>
+ </eOperations>
+ <eOperations name="getExpectedType" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getContextElement" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;"/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isLowerIncluded" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="lower" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//Expression"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="upper" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//Expression"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isUpperIncluded" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="CollectionOrTuple" eSuperTypes="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//ValueSpecification">
+ <eOperations name="getFilteredParentRule" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EObject">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;"/>
+ </eAnnotations>
+ <eParameters name="filter" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EClass"/>
+ </eOperations>
+ <eOperations name="getExpectedType" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getContextElement" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;"/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="listOfValues" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//ListOfValues"
+ containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Tuple" eSuperTypes="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//ValueSpecification">
+ <eOperations name="getFilteredParentRule" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EObject">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;"/>
+ </eAnnotations>
+ <eParameters name="filter" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EClass"/>
+ </eOperations>
+ <eOperations name="getExpectedType" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getContextElement" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;"/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="listOfValueNamePairs" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//ListOfValueNamePairs"
+ containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ListOfValues">
+ <eOperations name="getFilteredParentRule" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EObject">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;"/>
+ </eAnnotations>
+ <eParameters name="filter" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EClass"/>
+ </eOperations>
+ <eOperations name="getExpectedType" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getContextElement" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;"/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="values" upperBound="-1"
+ eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//Expression"
+ containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ListOfValueNamePairs">
+ <eOperations name="getFilteredParentRule" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EObject">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;"/>
+ </eAnnotations>
+ <eParameters name="filter" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EClass"/>
+ </eOperations>
+ <eOperations name="getExpectedType" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getContextElement" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;"/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="valueNamePairs" upperBound="-1"
+ eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//ValueNamePair"
+ containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ValueNamePair">
+ <eOperations name="getFilteredParentRule" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EObject">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;"/>
+ </eAnnotations>
+ <eParameters name="filter" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EClass"/>
+ </eOperations>
+ <eOperations name="getExpectedType" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getContextElement" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;"/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="property" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Property"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="value" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//Expression"
+ containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="TimeExpression" eSuperTypes="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//ValueSpecification">
+ <eOperations name="getFilteredParentRule" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EObject">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;"/>
+ </eAnnotations>
+ <eParameters name="filter" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EClass"/>
+ </eOperations>
+ <eOperations name="getExpectedType" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getContextElement" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;"/>
+ </eAnnotations>
+ </eOperations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="InstantObsExpression" eSuperTypes="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//TimeExpression">
+ <eOperations name="getFilteredParentRule" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EObject">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;"/>
+ </eAnnotations>
+ <eParameters name="filter" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EClass"/>
+ </eOperations>
+ <eOperations name="getExpectedType" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getContextElement" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;"/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="id" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//InstantObsName"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="index" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//Expression"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="condition" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//Expression"
+ containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="InstantObsName">
+ <eOperations name="getFilteredParentRule" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EObject">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;"/>
+ </eAnnotations>
+ <eParameters name="filter" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EClass"/>
+ </eOperations>
+ <eOperations name="getExpectedType" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getContextElement" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;"/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="path" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//QualifiedName"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="instantId" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//TimeObservation"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="DurationObsExpression" eSuperTypes="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//TimeExpression">
+ <eOperations name="getFilteredParentRule" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EObject">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;"/>
+ </eAnnotations>
+ <eParameters name="filter" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EClass"/>
+ </eOperations>
+ <eOperations name="getExpectedType" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getContextElement" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;"/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="id" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//DurationObsName"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="index" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//Expression"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="condition" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//Expression"
+ containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="DurationObsName">
+ <eOperations name="getFilteredParentRule" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EObject">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;"/>
+ </eAnnotations>
+ <eParameters name="filter" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EClass"/>
+ </eOperations>
+ <eOperations name="getExpectedType" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getContextElement" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;"/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="path" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//QualifiedName"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="durationId" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//DurationObservation"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="JitterExp" eSuperTypes="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//TimeExpression">
+ <eOperations name="getFilteredParentRule" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EObject">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;"/>
+ </eAnnotations>
+ <eParameters name="filter" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EClass"/>
+ </eOperations>
+ <eOperations name="getExpectedType" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getContextElement" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;"/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="firstInstant" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//InstantObsExpression"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="secondInstant" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//InstantObsExpression"
+ containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="VariableDeclaration" eSuperTypes="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//ValueSpecification">
+ <eOperations name="getFilteredParentRule" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EObject">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;"/>
+ </eAnnotations>
+ <eParameters name="filter" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EClass"/>
+ </eOperations>
+ <eOperations name="getExpectedType" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getContextElement" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;"/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="variableDeclaration" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="type" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//DataTypeName"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="initValue" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//Expression"
+ containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="DataTypeName">
+ <eOperations name="getFilteredParentRule" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EObject">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;"/>
+ </eAnnotations>
+ <eParameters name="filter" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EClass"/>
+ </eOperations>
+ <eOperations name="getExpectedType" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getContextElement" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;"/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="path" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//QualifiedName"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="type" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//DataType"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="NumberLiteralRule" eSuperTypes="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//Literal">
+ <eOperations name="getFilteredParentRule" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EObject">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;"/>
+ </eAnnotations>
+ <eParameters name="filter" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EClass"/>
+ </eOperations>
+ <eOperations name="getExpectedType" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getContextElement" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;"/>
+ </eAnnotations>
+ </eOperations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="IntegerLiteralRule" eSuperTypes="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//NumberLiteralRule">
+ <eOperations name="getFilteredParentRule" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EObject">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;"/>
+ </eAnnotations>
+ <eParameters name="filter" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EClass"/>
+ </eOperations>
+ <eOperations name="getExpectedType" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getContextElement" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;"/>
+ </eAnnotations>
+ </eOperations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="UnlimitedLiteralRule" eSuperTypes="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//NumberLiteralRule">
+ <eOperations name="getFilteredParentRule" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EObject">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;"/>
+ </eAnnotations>
+ <eParameters name="filter" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EClass"/>
+ </eOperations>
+ <eOperations name="getExpectedType" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getContextElement" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;"/>
+ </eAnnotations>
+ </eOperations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="RealLiteralRule" eSuperTypes="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//NumberLiteralRule">
+ <eOperations name="getFilteredParentRule" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EObject">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;"/>
+ </eAnnotations>
+ <eParameters name="filter" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EClass"/>
+ </eOperations>
+ <eOperations name="getExpectedType" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getContextElement" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;"/>
+ </eAnnotations>
+ </eOperations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="DateTimeLiteralRule" eSuperTypes="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//Literal">
+ <eOperations name="getFilteredParentRule" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EObject">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;"/>
+ </eAnnotations>
+ <eParameters name="filter" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EClass"/>
+ </eOperations>
+ <eOperations name="getExpectedType" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getContextElement" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;"/>
+ </eAnnotations>
+ </eOperations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="BooleanLiteralRule" eSuperTypes="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//Literal">
+ <eOperations name="getFilteredParentRule" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EObject">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;"/>
+ </eAnnotations>
+ <eParameters name="filter" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EClass"/>
+ </eOperations>
+ <eOperations name="getExpectedType" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getContextElement" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;"/>
+ </eAnnotations>
+ </eOperations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="NullLiteralRule" eSuperTypes="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//Literal">
+ <eOperations name="getFilteredParentRule" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EObject">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;"/>
+ </eAnnotations>
+ <eParameters name="filter" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EClass"/>
+ </eOperations>
+ <eOperations name="getExpectedType" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getContextElement" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;"/>
+ </eAnnotations>
+ </eOperations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="DefaultLiteralRule" eSuperTypes="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//Literal">
+ <eOperations name="getFilteredParentRule" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EObject">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;"/>
+ </eAnnotations>
+ <eParameters name="filter" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EClass"/>
+ </eOperations>
+ <eOperations name="getExpectedType" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getContextElement" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;"/>
+ </eAnnotations>
+ </eOperations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="StringLiteralRule" eSuperTypes="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//Literal">
+ <eOperations name="getFilteredParentRule" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EObject">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;"/>
+ </eAnnotations>
+ <eParameters name="filter" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EClass"/>
+ </eOperations>
+ <eOperations name="getExpectedType" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getContextElement" eType="ecore:EClass platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.ecore#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;"/>
+ </eAnnotations>
+ </eOperations>
+ </eClassifiers>
+</ecore:EPackage>
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.genmodel b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.genmodel
new file mode 100644
index 00000000000..e1621798d31
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.genmodel
@@ -0,0 +1,342 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+ xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" modelDirectory="/org.eclipse.papyrus.marte.vsl/src-gen"
+ editDirectory="/org.eclipse.papyrus.marte.vsl.edit/src" editorDirectory="/org.eclipse.papyrus.marte.vsl.editor/src"
+ modelPluginID="org.eclipse.papyrus.marte.vsl" forceOverwrite="true" modelName="VSL"
+ updateClasspath="false" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container"
+ complianceLevel="5.0" copyrightFields="false" editPluginID="org.eclipse.papyrus.marte.vsl.edit"
+ editorPluginID="org.eclipse.papyrus.marte.vsl.editor" usedGenPackages="platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.genmodel#//uml">
+ <genPackages prefix="VSL" basePackage="org.eclipse.papyrus.marte.vsl" resource="XML"
+ disposableProviderFactory="true" ecorePackage="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#/">
+ <genClasses ecoreClass="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//Expression">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//Expression/exp"/>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//Expression/getFilteredParentRule">
+ <genParameters ecoreParameter="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//Expression/getFilteredParentRule/filter"/>
+ </genOperations>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//Expression/getExpectedType"/>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//Expression/getContextElement"/>
+ </genClasses>
+ <genClasses ecoreClass="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//AndOrXorExpression">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//AndOrXorExpression/exp"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//AndOrXorExpression/op"/>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//AndOrXorExpression/getFilteredParentRule">
+ <genParameters ecoreParameter="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//AndOrXorExpression/getFilteredParentRule/filter"/>
+ </genOperations>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//AndOrXorExpression/getExpectedType"/>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//AndOrXorExpression/getContextElement"/>
+ </genClasses>
+ <genClasses ecoreClass="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//EqualityExpression">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//EqualityExpression/exp"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//EqualityExpression/op"/>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//EqualityExpression/getFilteredParentRule">
+ <genParameters ecoreParameter="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//EqualityExpression/getFilteredParentRule/filter"/>
+ </genOperations>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//EqualityExpression/getExpectedType"/>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//EqualityExpression/getContextElement"/>
+ </genClasses>
+ <genClasses ecoreClass="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//RelationalExpression">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//RelationalExpression/exp"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//RelationalExpression/op"/>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//RelationalExpression/getFilteredParentRule">
+ <genParameters ecoreParameter="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//RelationalExpression/getFilteredParentRule/filter"/>
+ </genOperations>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//RelationalExpression/getExpectedType"/>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//RelationalExpression/getContextElement"/>
+ </genClasses>
+ <genClasses ecoreClass="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//ConditionalExpression">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//ConditionalExpression/exp"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//ConditionalExpression/op"/>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//ConditionalExpression/getFilteredParentRule">
+ <genParameters ecoreParameter="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//ConditionalExpression/getFilteredParentRule/filter"/>
+ </genOperations>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//ConditionalExpression/getExpectedType"/>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//ConditionalExpression/getContextElement"/>
+ </genClasses>
+ <genClasses ecoreClass="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//AdditiveExpression">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//AdditiveExpression/exp"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//AdditiveExpression/op"/>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//AdditiveExpression/getFilteredParentRule">
+ <genParameters ecoreParameter="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//AdditiveExpression/getFilteredParentRule/filter"/>
+ </genOperations>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//AdditiveExpression/getExpectedType"/>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//AdditiveExpression/getContextElement"/>
+ </genClasses>
+ <genClasses ecoreClass="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//MultiplicativeExpression">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//MultiplicativeExpression/exp"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//MultiplicativeExpression/op"/>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//MultiplicativeExpression/getFilteredParentRule">
+ <genParameters ecoreParameter="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//MultiplicativeExpression/getFilteredParentRule/filter"/>
+ </genOperations>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//MultiplicativeExpression/getExpectedType"/>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//MultiplicativeExpression/getContextElement"/>
+ </genClasses>
+ <genClasses ecoreClass="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//UnaryExpression">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//UnaryExpression/op"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//UnaryExpression/unary"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//UnaryExpression/exp"/>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//UnaryExpression/getFilteredParentRule">
+ <genParameters ecoreParameter="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//UnaryExpression/getFilteredParentRule/filter"/>
+ </genOperations>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//UnaryExpression/getExpectedType"/>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//UnaryExpression/getContextElement"/>
+ </genClasses>
+ <genClasses ecoreClass="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//PrimaryExpression">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//PrimaryExpression/prefix"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//PrimaryExpression/suffix"/>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//PrimaryExpression/getFilteredParentRule">
+ <genParameters ecoreParameter="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//PrimaryExpression/getFilteredParentRule/filter"/>
+ </genOperations>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//PrimaryExpression/getExpectedType"/>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//PrimaryExpression/getContextElement"/>
+ </genClasses>
+ <genClasses ecoreClass="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//ValueSpecification">
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//ValueSpecification/getFilteredParentRule">
+ <genParameters ecoreParameter="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//ValueSpecification/getFilteredParentRule/filter"/>
+ </genOperations>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//ValueSpecification/getExpectedType"/>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//ValueSpecification/getContextElement"/>
+ </genClasses>
+ <genClasses ecoreClass="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//SuffixExpression">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//SuffixExpression/suffix"/>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//SuffixExpression/getFilteredParentRule">
+ <genParameters ecoreParameter="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//SuffixExpression/getFilteredParentRule/filter"/>
+ </genOperations>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//SuffixExpression/getExpectedType"/>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//SuffixExpression/getContextElement"/>
+ </genClasses>
+ <genClasses ecoreClass="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//PropertyCallExpression">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//PropertyCallExpression/property"/>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//PropertyCallExpression/getFilteredParentRule">
+ <genParameters ecoreParameter="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//PropertyCallExpression/getFilteredParentRule/filter"/>
+ </genOperations>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//PropertyCallExpression/getExpectedType"/>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//PropertyCallExpression/getContextElement"/>
+ </genClasses>
+ <genClasses ecoreClass="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//OperationCallExpression">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//OperationCallExpression/operation"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//OperationCallExpression/arguments"/>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//OperationCallExpression/getFilteredParentRule">
+ <genParameters ecoreParameter="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//OperationCallExpression/getFilteredParentRule/filter"/>
+ </genOperations>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//OperationCallExpression/getExpectedType"/>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//OperationCallExpression/getContextElement"/>
+ </genClasses>
+ <genClasses ecoreClass="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//Literal">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//Literal/value"/>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//Literal/getFilteredParentRule">
+ <genParameters ecoreParameter="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//Literal/getFilteredParentRule/filter"/>
+ </genOperations>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//Literal/getExpectedType"/>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//Literal/getContextElement"/>
+ </genClasses>
+ <genClasses ecoreClass="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//NameOrChoiceOrBehaviorCall">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//NameOrChoiceOrBehaviorCall/path"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//NameOrChoiceOrBehaviorCall/id"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//NameOrChoiceOrBehaviorCall/arguments"/>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//NameOrChoiceOrBehaviorCall/getFilteredParentRule">
+ <genParameters ecoreParameter="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//NameOrChoiceOrBehaviorCall/getFilteredParentRule/filter"/>
+ </genOperations>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//NameOrChoiceOrBehaviorCall/getExpectedType"/>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//NameOrChoiceOrBehaviorCall/getContextElement"/>
+ </genClasses>
+ <genClasses ecoreClass="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//QualifiedName">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//QualifiedName/path"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//QualifiedName/remaining"/>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//QualifiedName/getFilteredParentRule">
+ <genParameters ecoreParameter="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//QualifiedName/getFilteredParentRule/filter"/>
+ </genOperations>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//QualifiedName/getExpectedType"/>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//QualifiedName/getContextElement"/>
+ </genClasses>
+ <genClasses ecoreClass="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//Interval">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//Interval/isLowerIncluded"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//Interval/lower"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//Interval/upper"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//Interval/isUpperIncluded"/>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//Interval/getFilteredParentRule">
+ <genParameters ecoreParameter="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//Interval/getFilteredParentRule/filter"/>
+ </genOperations>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//Interval/getExpectedType"/>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//Interval/getContextElement"/>
+ </genClasses>
+ <genClasses ecoreClass="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//CollectionOrTuple">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//CollectionOrTuple/listOfValues"/>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//CollectionOrTuple/getFilteredParentRule">
+ <genParameters ecoreParameter="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//CollectionOrTuple/getFilteredParentRule/filter"/>
+ </genOperations>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//CollectionOrTuple/getExpectedType"/>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//CollectionOrTuple/getContextElement"/>
+ </genClasses>
+ <genClasses ecoreClass="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//Tuple">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//Tuple/listOfValueNamePairs"/>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//Tuple/getFilteredParentRule">
+ <genParameters ecoreParameter="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//Tuple/getFilteredParentRule/filter"/>
+ </genOperations>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//Tuple/getExpectedType"/>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//Tuple/getContextElement"/>
+ </genClasses>
+ <genClasses ecoreClass="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//ListOfValues">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//ListOfValues/values"/>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//ListOfValues/getFilteredParentRule">
+ <genParameters ecoreParameter="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//ListOfValues/getFilteredParentRule/filter"/>
+ </genOperations>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//ListOfValues/getExpectedType"/>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//ListOfValues/getContextElement"/>
+ </genClasses>
+ <genClasses ecoreClass="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//ListOfValueNamePairs">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//ListOfValueNamePairs/valueNamePairs"/>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//ListOfValueNamePairs/getFilteredParentRule">
+ <genParameters ecoreParameter="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//ListOfValueNamePairs/getFilteredParentRule/filter"/>
+ </genOperations>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//ListOfValueNamePairs/getExpectedType"/>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//ListOfValueNamePairs/getContextElement"/>
+ </genClasses>
+ <genClasses ecoreClass="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//ValueNamePair">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//ValueNamePair/property"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//ValueNamePair/value"/>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//ValueNamePair/getFilteredParentRule">
+ <genParameters ecoreParameter="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//ValueNamePair/getFilteredParentRule/filter"/>
+ </genOperations>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//ValueNamePair/getExpectedType"/>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//ValueNamePair/getContextElement"/>
+ </genClasses>
+ <genClasses ecoreClass="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//TimeExpression">
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//TimeExpression/getFilteredParentRule">
+ <genParameters ecoreParameter="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//TimeExpression/getFilteredParentRule/filter"/>
+ </genOperations>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//TimeExpression/getExpectedType"/>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//TimeExpression/getContextElement"/>
+ </genClasses>
+ <genClasses ecoreClass="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//InstantObsExpression">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//InstantObsExpression/id"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//InstantObsExpression/index"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//InstantObsExpression/condition"/>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//InstantObsExpression/getFilteredParentRule">
+ <genParameters ecoreParameter="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//InstantObsExpression/getFilteredParentRule/filter"/>
+ </genOperations>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//InstantObsExpression/getExpectedType"/>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//InstantObsExpression/getContextElement"/>
+ </genClasses>
+ <genClasses ecoreClass="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//InstantObsName">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//InstantObsName/path"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//InstantObsName/instantId"/>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//InstantObsName/getFilteredParentRule">
+ <genParameters ecoreParameter="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//InstantObsName/getFilteredParentRule/filter"/>
+ </genOperations>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//InstantObsName/getExpectedType"/>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//InstantObsName/getContextElement"/>
+ </genClasses>
+ <genClasses ecoreClass="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//DurationObsExpression">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//DurationObsExpression/id"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//DurationObsExpression/index"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//DurationObsExpression/condition"/>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//DurationObsExpression/getFilteredParentRule">
+ <genParameters ecoreParameter="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//DurationObsExpression/getFilteredParentRule/filter"/>
+ </genOperations>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//DurationObsExpression/getExpectedType"/>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//DurationObsExpression/getContextElement"/>
+ </genClasses>
+ <genClasses ecoreClass="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//DurationObsName">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//DurationObsName/path"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//DurationObsName/durationId"/>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//DurationObsName/getFilteredParentRule">
+ <genParameters ecoreParameter="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//DurationObsName/getFilteredParentRule/filter"/>
+ </genOperations>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//DurationObsName/getExpectedType"/>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//DurationObsName/getContextElement"/>
+ </genClasses>
+ <genClasses ecoreClass="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//JitterExp">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//JitterExp/firstInstant"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//JitterExp/secondInstant"/>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//JitterExp/getFilteredParentRule">
+ <genParameters ecoreParameter="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//JitterExp/getFilteredParentRule/filter"/>
+ </genOperations>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//JitterExp/getExpectedType"/>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//JitterExp/getContextElement"/>
+ </genClasses>
+ <genClasses ecoreClass="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//VariableDeclaration">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//VariableDeclaration/variableDeclaration"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//VariableDeclaration/name"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//VariableDeclaration/type"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//VariableDeclaration/initValue"/>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//VariableDeclaration/getFilteredParentRule">
+ <genParameters ecoreParameter="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//VariableDeclaration/getFilteredParentRule/filter"/>
+ </genOperations>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//VariableDeclaration/getExpectedType"/>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//VariableDeclaration/getContextElement"/>
+ </genClasses>
+ <genClasses ecoreClass="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//DataTypeName">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//DataTypeName/path"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//DataTypeName/type"/>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//DataTypeName/getFilteredParentRule">
+ <genParameters ecoreParameter="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//DataTypeName/getFilteredParentRule/filter"/>
+ </genOperations>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//DataTypeName/getExpectedType"/>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//DataTypeName/getContextElement"/>
+ </genClasses>
+ <genClasses ecoreClass="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//NumberLiteralRule">
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//NumberLiteralRule/getFilteredParentRule">
+ <genParameters ecoreParameter="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//NumberLiteralRule/getFilteredParentRule/filter"/>
+ </genOperations>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//NumberLiteralRule/getExpectedType"/>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//NumberLiteralRule/getContextElement"/>
+ </genClasses>
+ <genClasses ecoreClass="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//IntegerLiteralRule">
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//IntegerLiteralRule/getFilteredParentRule">
+ <genParameters ecoreParameter="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//IntegerLiteralRule/getFilteredParentRule/filter"/>
+ </genOperations>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//IntegerLiteralRule/getExpectedType"/>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//IntegerLiteralRule/getContextElement"/>
+ </genClasses>
+ <genClasses ecoreClass="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//UnlimitedLiteralRule">
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//UnlimitedLiteralRule/getFilteredParentRule">
+ <genParameters ecoreParameter="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//UnlimitedLiteralRule/getFilteredParentRule/filter"/>
+ </genOperations>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//UnlimitedLiteralRule/getExpectedType"/>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//UnlimitedLiteralRule/getContextElement"/>
+ </genClasses>
+ <genClasses ecoreClass="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//RealLiteralRule">
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//RealLiteralRule/getFilteredParentRule">
+ <genParameters ecoreParameter="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//RealLiteralRule/getFilteredParentRule/filter"/>
+ </genOperations>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//RealLiteralRule/getExpectedType"/>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//RealLiteralRule/getContextElement"/>
+ </genClasses>
+ <genClasses ecoreClass="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//DateTimeLiteralRule">
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//DateTimeLiteralRule/getFilteredParentRule">
+ <genParameters ecoreParameter="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//DateTimeLiteralRule/getFilteredParentRule/filter"/>
+ </genOperations>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//DateTimeLiteralRule/getExpectedType"/>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//DateTimeLiteralRule/getContextElement"/>
+ </genClasses>
+ <genClasses ecoreClass="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//BooleanLiteralRule">
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//BooleanLiteralRule/getFilteredParentRule">
+ <genParameters ecoreParameter="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//BooleanLiteralRule/getFilteredParentRule/filter"/>
+ </genOperations>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//BooleanLiteralRule/getExpectedType"/>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//BooleanLiteralRule/getContextElement"/>
+ </genClasses>
+ <genClasses ecoreClass="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//NullLiteralRule">
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//NullLiteralRule/getFilteredParentRule">
+ <genParameters ecoreParameter="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//NullLiteralRule/getFilteredParentRule/filter"/>
+ </genOperations>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//NullLiteralRule/getExpectedType"/>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//NullLiteralRule/getContextElement"/>
+ </genClasses>
+ <genClasses ecoreClass="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//DefaultLiteralRule">
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//DefaultLiteralRule/getFilteredParentRule">
+ <genParameters ecoreParameter="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//DefaultLiteralRule/getFilteredParentRule/filter"/>
+ </genOperations>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//DefaultLiteralRule/getExpectedType"/>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//DefaultLiteralRule/getContextElement"/>
+ </genClasses>
+ <genClasses ecoreClass="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//StringLiteralRule">
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//StringLiteralRule/getFilteredParentRule">
+ <genParameters ecoreParameter="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//StringLiteralRule/getFilteredParentRule/filter"/>
+ </genOperations>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//StringLiteralRule/getExpectedType"/>
+ <genOperations ecoreOperation="platform:/resource/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.ecore#//StringLiteralRule/getContextElement"/>
+ </genClasses>
+ </genPackages>
+</genmodel:GenModel>
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.xmi b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.xmi
new file mode 100644
index 00000000000..86ac4f7ae82
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSL.xmi
@@ -0,0 +1,1124 @@
+<?xml version="1.0" encoding="ASCII"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:xtext="http://www.eclipse.org/2008/Xtext">
+ <xtext:Grammar name="org.eclipse.papyrus.marte.vsl.VSL" usedGrammars="/1">
+ <metamodelDeclarations xsi:type="xtext:ReferencedMetamodel" alias="uml">
+ <ePackage href="http://www.eclipse.org/uml2/3.0.0/UML#/"/>
+ </metamodelDeclarations>
+ <metamodelDeclarations xsi:type="xtext:GeneratedMetamodel" name="vSL">
+ <ePackage href="http://www.eclipse.org/papyrus/marte/vsl/VSL#/"/>
+ </metamodelDeclarations>
+ <rules xsi:type="xtext:ParserRule" name="Expression">
+ <type metamodel="/0/@metamodelDeclarations.1">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/papyrus/marte/vsl/VSL#//Expression"/>
+ </type>
+ <alternatives xsi:type="xtext:Assignment" feature="exp" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.1"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="AndOrXorExpression">
+ <type metamodel="/0/@metamodelDeclarations.1">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/papyrus/marte/vsl/VSL#//AndOrXorExpression"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Assignment" feature="exp" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.2"/>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="*">
+ <elements xsi:type="xtext:Assignment" feature="op" operator="+=">
+ <terminal xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:Keyword" value="and"/>
+ <elements xsi:type="xtext:Keyword" value="or"/>
+ <elements xsi:type="xtext:Keyword" value="xor"/>
+ </terminal>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="exp" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.2"/>
+ </elements>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="EqualityExpression">
+ <type metamodel="/0/@metamodelDeclarations.1">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/papyrus/marte/vsl/VSL#//EqualityExpression"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Assignment" feature="exp" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.3"/>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="*">
+ <elements xsi:type="xtext:Assignment" feature="op" operator="+=">
+ <terminal xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:Keyword" value="=="/>
+ <elements xsi:type="xtext:Keyword" value="&lt;>"/>
+ </terminal>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="exp" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.3"/>
+ </elements>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="RelationalExpression">
+ <type metamodel="/0/@metamodelDeclarations.1">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/papyrus/marte/vsl/VSL#//RelationalExpression"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Assignment" feature="exp" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.4"/>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="*">
+ <elements xsi:type="xtext:Assignment" feature="op" operator="+=">
+ <terminal xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:Keyword" value="&lt;"/>
+ <elements xsi:type="xtext:Keyword" value=">"/>
+ <elements xsi:type="xtext:Keyword" value="&lt;="/>
+ <elements xsi:type="xtext:Keyword" value=">="/>
+ </terminal>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="exp" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.4"/>
+ </elements>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="ConditionalExpression">
+ <type metamodel="/0/@metamodelDeclarations.1">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/papyrus/marte/vsl/VSL#//ConditionalExpression"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Assignment" feature="exp" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.5"/>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Assignment" feature="op" operator="+=">
+ <terminal xsi:type="xtext:Keyword" value="?"/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="exp" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.5"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value=":"/>
+ <elements xsi:type="xtext:Assignment" feature="exp" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.5"/>
+ </elements>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="AdditiveExpression">
+ <type metamodel="/0/@metamodelDeclarations.1">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/papyrus/marte/vsl/VSL#//AdditiveExpression"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Assignment" feature="exp" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.6"/>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="*">
+ <elements xsi:type="xtext:Assignment" feature="op" operator="+=">
+ <terminal xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:Keyword" value="+"/>
+ <elements xsi:type="xtext:Keyword" value="-"/>
+ </terminal>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="exp" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.6"/>
+ </elements>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="MultiplicativeExpression">
+ <type metamodel="/0/@metamodelDeclarations.1">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/papyrus/marte/vsl/VSL#//MultiplicativeExpression"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Assignment" feature="exp" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.7"/>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="*">
+ <elements xsi:type="xtext:Assignment" feature="op" operator="+=">
+ <terminal xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:Keyword" value="*"/>
+ <elements xsi:type="xtext:Keyword" value="/"/>
+ <elements xsi:type="xtext:Keyword" value="mod"/>
+ </terminal>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="exp" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.7"/>
+ </elements>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="UnaryExpression">
+ <type metamodel="/0/@metamodelDeclarations.1">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/papyrus/marte/vsl/VSL#//UnaryExpression"/>
+ </type>
+ <alternatives xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Assignment" feature="op" operator="=">
+ <terminal xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:Keyword" value="not"/>
+ <elements xsi:type="xtext:Keyword" value="-"/>
+ <elements xsi:type="xtext:Keyword" value="+"/>
+ </terminal>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="unary" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.7"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="exp" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.8"/>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="PrimaryExpression">
+ <type metamodel="/0/@metamodelDeclarations.1">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/papyrus/marte/vsl/VSL#//PrimaryExpression"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Assignment" feature="prefix" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.9"/>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value="."/>
+ <elements xsi:type="xtext:Assignment" feature="suffix" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.10"/>
+ </elements>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="ValueSpecification">
+ <type metamodel="/0/@metamodelDeclarations.1">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/papyrus/marte/vsl/VSL#//ValueSpecification"/>
+ </type>
+ <alternatives xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+ <elements xsi:type="xtext:RuleCall" rule="/0/@rules.14"/>
+ <elements xsi:type="xtext:RuleCall" rule="/0/@rules.16"/>
+ <elements xsi:type="xtext:RuleCall" rule="/0/@rules.17"/>
+ <elements xsi:type="xtext:RuleCall" rule="/0/@rules.18"/>
+ <elements xsi:type="xtext:RuleCall" rule="/0/@rules.22"/>
+ <elements xsi:type="xtext:RuleCall" rule="/0/@rules.28"/>
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="("/>
+ <elements xsi:type="xtext:RuleCall" rule="/0/@rules.0"/>
+ <elements xsi:type="xtext:Keyword" value=")"/>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="SuffixExpression">
+ <type metamodel="/0/@metamodelDeclarations.1">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/papyrus/marte/vsl/VSL#//SuffixExpression"/>
+ </type>
+ <alternatives xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:RuleCall" rule="/0/@rules.11"/>
+ <elements xsi:type="xtext:RuleCall" rule="/0/@rules.12"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="PropertyCallExpression">
+ <type metamodel="/0/@metamodelDeclarations.1">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/papyrus/marte/vsl/VSL#//PropertyCallExpression"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Assignment" feature="property" operator="=">
+ <terminal xsi:type="xtext:CrossReference">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/uml2/3.0.0/UML#//Property"/>
+ </type>
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </terminal>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value="."/>
+ <elements xsi:type="xtext:Assignment" feature="suffix" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.10"/>
+ </elements>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="OperationCallExpression">
+ <type metamodel="/0/@metamodelDeclarations.1">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/papyrus/marte/vsl/VSL#//OperationCallExpression"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Assignment" feature="operation" operator="=">
+ <terminal xsi:type="xtext:CrossReference">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/uml2/3.0.0/UML#//Operation"/>
+ </type>
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </terminal>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="("/>
+ <elements xsi:type="xtext:Assignment" cardinality="?" feature="arguments" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.19"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value=")"/>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value="."/>
+ <elements xsi:type="xtext:Assignment" feature="suffix" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.10"/>
+ </elements>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="Literal">
+ <type metamodel="/0/@metamodelDeclarations.1">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/papyrus/marte/vsl/VSL#//Literal"/>
+ </type>
+ <alternatives xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:RuleCall" rule="/0/@rules.31"/>
+ <elements xsi:type="xtext:RuleCall" rule="/0/@rules.37"/>
+ <elements xsi:type="xtext:RuleCall" rule="/0/@rules.39"/>
+ <elements xsi:type="xtext:RuleCall" rule="/0/@rules.41"/>
+ <elements xsi:type="xtext:RuleCall" rule="/0/@rules.43"/>
+ <elements xsi:type="xtext:RuleCall" rule="/0/@rules.44"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="NameOrChoiceOrBehaviorCall">
+ <type metamodel="/0/@metamodelDeclarations.1">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/papyrus/marte/vsl/VSL#//NameOrChoiceOrBehaviorCall"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Assignment" cardinality="?" feature="path" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.15"/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="id" operator="=">
+ <terminal xsi:type="xtext:CrossReference">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/uml2/3.0.0/UML#//NamedElement"/>
+ </type>
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </terminal>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value="("/>
+ <elements xsi:type="xtext:Assignment" cardinality="?" feature="arguments" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.19"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value=")"/>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="QualifiedName">
+ <type metamodel="/0/@metamodelDeclarations.1">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/papyrus/marte/vsl/VSL#//QualifiedName"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Assignment" feature="path" operator="=">
+ <terminal xsi:type="xtext:CrossReference">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/uml2/3.0.0/UML#//Namespace"/>
+ </type>
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </terminal>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="::"/>
+ <elements xsi:type="xtext:Assignment" cardinality="?" feature="remaining" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.15"/>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="Interval">
+ <type metamodel="/0/@metamodelDeclarations.1">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/papyrus/marte/vsl/VSL#//Interval"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:Keyword" value="]"/>
+ <elements xsi:type="xtext:Assignment" feature="isLowerIncluded" operator="=">
+ <terminal xsi:type="xtext:Keyword" value="["/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="lower" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.0"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value=".."/>
+ <elements xsi:type="xtext:Assignment" feature="upper" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.0"/>
+ </elements>
+ <elements xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:Assignment" feature="isUpperIncluded" operator="=">
+ <terminal xsi:type="xtext:Keyword" value="]"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="["/>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="CollectionOrTuple">
+ <type metamodel="/0/@metamodelDeclarations.1">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/papyrus/marte/vsl/VSL#//CollectionOrTuple"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="{"/>
+ <elements xsi:type="xtext:Assignment" feature="listOfValues" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.19"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="}"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="Tuple">
+ <type metamodel="/0/@metamodelDeclarations.1">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/papyrus/marte/vsl/VSL#//Tuple"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="{"/>
+ <elements xsi:type="xtext:Assignment" feature="listOfValueNamePairs" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.20"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="}"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="ListOfValues">
+ <type metamodel="/0/@metamodelDeclarations.1">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/papyrus/marte/vsl/VSL#//ListOfValues"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Assignment" feature="values" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.0"/>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="*">
+ <elements xsi:type="xtext:Keyword" value=","/>
+ <elements xsi:type="xtext:Assignment" feature="values" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.0"/>
+ </elements>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="ListOfValueNamePairs">
+ <type metamodel="/0/@metamodelDeclarations.1">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/papyrus/marte/vsl/VSL#//ListOfValueNamePairs"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Assignment" feature="valueNamePairs" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.21"/>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="*">
+ <elements xsi:type="xtext:Keyword" value=","/>
+ <elements xsi:type="xtext:Assignment" feature="valueNamePairs" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.21"/>
+ </elements>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="ValueNamePair">
+ <type metamodel="/0/@metamodelDeclarations.1">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/papyrus/marte/vsl/VSL#//ValueNamePair"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Assignment" feature="property" operator="=">
+ <terminal xsi:type="xtext:CrossReference">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/uml2/3.0.0/UML#//Property"/>
+ </type>
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </terminal>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="="/>
+ <elements xsi:type="xtext:Assignment" feature="value" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.0"/>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="TimeExpression">
+ <type metamodel="/0/@metamodelDeclarations.1">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/papyrus/marte/vsl/VSL#//TimeExpression"/>
+ </type>
+ <alternatives xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:RuleCall" rule="/0/@rules.23"/>
+ <elements xsi:type="xtext:RuleCall" rule="/0/@rules.25"/>
+ <elements xsi:type="xtext:RuleCall" rule="/0/@rules.27"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="InstantObsExpression">
+ <type metamodel="/0/@metamodelDeclarations.1">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/papyrus/marte/vsl/VSL#//InstantObsExpression"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="@"/>
+ <elements xsi:type="xtext:Assignment" feature="id" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.24"/>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value="("/>
+ <elements xsi:type="xtext:Assignment" feature="index" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.0"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value=")"/>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value="when"/>
+ <elements xsi:type="xtext:Keyword" value="("/>
+ <elements xsi:type="xtext:Assignment" feature="condition" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.0"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value=")"/>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="InstantObsName">
+ <type metamodel="/0/@metamodelDeclarations.1">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/papyrus/marte/vsl/VSL#//InstantObsName"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Assignment" cardinality="?" feature="path" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.15"/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="instantId" operator="=">
+ <terminal xsi:type="xtext:CrossReference">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/uml2/3.0.0/UML#//TimeObservation"/>
+ </type>
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </terminal>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="DurationObsExpression">
+ <type metamodel="/0/@metamodelDeclarations.1">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/papyrus/marte/vsl/VSL#//DurationObsExpression"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="&amp;"/>
+ <elements xsi:type="xtext:Assignment" feature="id" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.26"/>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value="("/>
+ <elements xsi:type="xtext:Assignment" feature="index" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.0"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value=")"/>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value="when"/>
+ <elements xsi:type="xtext:Keyword" value="("/>
+ <elements xsi:type="xtext:Assignment" feature="condition" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.0"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value=")"/>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="DurationObsName">
+ <type metamodel="/0/@metamodelDeclarations.1">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/papyrus/marte/vsl/VSL#//DurationObsName"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Assignment" cardinality="?" feature="path" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.15"/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="durationId" operator="=">
+ <terminal xsi:type="xtext:CrossReference">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/uml2/3.0.0/UML#//DurationObservation"/>
+ </type>
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </terminal>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="JitterExp">
+ <type metamodel="/0/@metamodelDeclarations.1">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/papyrus/marte/vsl/VSL#//JitterExp"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="jitter("/>
+ <elements xsi:type="xtext:Assignment" feature="firstInstant" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.23"/>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value="-"/>
+ <elements xsi:type="xtext:Assignment" feature="secondInstant" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.23"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value=")"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="VariableDeclaration">
+ <type metamodel="/0/@metamodelDeclarations.1">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/papyrus/marte/vsl/VSL#//VariableDeclaration"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Assignment" cardinality="?" feature="variableDeclaration" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.29"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="$"/>
+ <elements xsi:type="xtext:Assignment" feature="name" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </elements>
+ <elements xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value=":"/>
+ <elements xsi:type="xtext:Assignment" feature="type" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.30"/>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value="="/>
+ <elements xsi:type="xtext:Keyword" value="("/>
+ <elements xsi:type="xtext:Assignment" feature="initValue" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.0"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value=")"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="="/>
+ <elements xsi:type="xtext:Keyword" value="("/>
+ <elements xsi:type="xtext:Assignment" feature="initValue" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.0"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value=")"/>
+ </elements>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="VariableDirectionKind">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </type>
+ <alternatives xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:Keyword" value="in"/>
+ <elements xsi:type="xtext:Keyword" value="out"/>
+ <elements xsi:type="xtext:Keyword" value="inout"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="DataTypeName">
+ <type metamodel="/0/@metamodelDeclarations.1">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/papyrus/marte/vsl/VSL#//DataTypeName"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Assignment" cardinality="?" feature="path" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.15"/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="type" operator="=">
+ <terminal xsi:type="xtext:CrossReference">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/uml2/3.0.0/UML#//DataType"/>
+ </type>
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </terminal>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="NumberLiteralRule">
+ <type metamodel="/0/@metamodelDeclarations.1">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/papyrus/marte/vsl/VSL#//NumberLiteralRule"/>
+ </type>
+ <alternatives xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:RuleCall" rule="/0/@rules.32"/>
+ <elements xsi:type="xtext:RuleCall" rule="/0/@rules.34"/>
+ <elements xsi:type="xtext:RuleCall" rule="/0/@rules.35"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="IntegerLiteralRule">
+ <type metamodel="/0/@metamodelDeclarations.1">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/papyrus/marte/vsl/VSL#//IntegerLiteralRule"/>
+ </type>
+ <alternatives xsi:type="xtext:Assignment" feature="value" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.33"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:TerminalRule" name="IntegerLiteral">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Alternatives" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value="+"/>
+ <elements xsi:type="xtext:Keyword" value="-"/>
+ </elements>
+ <elements xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:CharacterRange" cardinality="+">
+ <left value="0"/>
+ <right value="9"/>
+ </elements>
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="0x"/>
+ <elements xsi:type="xtext:Alternatives" cardinality="+">
+ <elements xsi:type="xtext:CharacterRange">
+ <left value="0"/>
+ <right value="9"/>
+ </elements>
+ <elements xsi:type="xtext:CharacterRange">
+ <left value="A"/>
+ <right value="F"/>
+ </elements>
+ <elements xsi:type="xtext:CharacterRange">
+ <left value="a"/>
+ <right value="f"/>
+ </elements>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="0b"/>
+ <elements xsi:type="xtext:CharacterRange" cardinality="+">
+ <left value="0"/>
+ <right value="1"/>
+ </elements>
+ </elements>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="UnlimitedLiteralRule">
+ <type metamodel="/0/@metamodelDeclarations.1">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/papyrus/marte/vsl/VSL#//UnlimitedLiteralRule"/>
+ </type>
+ <alternatives xsi:type="xtext:Assignment" feature="value" operator="=">
+ <terminal xsi:type="xtext:Keyword" value="*"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="RealLiteralRule">
+ <type metamodel="/0/@metamodelDeclarations.1">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/papyrus/marte/vsl/VSL#//RealLiteralRule"/>
+ </type>
+ <alternatives xsi:type="xtext:Assignment" feature="value" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.36"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:TerminalRule" name="RealLiteral">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Alternatives" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value="+"/>
+ <elements xsi:type="xtext:Keyword" value="-"/>
+ </elements>
+ <elements xsi:type="xtext:CharacterRange" cardinality="+">
+ <left value="0"/>
+ <right value="9"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="."/>
+ <elements xsi:type="xtext:CharacterRange" cardinality="+">
+ <left value="0"/>
+ <right value="9"/>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value="E"/>
+ <elements xsi:type="xtext:Alternatives" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value="+"/>
+ <elements xsi:type="xtext:Keyword" value="-"/>
+ </elements>
+ <elements xsi:type="xtext:CharacterRange" cardinality="+">
+ <left value="0"/>
+ <right value="9"/>
+ </elements>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="DateTimeLiteralRule">
+ <type metamodel="/0/@metamodelDeclarations.1">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/papyrus/marte/vsl/VSL#//DateTimeLiteralRule"/>
+ </type>
+ <alternatives xsi:type="xtext:Assignment" feature="value" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.38"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:TerminalRule" name="DateTimeLiteral">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </type>
+ <alternatives xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:CharacterRange">
+ <left value="0"/>
+ <right value="1"/>
+ </elements>
+ <elements xsi:type="xtext:CharacterRange">
+ <left value="0"/>
+ <right value="9"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="2"/>
+ <elements xsi:type="xtext:CharacterRange">
+ <left value="0"/>
+ <right value="3"/>
+ </elements>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value=":"/>
+ <elements xsi:type="xtext:CharacterRange">
+ <left value="0"/>
+ <right value="5"/>
+ </elements>
+ <elements xsi:type="xtext:CharacterRange">
+ <left value="0"/>
+ <right value="9"/>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value=":"/>
+ <elements xsi:type="xtext:CharacterRange">
+ <left value="0"/>
+ <right value="5"/>
+ </elements>
+ <elements xsi:type="xtext:CharacterRange">
+ <left value="0"/>
+ <right value="9"/>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value=":"/>
+ <elements xsi:type="xtext:CharacterRange">
+ <left value="0"/>
+ <right value="9"/>
+ </elements>
+ <elements xsi:type="xtext:CharacterRange">
+ <left value="0"/>
+ <right value="9"/>
+ </elements>
+ </elements>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value=" "/>
+ <elements xsi:type="xtext:CharacterRange">
+ <left value="0"/>
+ <right value="9"/>
+ </elements>
+ <elements xsi:type="xtext:CharacterRange">
+ <left value="0"/>
+ <right value="9"/>
+ </elements>
+ <elements xsi:type="xtext:CharacterRange">
+ <left value="0"/>
+ <right value="9"/>
+ </elements>
+ <elements xsi:type="xtext:CharacterRange">
+ <left value="0"/>
+ <right value="9"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="/"/>
+ <elements xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="0"/>
+ <elements xsi:type="xtext:CharacterRange">
+ <left value="0"/>
+ <right value="9"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="1"/>
+ <elements xsi:type="xtext:CharacterRange">
+ <left value="0"/>
+ <right value="2"/>
+ </elements>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="/"/>
+ <elements xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:CharacterRange">
+ <left value="0"/>
+ <right value="2"/>
+ </elements>
+ <elements xsi:type="xtext:CharacterRange">
+ <left value="0"/>
+ <right value="9"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="3"/>
+ <elements xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:Keyword" value="0"/>
+ <elements xsi:type="xtext:Keyword" value="1"/>
+ </elements>
+ </elements>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value=" "/>
+ <elements xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:Keyword" value="Mon"/>
+ <elements xsi:type="xtext:Keyword" value="Tue"/>
+ <elements xsi:type="xtext:Keyword" value="Wed"/>
+ <elements xsi:type="xtext:Keyword" value="Thr"/>
+ <elements xsi:type="xtext:Keyword" value="Fri"/>
+ <elements xsi:type="xtext:Keyword" value="Sat"/>
+ <elements xsi:type="xtext:Keyword" value="Sun"/>
+ </elements>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:CharacterRange">
+ <left value="0"/>
+ <right value="9"/>
+ </elements>
+ <elements xsi:type="xtext:CharacterRange">
+ <left value="0"/>
+ <right value="9"/>
+ </elements>
+ <elements xsi:type="xtext:CharacterRange">
+ <left value="0"/>
+ <right value="9"/>
+ </elements>
+ <elements xsi:type="xtext:CharacterRange">
+ <left value="0"/>
+ <right value="9"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="/"/>
+ <elements xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="0"/>
+ <elements xsi:type="xtext:CharacterRange">
+ <left value="0"/>
+ <right value="9"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="1"/>
+ <elements xsi:type="xtext:CharacterRange">
+ <left value="0"/>
+ <right value="2"/>
+ </elements>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="/"/>
+ <elements xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:CharacterRange">
+ <left value="0"/>
+ <right value="2"/>
+ </elements>
+ <elements xsi:type="xtext:CharacterRange">
+ <left value="0"/>
+ <right value="9"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="3"/>
+ <elements xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:Keyword" value="0"/>
+ <elements xsi:type="xtext:Keyword" value="1"/>
+ </elements>
+ </elements>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value=" "/>
+ <elements xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:Keyword" value="Mon"/>
+ <elements xsi:type="xtext:Keyword" value="Tue"/>
+ <elements xsi:type="xtext:Keyword" value="Wed"/>
+ <elements xsi:type="xtext:Keyword" value="Thr"/>
+ <elements xsi:type="xtext:Keyword" value="Fri"/>
+ <elements xsi:type="xtext:Keyword" value="Sat"/>
+ <elements xsi:type="xtext:Keyword" value="Sun"/>
+ </elements>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:Keyword" value="Mon"/>
+ <elements xsi:type="xtext:Keyword" value="Tue"/>
+ <elements xsi:type="xtext:Keyword" value="Wed"/>
+ <elements xsi:type="xtext:Keyword" value="Thr"/>
+ <elements xsi:type="xtext:Keyword" value="Fri"/>
+ <elements xsi:type="xtext:Keyword" value="Sat"/>
+ <elements xsi:type="xtext:Keyword" value="Sun"/>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="BooleanLiteralRule">
+ <type metamodel="/0/@metamodelDeclarations.1">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/papyrus/marte/vsl/VSL#//BooleanLiteralRule"/>
+ </type>
+ <alternatives xsi:type="xtext:Assignment" feature="value" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.40"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:TerminalRule" name="BooleanLiteral">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </type>
+ <alternatives xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:Keyword" value="true"/>
+ <elements xsi:type="xtext:Keyword" value="false"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="NullLiteralRule">
+ <type metamodel="/0/@metamodelDeclarations.1">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/papyrus/marte/vsl/VSL#//NullLiteralRule"/>
+ </type>
+ <alternatives xsi:type="xtext:Assignment" feature="value" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.42"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:TerminalRule" name="NullLiteral">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </type>
+ <alternatives xsi:type="xtext:Keyword" value="null"/>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="DefaultLiteralRule">
+ <type metamodel="/0/@metamodelDeclarations.1">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/papyrus/marte/vsl/VSL#//DefaultLiteralRule"/>
+ </type>
+ <alternatives xsi:type="xtext:Assignment" feature="value" operator="=">
+ <terminal xsi:type="xtext:Keyword" value="/"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="StringLiteralRule">
+ <type metamodel="/0/@metamodelDeclarations.1">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/papyrus/marte/vsl/VSL#//StringLiteralRule"/>
+ </type>
+ <alternatives xsi:type="xtext:Assignment" feature="value" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.2"/>
+ </alternatives>
+ </rules>
+ </xtext:Grammar>
+ <xtext:Grammar name="org.eclipse.xtext.common.Terminals" definesHiddenTokens="true" hiddenTokens="/1/@rules.5 /1/@rules.3 /1/@rules.4">
+ <metamodelDeclarations xsi:type="xtext:ReferencedMetamodel" alias="ecore">
+ <ePackage href="http://www.eclipse.org/emf/2002/Ecore#/"/>
+ </metamodelDeclarations>
+ <rules xsi:type="xtext:TerminalRule" name="ID">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" cardinality="?" value="^"/>
+ <elements xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:CharacterRange">
+ <left value="a"/>
+ <right value="z"/>
+ </elements>
+ <elements xsi:type="xtext:CharacterRange">
+ <left value="A"/>
+ <right value="Z"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="_"/>
+ </elements>
+ <elements xsi:type="xtext:Alternatives" cardinality="*">
+ <elements xsi:type="xtext:CharacterRange">
+ <left value="a"/>
+ <right value="z"/>
+ </elements>
+ <elements xsi:type="xtext:CharacterRange">
+ <left value="A"/>
+ <right value="Z"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="_"/>
+ <elements xsi:type="xtext:CharacterRange">
+ <left value="0"/>
+ <right value="9"/>
+ </elements>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:TerminalRule" name="INT">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </type>
+ <alternatives xsi:type="xtext:CharacterRange" cardinality="+">
+ <left value="0"/>
+ <right value="9"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:TerminalRule" name="STRING">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </type>
+ <alternatives xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="&quot;"/>
+ <elements xsi:type="xtext:Alternatives" cardinality="*">
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="\"/>
+ <elements xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:Keyword" value="b"/>
+ <elements xsi:type="xtext:Keyword" value="t"/>
+ <elements xsi:type="xtext:Keyword" value="n"/>
+ <elements xsi:type="xtext:Keyword" value="f"/>
+ <elements xsi:type="xtext:Keyword" value="r"/>
+ <elements xsi:type="xtext:Keyword" value="u"/>
+ <elements xsi:type="xtext:Keyword" value="&quot;"/>
+ <elements xsi:type="xtext:Keyword" value="'"/>
+ <elements xsi:type="xtext:Keyword" value="\"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:NegatedToken">
+ <terminal xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:Keyword" value="\"/>
+ <elements xsi:type="xtext:Keyword" value="&quot;"/>
+ </terminal>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="&quot;"/>
+ </elements>
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="'"/>
+ <elements xsi:type="xtext:Alternatives" cardinality="*">
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="\"/>
+ <elements xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:Keyword" value="b"/>
+ <elements xsi:type="xtext:Keyword" value="t"/>
+ <elements xsi:type="xtext:Keyword" value="n"/>
+ <elements xsi:type="xtext:Keyword" value="f"/>
+ <elements xsi:type="xtext:Keyword" value="r"/>
+ <elements xsi:type="xtext:Keyword" value="u"/>
+ <elements xsi:type="xtext:Keyword" value="&quot;"/>
+ <elements xsi:type="xtext:Keyword" value="'"/>
+ <elements xsi:type="xtext:Keyword" value="\"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:NegatedToken">
+ <terminal xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:Keyword" value="\"/>
+ <elements xsi:type="xtext:Keyword" value="'"/>
+ </terminal>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="'"/>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:TerminalRule" name="ML_COMMENT">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="/*"/>
+ <elements xsi:type="xtext:UntilToken">
+ <terminal xsi:type="xtext:Keyword" value="*/"/>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:TerminalRule" name="SL_COMMENT">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="//"/>
+ <elements xsi:type="xtext:NegatedToken" cardinality="*">
+ <terminal xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:Keyword" value="&#xA;"/>
+ <elements xsi:type="xtext:Keyword" value="&#xD;"/>
+ </terminal>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" cardinality="?" value="&#xD;"/>
+ <elements xsi:type="xtext:Keyword" value="&#xA;"/>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:TerminalRule" name="WS">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </type>
+ <alternatives xsi:type="xtext:Alternatives" cardinality="+">
+ <elements xsi:type="xtext:Keyword" value=" "/>
+ <elements xsi:type="xtext:Keyword" value="&#x9;"/>
+ <elements xsi:type="xtext:Keyword" value="&#xD;"/>
+ <elements xsi:type="xtext:Keyword" value="&#xA;"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:TerminalRule" name="ANY_OTHER">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </type>
+ <alternatives xsi:type="xtext:Wildcard"/>
+ </rules>
+ </xtext:Grammar>
+</xmi:XMI>
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSLStandaloneSetupGenerated.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSLStandaloneSetupGenerated.java
new file mode 100644
index 00000000000..1d90100802d
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/VSLStandaloneSetupGenerated.java
@@ -0,0 +1,43 @@
+
+package org.eclipse.papyrus.marte.vsl;
+
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.xtext.ISetup;
+import org.eclipse.emf.ecore.resource.Resource;
+
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+
+/**
+ * Generated from StandaloneSetup.xpt!
+ */
+@SuppressWarnings("all")
+public class VSLStandaloneSetupGenerated implements ISetup {
+
+ public Injector createInjectorAndDoEMFRegistration() {
+ org.eclipse.xtext.common.TerminalsStandaloneSetup.doSetup();
+
+ Injector injector = createInjector();
+ register(injector);
+ return injector;
+ }
+
+ public Injector createInjector() {
+ return Guice.createInjector(new org.eclipse.papyrus.marte.vsl.VSLRuntimeModule());
+ }
+
+ public void register(Injector injector) {
+ if (!EPackage.Registry.INSTANCE.containsKey("http://www.eclipse.org/papyrus/marte/vsl/VSL")) {
+ EPackage.Registry.INSTANCE.put("http://www.eclipse.org/papyrus/marte/vsl/VSL", org.eclipse.papyrus.marte.vsl.vSL.VSLPackage.eINSTANCE);
+ }
+
+ org.eclipse.xtext.resource.IResourceFactory resourceFactory = injector.getInstance(org.eclipse.xtext.resource.IResourceFactory.class);
+ org.eclipse.xtext.resource.IResourceServiceProvider serviceProvider = injector.getInstance(org.eclipse.xtext.resource.IResourceServiceProvider.class);
+ Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("vsl", resourceFactory);
+ org.eclipse.xtext.resource.IResourceServiceProvider.Registry.INSTANCE.getExtensionToFactoryMap().put("vsl", serviceProvider);
+
+
+
+
+ }
+}
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parseTreeConstruction/VSLParsetreeConstructor.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parseTreeConstruction/VSLParsetreeConstructor.java
new file mode 100644
index 00000000000..562bafcb102
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parseTreeConstruction/VSLParsetreeConstructor.java
@@ -0,0 +1,6975 @@
+/*
+* generated by Xtext
+*/
+package org.eclipse.papyrus.marte.vsl.parseTreeConstruction;
+
+import org.eclipse.emf.ecore.*;
+import org.eclipse.xtext.*;
+import org.eclipse.xtext.parsetree.reconstr.IEObjectConsumer;
+import org.eclipse.xtext.parsetree.reconstr.impl.AbstractParseTreeConstructor;
+
+import org.eclipse.papyrus.marte.vsl.services.VSLGrammarAccess;
+
+import com.google.inject.Inject;
+
+@SuppressWarnings("all")
+public class VSLParsetreeConstructor extends AbstractParseTreeConstructor {
+
+ @Inject
+ private VSLGrammarAccess grammarAccess;
+
+ @Override
+ protected AbstractToken getRootToken(IEObjectConsumer inst) {
+ return new ThisRootNode(inst);
+ }
+
+protected class ThisRootNode extends RootToken {
+ public ThisRootNode(IEObjectConsumer inst) {
+ super(inst);
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Expression_ExpAssignment(this, this, 0, inst);
+ case 1: return new AndOrXorExpression_Group(this, this, 1, inst);
+ case 2: return new EqualityExpression_Group(this, this, 2, inst);
+ case 3: return new RelationalExpression_Group(this, this, 3, inst);
+ case 4: return new ConditionalExpression_Group(this, this, 4, inst);
+ case 5: return new AdditiveExpression_Group(this, this, 5, inst);
+ case 6: return new MultiplicativeExpression_Group(this, this, 6, inst);
+ case 7: return new UnaryExpression_Alternatives(this, this, 7, inst);
+ case 8: return new PrimaryExpression_Group(this, this, 8, inst);
+ case 9: return new ValueSpecification_Alternatives(this, this, 9, inst);
+ case 10: return new SuffixExpression_Alternatives(this, this, 10, inst);
+ case 11: return new PropertyCallExpression_Group(this, this, 11, inst);
+ case 12: return new OperationCallExpression_Group(this, this, 12, inst);
+ case 13: return new Literal_Alternatives(this, this, 13, inst);
+ case 14: return new NameOrChoiceOrBehaviorCall_Group(this, this, 14, inst);
+ case 15: return new QualifiedName_Group(this, this, 15, inst);
+ case 16: return new Interval_Group(this, this, 16, inst);
+ case 17: return new CollectionOrTuple_Group(this, this, 17, inst);
+ case 18: return new Tuple_Group(this, this, 18, inst);
+ case 19: return new ListOfValues_Group(this, this, 19, inst);
+ case 20: return new ListOfValueNamePairs_Group(this, this, 20, inst);
+ case 21: return new ValueNamePair_Group(this, this, 21, inst);
+ case 22: return new TimeExpression_Alternatives(this, this, 22, inst);
+ case 23: return new InstantObsExpression_Group(this, this, 23, inst);
+ case 24: return new InstantObsName_Group(this, this, 24, inst);
+ case 25: return new DurationObsExpression_Group(this, this, 25, inst);
+ case 26: return new DurationObsName_Group(this, this, 26, inst);
+ case 27: return new JitterExp_Group(this, this, 27, inst);
+ case 28: return new VariableDeclaration_Group(this, this, 28, inst);
+ case 29: return new DataTypeName_Group(this, this, 29, inst);
+ case 30: return new NumberLiteralRule_Alternatives(this, this, 30, inst);
+ case 31: return new IntegerLiteralRule_ValueAssignment(this, this, 31, inst);
+ case 32: return new UnlimitedLiteralRule_ValueAssignment(this, this, 32, inst);
+ case 33: return new RealLiteralRule_ValueAssignment(this, this, 33, inst);
+ case 34: return new DateTimeLiteralRule_ValueAssignment(this, this, 34, inst);
+ case 35: return new BooleanLiteralRule_ValueAssignment(this, this, 35, inst);
+ case 36: return new NullLiteralRule_ValueAssignment(this, this, 36, inst);
+ case 37: return new DefaultLiteralRule_ValueAssignment(this, this, 37, inst);
+ case 38: return new StringLiteralRule_ValueAssignment(this, this, 38, inst);
+ default: return null;
+ }
+ }
+}
+
+
+/************ begin Rule Expression ****************
+ *
+ * Expression:
+ * exp=AndOrXorExpression;
+ *
+ **/
+
+// exp=AndOrXorExpression
+protected class Expression_ExpAssignment extends AssignmentToken {
+
+ public Expression_ExpAssignment(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getExpressionAccess().getExpAssignment();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new AndOrXorExpression_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getExpressionRule().getType().getClassifier())
+ return null;
+ if((value = eObjectConsumer.getConsumable("exp",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("exp");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getAndOrXorExpressionRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getExpressionAccess().getExpAndOrXorExpressionParserRuleCall_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, consumed);
+ }
+ }
+}
+
+/************ end Rule Expression ****************/
+
+
+/************ begin Rule AndOrXorExpression ****************
+ *
+ * AndOrXorExpression:
+ * exp+=EqualityExpression (op+=("and" | "or" | "xor") exp+=EqualityExpression)*;
+ *
+ **/
+
+// exp+=EqualityExpression (op+=("and" | "or" | "xor") exp+=EqualityExpression)*
+protected class AndOrXorExpression_Group extends GroupToken {
+
+ public AndOrXorExpression_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getAndOrXorExpressionAccess().getGroup();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new AndOrXorExpression_Group_1(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new AndOrXorExpression_ExpAssignment_0(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getAndOrXorExpressionRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// exp+=EqualityExpression
+protected class AndOrXorExpression_ExpAssignment_0 extends AssignmentToken {
+
+ public AndOrXorExpression_ExpAssignment_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getAndOrXorExpressionAccess().getExpAssignment_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new EqualityExpression_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("exp",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("exp");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getEqualityExpressionRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getAndOrXorExpressionAccess().getExpEqualityExpressionParserRuleCall_0_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, consumed);
+ }
+ }
+}
+
+// (op+=("and" | "or" | "xor") exp+=EqualityExpression)*
+protected class AndOrXorExpression_Group_1 extends GroupToken {
+
+ public AndOrXorExpression_Group_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getAndOrXorExpressionAccess().getGroup_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new AndOrXorExpression_ExpAssignment_1_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// op+=("and" | "or" | "xor")
+protected class AndOrXorExpression_OpAssignment_1_0 extends AssignmentToken {
+
+ public AndOrXorExpression_OpAssignment_1_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getAndOrXorExpressionAccess().getOpAssignment_1_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new AndOrXorExpression_Group_1(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new AndOrXorExpression_ExpAssignment_0(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("op",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("op");
+ if(keywordSerializer.isValid(obj.getEObject(), grammarAccess.getAndOrXorExpressionAccess().getOpAndKeyword_1_0_0_0(), value, null)) {
+ type = AssignmentType.KEYWORD;
+ element = grammarAccess.getAndOrXorExpressionAccess().getOpAndKeyword_1_0_0_0();
+ return obj;
+ }
+ if(keywordSerializer.isValid(obj.getEObject(), grammarAccess.getAndOrXorExpressionAccess().getOpOrKeyword_1_0_0_1(), value, null)) {
+ type = AssignmentType.KEYWORD;
+ element = grammarAccess.getAndOrXorExpressionAccess().getOpOrKeyword_1_0_0_1();
+ return obj;
+ }
+ if(keywordSerializer.isValid(obj.getEObject(), grammarAccess.getAndOrXorExpressionAccess().getOpXorKeyword_1_0_0_2(), value, null)) {
+ type = AssignmentType.KEYWORD;
+ element = grammarAccess.getAndOrXorExpressionAccess().getOpXorKeyword_1_0_0_2();
+ return obj;
+ }
+ return null;
+ }
+
+}
+
+// exp+=EqualityExpression
+protected class AndOrXorExpression_ExpAssignment_1_1 extends AssignmentToken {
+
+ public AndOrXorExpression_ExpAssignment_1_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getAndOrXorExpressionAccess().getExpAssignment_1_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new EqualityExpression_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("exp",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("exp");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getEqualityExpressionRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getAndOrXorExpressionAccess().getExpEqualityExpressionParserRuleCall_1_1_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new AndOrXorExpression_OpAssignment_1_0(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+
+
+/************ end Rule AndOrXorExpression ****************/
+
+
+/************ begin Rule EqualityExpression ****************
+ *
+ * EqualityExpression:
+ * exp+=RelationalExpression (op+=("==" | "<>") exp+=RelationalExpression)*;
+ *
+ **/
+
+// exp+=RelationalExpression (op+=("==" | "<>") exp+=RelationalExpression)*
+protected class EqualityExpression_Group extends GroupToken {
+
+ public EqualityExpression_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getEqualityExpressionAccess().getGroup();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new EqualityExpression_Group_1(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new EqualityExpression_ExpAssignment_0(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getEqualityExpressionRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// exp+=RelationalExpression
+protected class EqualityExpression_ExpAssignment_0 extends AssignmentToken {
+
+ public EqualityExpression_ExpAssignment_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getEqualityExpressionAccess().getExpAssignment_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new RelationalExpression_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("exp",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("exp");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getRelationalExpressionRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getEqualityExpressionAccess().getExpRelationalExpressionParserRuleCall_0_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, consumed);
+ }
+ }
+}
+
+// (op+=("==" | "<>") exp+=RelationalExpression)*
+protected class EqualityExpression_Group_1 extends GroupToken {
+
+ public EqualityExpression_Group_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getEqualityExpressionAccess().getGroup_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new EqualityExpression_ExpAssignment_1_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// op+=("==" | "<>")
+protected class EqualityExpression_OpAssignment_1_0 extends AssignmentToken {
+
+ public EqualityExpression_OpAssignment_1_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getEqualityExpressionAccess().getOpAssignment_1_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new EqualityExpression_Group_1(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new EqualityExpression_ExpAssignment_0(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("op",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("op");
+ if(keywordSerializer.isValid(obj.getEObject(), grammarAccess.getEqualityExpressionAccess().getOpEqualsSignEqualsSignKeyword_1_0_0_0(), value, null)) {
+ type = AssignmentType.KEYWORD;
+ element = grammarAccess.getEqualityExpressionAccess().getOpEqualsSignEqualsSignKeyword_1_0_0_0();
+ return obj;
+ }
+ if(keywordSerializer.isValid(obj.getEObject(), grammarAccess.getEqualityExpressionAccess().getOpLessThanSignGreaterThanSignKeyword_1_0_0_1(), value, null)) {
+ type = AssignmentType.KEYWORD;
+ element = grammarAccess.getEqualityExpressionAccess().getOpLessThanSignGreaterThanSignKeyword_1_0_0_1();
+ return obj;
+ }
+ return null;
+ }
+
+}
+
+// exp+=RelationalExpression
+protected class EqualityExpression_ExpAssignment_1_1 extends AssignmentToken {
+
+ public EqualityExpression_ExpAssignment_1_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getEqualityExpressionAccess().getExpAssignment_1_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new RelationalExpression_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("exp",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("exp");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getRelationalExpressionRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getEqualityExpressionAccess().getExpRelationalExpressionParserRuleCall_1_1_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new EqualityExpression_OpAssignment_1_0(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+
+
+/************ end Rule EqualityExpression ****************/
+
+
+/************ begin Rule RelationalExpression ****************
+ *
+ * RelationalExpression:
+ * exp+=ConditionalExpression (op+=("<" | ">" | "<=" | ">=") exp+=ConditionalExpression)*;
+ *
+ **/
+
+// exp+=ConditionalExpression (op+=("<" | ">" | "<=" | ">=") exp+=ConditionalExpression)*
+protected class RelationalExpression_Group extends GroupToken {
+
+ public RelationalExpression_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getRelationalExpressionAccess().getGroup();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new RelationalExpression_Group_1(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new RelationalExpression_ExpAssignment_0(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getRelationalExpressionRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// exp+=ConditionalExpression
+protected class RelationalExpression_ExpAssignment_0 extends AssignmentToken {
+
+ public RelationalExpression_ExpAssignment_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getRelationalExpressionAccess().getExpAssignment_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ConditionalExpression_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("exp",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("exp");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getConditionalExpressionRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getRelationalExpressionAccess().getExpConditionalExpressionParserRuleCall_0_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, consumed);
+ }
+ }
+}
+
+// (op+=("<" | ">" | "<=" | ">=") exp+=ConditionalExpression)*
+protected class RelationalExpression_Group_1 extends GroupToken {
+
+ public RelationalExpression_Group_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getRelationalExpressionAccess().getGroup_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new RelationalExpression_ExpAssignment_1_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// op+=("<" | ">" | "<=" | ">=")
+protected class RelationalExpression_OpAssignment_1_0 extends AssignmentToken {
+
+ public RelationalExpression_OpAssignment_1_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getRelationalExpressionAccess().getOpAssignment_1_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new RelationalExpression_Group_1(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new RelationalExpression_ExpAssignment_0(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("op",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("op");
+ if(keywordSerializer.isValid(obj.getEObject(), grammarAccess.getRelationalExpressionAccess().getOpLessThanSignKeyword_1_0_0_0(), value, null)) {
+ type = AssignmentType.KEYWORD;
+ element = grammarAccess.getRelationalExpressionAccess().getOpLessThanSignKeyword_1_0_0_0();
+ return obj;
+ }
+ if(keywordSerializer.isValid(obj.getEObject(), grammarAccess.getRelationalExpressionAccess().getOpGreaterThanSignKeyword_1_0_0_1(), value, null)) {
+ type = AssignmentType.KEYWORD;
+ element = grammarAccess.getRelationalExpressionAccess().getOpGreaterThanSignKeyword_1_0_0_1();
+ return obj;
+ }
+ if(keywordSerializer.isValid(obj.getEObject(), grammarAccess.getRelationalExpressionAccess().getOpLessThanSignEqualsSignKeyword_1_0_0_2(), value, null)) {
+ type = AssignmentType.KEYWORD;
+ element = grammarAccess.getRelationalExpressionAccess().getOpLessThanSignEqualsSignKeyword_1_0_0_2();
+ return obj;
+ }
+ if(keywordSerializer.isValid(obj.getEObject(), grammarAccess.getRelationalExpressionAccess().getOpGreaterThanSignEqualsSignKeyword_1_0_0_3(), value, null)) {
+ type = AssignmentType.KEYWORD;
+ element = grammarAccess.getRelationalExpressionAccess().getOpGreaterThanSignEqualsSignKeyword_1_0_0_3();
+ return obj;
+ }
+ return null;
+ }
+
+}
+
+// exp+=ConditionalExpression
+protected class RelationalExpression_ExpAssignment_1_1 extends AssignmentToken {
+
+ public RelationalExpression_ExpAssignment_1_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getRelationalExpressionAccess().getExpAssignment_1_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ConditionalExpression_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("exp",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("exp");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getConditionalExpressionRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getRelationalExpressionAccess().getExpConditionalExpressionParserRuleCall_1_1_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new RelationalExpression_OpAssignment_1_0(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+
+
+/************ end Rule RelationalExpression ****************/
+
+
+/************ begin Rule ConditionalExpression ****************
+ *
+ * ConditionalExpression:
+ * exp+=AdditiveExpression (op+="?" exp+=AdditiveExpression ":" exp+=AdditiveExpression)?;
+ *
+ **/
+
+// exp+=AdditiveExpression (op+="?" exp+=AdditiveExpression ":" exp+=AdditiveExpression)?
+protected class ConditionalExpression_Group extends GroupToken {
+
+ public ConditionalExpression_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getConditionalExpressionAccess().getGroup();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ConditionalExpression_Group_1(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new ConditionalExpression_ExpAssignment_0(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getConditionalExpressionRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// exp+=AdditiveExpression
+protected class ConditionalExpression_ExpAssignment_0 extends AssignmentToken {
+
+ public ConditionalExpression_ExpAssignment_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getConditionalExpressionAccess().getExpAssignment_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new AdditiveExpression_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("exp",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("exp");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getAdditiveExpressionRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getConditionalExpressionAccess().getExpAdditiveExpressionParserRuleCall_0_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, consumed);
+ }
+ }
+}
+
+// (op+="?" exp+=AdditiveExpression ":" exp+=AdditiveExpression)?
+protected class ConditionalExpression_Group_1 extends GroupToken {
+
+ public ConditionalExpression_Group_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getConditionalExpressionAccess().getGroup_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ConditionalExpression_ExpAssignment_1_3(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// op+="?"
+protected class ConditionalExpression_OpAssignment_1_0 extends AssignmentToken {
+
+ public ConditionalExpression_OpAssignment_1_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getConditionalExpressionAccess().getOpAssignment_1_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ConditionalExpression_ExpAssignment_0(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("op",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("op");
+ if(keywordSerializer.isValid(obj.getEObject(), grammarAccess.getConditionalExpressionAccess().getOpQuestionMarkKeyword_1_0_0(), value, null)) {
+ type = AssignmentType.KEYWORD;
+ element = grammarAccess.getConditionalExpressionAccess().getOpQuestionMarkKeyword_1_0_0();
+ return obj;
+ }
+ return null;
+ }
+
+}
+
+// exp+=AdditiveExpression
+protected class ConditionalExpression_ExpAssignment_1_1 extends AssignmentToken {
+
+ public ConditionalExpression_ExpAssignment_1_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getConditionalExpressionAccess().getExpAssignment_1_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new AdditiveExpression_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("exp",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("exp");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getAdditiveExpressionRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getConditionalExpressionAccess().getExpAdditiveExpressionParserRuleCall_1_1_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new ConditionalExpression_OpAssignment_1_0(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+// ":"
+protected class ConditionalExpression_ColonKeyword_1_2 extends KeywordToken {
+
+ public ConditionalExpression_ColonKeyword_1_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getConditionalExpressionAccess().getColonKeyword_1_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ConditionalExpression_ExpAssignment_1_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// exp+=AdditiveExpression
+protected class ConditionalExpression_ExpAssignment_1_3 extends AssignmentToken {
+
+ public ConditionalExpression_ExpAssignment_1_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getConditionalExpressionAccess().getExpAssignment_1_3();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new AdditiveExpression_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("exp",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("exp");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getAdditiveExpressionRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getConditionalExpressionAccess().getExpAdditiveExpressionParserRuleCall_1_3_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new ConditionalExpression_ColonKeyword_1_2(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+
+
+/************ end Rule ConditionalExpression ****************/
+
+
+/************ begin Rule AdditiveExpression ****************
+ *
+ * AdditiveExpression:
+ * exp+=MultiplicativeExpression (op+=("+" | "-") exp+=MultiplicativeExpression)*;
+ *
+ **/
+
+// exp+=MultiplicativeExpression (op+=("+" | "-") exp+=MultiplicativeExpression)*
+protected class AdditiveExpression_Group extends GroupToken {
+
+ public AdditiveExpression_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getAdditiveExpressionAccess().getGroup();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new AdditiveExpression_Group_1(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new AdditiveExpression_ExpAssignment_0(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getAdditiveExpressionRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// exp+=MultiplicativeExpression
+protected class AdditiveExpression_ExpAssignment_0 extends AssignmentToken {
+
+ public AdditiveExpression_ExpAssignment_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getAdditiveExpressionAccess().getExpAssignment_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new MultiplicativeExpression_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("exp",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("exp");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getMultiplicativeExpressionRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getAdditiveExpressionAccess().getExpMultiplicativeExpressionParserRuleCall_0_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, consumed);
+ }
+ }
+}
+
+// (op+=("+" | "-") exp+=MultiplicativeExpression)*
+protected class AdditiveExpression_Group_1 extends GroupToken {
+
+ public AdditiveExpression_Group_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getAdditiveExpressionAccess().getGroup_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new AdditiveExpression_ExpAssignment_1_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// op+=("+" | "-")
+protected class AdditiveExpression_OpAssignment_1_0 extends AssignmentToken {
+
+ public AdditiveExpression_OpAssignment_1_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getAdditiveExpressionAccess().getOpAssignment_1_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new AdditiveExpression_Group_1(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new AdditiveExpression_ExpAssignment_0(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("op",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("op");
+ if(keywordSerializer.isValid(obj.getEObject(), grammarAccess.getAdditiveExpressionAccess().getOpPlusSignKeyword_1_0_0_0(), value, null)) {
+ type = AssignmentType.KEYWORD;
+ element = grammarAccess.getAdditiveExpressionAccess().getOpPlusSignKeyword_1_0_0_0();
+ return obj;
+ }
+ if(keywordSerializer.isValid(obj.getEObject(), grammarAccess.getAdditiveExpressionAccess().getOpHyphenMinusKeyword_1_0_0_1(), value, null)) {
+ type = AssignmentType.KEYWORD;
+ element = grammarAccess.getAdditiveExpressionAccess().getOpHyphenMinusKeyword_1_0_0_1();
+ return obj;
+ }
+ return null;
+ }
+
+}
+
+// exp+=MultiplicativeExpression
+protected class AdditiveExpression_ExpAssignment_1_1 extends AssignmentToken {
+
+ public AdditiveExpression_ExpAssignment_1_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getAdditiveExpressionAccess().getExpAssignment_1_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new MultiplicativeExpression_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("exp",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("exp");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getMultiplicativeExpressionRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getAdditiveExpressionAccess().getExpMultiplicativeExpressionParserRuleCall_1_1_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new AdditiveExpression_OpAssignment_1_0(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+
+
+/************ end Rule AdditiveExpression ****************/
+
+
+/************ begin Rule MultiplicativeExpression ****************
+ *
+ * MultiplicativeExpression:
+ * exp+=UnaryExpression (op+=("*" | "/" | "mod") exp+=UnaryExpression)*;
+ *
+ **/
+
+// exp+=UnaryExpression (op+=("*" | "/" | "mod") exp+=UnaryExpression)*
+protected class MultiplicativeExpression_Group extends GroupToken {
+
+ public MultiplicativeExpression_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getMultiplicativeExpressionAccess().getGroup();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new MultiplicativeExpression_Group_1(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new MultiplicativeExpression_ExpAssignment_0(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getMultiplicativeExpressionRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// exp+=UnaryExpression
+protected class MultiplicativeExpression_ExpAssignment_0 extends AssignmentToken {
+
+ public MultiplicativeExpression_ExpAssignment_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getMultiplicativeExpressionAccess().getExpAssignment_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new UnaryExpression_Alternatives(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("exp",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("exp");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getUnaryExpressionRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getMultiplicativeExpressionAccess().getExpUnaryExpressionParserRuleCall_0_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, consumed);
+ }
+ }
+}
+
+// (op+=("*" | "/" | "mod") exp+=UnaryExpression)*
+protected class MultiplicativeExpression_Group_1 extends GroupToken {
+
+ public MultiplicativeExpression_Group_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getMultiplicativeExpressionAccess().getGroup_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new MultiplicativeExpression_ExpAssignment_1_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// op+=("*" | "/" | "mod")
+protected class MultiplicativeExpression_OpAssignment_1_0 extends AssignmentToken {
+
+ public MultiplicativeExpression_OpAssignment_1_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getMultiplicativeExpressionAccess().getOpAssignment_1_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new MultiplicativeExpression_Group_1(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new MultiplicativeExpression_ExpAssignment_0(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("op",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("op");
+ if(keywordSerializer.isValid(obj.getEObject(), grammarAccess.getMultiplicativeExpressionAccess().getOpAsteriskKeyword_1_0_0_0(), value, null)) {
+ type = AssignmentType.KEYWORD;
+ element = grammarAccess.getMultiplicativeExpressionAccess().getOpAsteriskKeyword_1_0_0_0();
+ return obj;
+ }
+ if(keywordSerializer.isValid(obj.getEObject(), grammarAccess.getMultiplicativeExpressionAccess().getOpSolidusKeyword_1_0_0_1(), value, null)) {
+ type = AssignmentType.KEYWORD;
+ element = grammarAccess.getMultiplicativeExpressionAccess().getOpSolidusKeyword_1_0_0_1();
+ return obj;
+ }
+ if(keywordSerializer.isValid(obj.getEObject(), grammarAccess.getMultiplicativeExpressionAccess().getOpModKeyword_1_0_0_2(), value, null)) {
+ type = AssignmentType.KEYWORD;
+ element = grammarAccess.getMultiplicativeExpressionAccess().getOpModKeyword_1_0_0_2();
+ return obj;
+ }
+ return null;
+ }
+
+}
+
+// exp+=UnaryExpression
+protected class MultiplicativeExpression_ExpAssignment_1_1 extends AssignmentToken {
+
+ public MultiplicativeExpression_ExpAssignment_1_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getMultiplicativeExpressionAccess().getExpAssignment_1_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new UnaryExpression_Alternatives(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("exp",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("exp");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getUnaryExpressionRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getMultiplicativeExpressionAccess().getExpUnaryExpressionParserRuleCall_1_1_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new MultiplicativeExpression_OpAssignment_1_0(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+
+
+/************ end Rule MultiplicativeExpression ****************/
+
+
+/************ begin Rule UnaryExpression ****************
+ *
+ * UnaryExpression:
+ * op=("not" | "-" | "+") unary=UnaryExpression | exp=PrimaryExpression;
+ *
+ **/
+
+// op=("not" | "-" | "+") unary=UnaryExpression | exp=PrimaryExpression
+protected class UnaryExpression_Alternatives extends AlternativesToken {
+
+ public UnaryExpression_Alternatives(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Alternatives getGrammarElement() {
+ return grammarAccess.getUnaryExpressionAccess().getAlternatives();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new UnaryExpression_Group_0(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new UnaryExpression_ExpAssignment_1(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getUnaryExpressionRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// op=("not" | "-" | "+") unary=UnaryExpression
+protected class UnaryExpression_Group_0 extends GroupToken {
+
+ public UnaryExpression_Group_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getUnaryExpressionAccess().getGroup_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new UnaryExpression_UnaryAssignment_0_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// op=("not" | "-" | "+")
+protected class UnaryExpression_OpAssignment_0_0 extends AssignmentToken {
+
+ public UnaryExpression_OpAssignment_0_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getUnaryExpressionAccess().getOpAssignment_0_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("op",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("op");
+ if(keywordSerializer.isValid(obj.getEObject(), grammarAccess.getUnaryExpressionAccess().getOpNotKeyword_0_0_0_0(), value, null)) {
+ type = AssignmentType.KEYWORD;
+ element = grammarAccess.getUnaryExpressionAccess().getOpNotKeyword_0_0_0_0();
+ return obj;
+ }
+ if(keywordSerializer.isValid(obj.getEObject(), grammarAccess.getUnaryExpressionAccess().getOpHyphenMinusKeyword_0_0_0_1(), value, null)) {
+ type = AssignmentType.KEYWORD;
+ element = grammarAccess.getUnaryExpressionAccess().getOpHyphenMinusKeyword_0_0_0_1();
+ return obj;
+ }
+ if(keywordSerializer.isValid(obj.getEObject(), grammarAccess.getUnaryExpressionAccess().getOpPlusSignKeyword_0_0_0_2(), value, null)) {
+ type = AssignmentType.KEYWORD;
+ element = grammarAccess.getUnaryExpressionAccess().getOpPlusSignKeyword_0_0_0_2();
+ return obj;
+ }
+ return null;
+ }
+
+}
+
+// unary=UnaryExpression
+protected class UnaryExpression_UnaryAssignment_0_1 extends AssignmentToken {
+
+ public UnaryExpression_UnaryAssignment_0_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getUnaryExpressionAccess().getUnaryAssignment_0_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new UnaryExpression_Alternatives(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("unary",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("unary");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getUnaryExpressionRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getUnaryExpressionAccess().getUnaryUnaryExpressionParserRuleCall_0_1_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new UnaryExpression_OpAssignment_0_0(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+
+// exp=PrimaryExpression
+protected class UnaryExpression_ExpAssignment_1 extends AssignmentToken {
+
+ public UnaryExpression_ExpAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getUnaryExpressionAccess().getExpAssignment_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new PrimaryExpression_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("exp",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("exp");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getPrimaryExpressionRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getUnaryExpressionAccess().getExpPrimaryExpressionParserRuleCall_1_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, consumed);
+ }
+ }
+}
+
+
+/************ end Rule UnaryExpression ****************/
+
+
+/************ begin Rule PrimaryExpression ****************
+ *
+ * PrimaryExpression:
+ * prefix=ValueSpecification ("." suffix=SuffixExpression)?;
+ *
+ **/
+
+// prefix=ValueSpecification ("." suffix=SuffixExpression)?
+protected class PrimaryExpression_Group extends GroupToken {
+
+ public PrimaryExpression_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getPrimaryExpressionAccess().getGroup();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new PrimaryExpression_Group_1(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new PrimaryExpression_PrefixAssignment_0(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getPrimaryExpressionRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// prefix=ValueSpecification
+protected class PrimaryExpression_PrefixAssignment_0 extends AssignmentToken {
+
+ public PrimaryExpression_PrefixAssignment_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getPrimaryExpressionAccess().getPrefixAssignment_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ValueSpecification_Alternatives(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("prefix",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("prefix");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getValueSpecificationRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getPrimaryExpressionAccess().getPrefixValueSpecificationParserRuleCall_0_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, consumed);
+ }
+ }
+}
+
+// ("." suffix=SuffixExpression)?
+protected class PrimaryExpression_Group_1 extends GroupToken {
+
+ public PrimaryExpression_Group_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getPrimaryExpressionAccess().getGroup_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new PrimaryExpression_SuffixAssignment_1_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// "."
+protected class PrimaryExpression_FullStopKeyword_1_0 extends KeywordToken {
+
+ public PrimaryExpression_FullStopKeyword_1_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getPrimaryExpressionAccess().getFullStopKeyword_1_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new PrimaryExpression_PrefixAssignment_0(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// suffix=SuffixExpression
+protected class PrimaryExpression_SuffixAssignment_1_1 extends AssignmentToken {
+
+ public PrimaryExpression_SuffixAssignment_1_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getPrimaryExpressionAccess().getSuffixAssignment_1_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new SuffixExpression_Alternatives(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("suffix",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("suffix");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getSuffixExpressionRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getPrimaryExpressionAccess().getSuffixSuffixExpressionParserRuleCall_1_1_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new PrimaryExpression_FullStopKeyword_1_0(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+
+
+/************ end Rule PrimaryExpression ****************/
+
+
+/************ begin Rule ValueSpecification ****************
+ *
+ * ValueSpecification:
+ * Literal | NameOrChoiceOrBehaviorCall | Interval | CollectionOrTuple | Tuple | TimeExpression | VariableDeclaration |
+ * "(" Expression ")";
+ *
+ **/
+
+// Literal | NameOrChoiceOrBehaviorCall | Interval | CollectionOrTuple | Tuple | TimeExpression | VariableDeclaration | "("
+// Expression ")"
+protected class ValueSpecification_Alternatives extends AlternativesToken {
+
+ public ValueSpecification_Alternatives(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Alternatives getGrammarElement() {
+ return grammarAccess.getValueSpecificationAccess().getAlternatives();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ValueSpecification_LiteralParserRuleCall_0(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new ValueSpecification_NameOrChoiceOrBehaviorCallParserRuleCall_1(lastRuleCallOrigin, this, 1, inst);
+ case 2: return new ValueSpecification_IntervalParserRuleCall_2(lastRuleCallOrigin, this, 2, inst);
+ case 3: return new ValueSpecification_CollectionOrTupleParserRuleCall_3(lastRuleCallOrigin, this, 3, inst);
+ case 4: return new ValueSpecification_TupleParserRuleCall_4(lastRuleCallOrigin, this, 4, inst);
+ case 5: return new ValueSpecification_TimeExpressionParserRuleCall_5(lastRuleCallOrigin, this, 5, inst);
+ case 6: return new ValueSpecification_VariableDeclarationParserRuleCall_6(lastRuleCallOrigin, this, 6, inst);
+ case 7: return new ValueSpecification_Group_7(lastRuleCallOrigin, this, 7, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getBooleanLiteralRuleRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getCollectionOrTupleRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getDateTimeLiteralRuleRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getDefaultLiteralRuleRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getDurationObsExpressionRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getExpressionRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getInstantObsExpressionRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getIntegerLiteralRuleRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getIntervalRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getJitterExpRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getNameOrChoiceOrBehaviorCallRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getNullLiteralRuleRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getRealLiteralRuleRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getStringLiteralRuleRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getTupleRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getUnlimitedLiteralRuleRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getVariableDeclarationRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// Literal
+protected class ValueSpecification_LiteralParserRuleCall_0 extends RuleCallToken {
+
+ public ValueSpecification_LiteralParserRuleCall_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public RuleCall getGrammarElement() {
+ return grammarAccess.getValueSpecificationAccess().getLiteralParserRuleCall_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Literal_Alternatives(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getBooleanLiteralRuleRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getDateTimeLiteralRuleRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getDefaultLiteralRuleRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getIntegerLiteralRuleRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getNullLiteralRuleRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getRealLiteralRuleRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getStringLiteralRuleRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getUnlimitedLiteralRuleRule().getType().getClassifier())
+ return null;
+ if(checkForRecursion(Literal_Alternatives.class, eObjectConsumer)) return null;
+ return eObjectConsumer;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+ }
+ }
+}
+
+// NameOrChoiceOrBehaviorCall
+protected class ValueSpecification_NameOrChoiceOrBehaviorCallParserRuleCall_1 extends RuleCallToken {
+
+ public ValueSpecification_NameOrChoiceOrBehaviorCallParserRuleCall_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public RuleCall getGrammarElement() {
+ return grammarAccess.getValueSpecificationAccess().getNameOrChoiceOrBehaviorCallParserRuleCall_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new NameOrChoiceOrBehaviorCall_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getNameOrChoiceOrBehaviorCallRule().getType().getClassifier())
+ return null;
+ if(checkForRecursion(NameOrChoiceOrBehaviorCall_Group.class, eObjectConsumer)) return null;
+ return eObjectConsumer;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+ }
+ }
+}
+
+// Interval
+protected class ValueSpecification_IntervalParserRuleCall_2 extends RuleCallToken {
+
+ public ValueSpecification_IntervalParserRuleCall_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public RuleCall getGrammarElement() {
+ return grammarAccess.getValueSpecificationAccess().getIntervalParserRuleCall_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Interval_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getIntervalRule().getType().getClassifier())
+ return null;
+ if(checkForRecursion(Interval_Group.class, eObjectConsumer)) return null;
+ return eObjectConsumer;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+ }
+ }
+}
+
+// CollectionOrTuple
+protected class ValueSpecification_CollectionOrTupleParserRuleCall_3 extends RuleCallToken {
+
+ public ValueSpecification_CollectionOrTupleParserRuleCall_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public RuleCall getGrammarElement() {
+ return grammarAccess.getValueSpecificationAccess().getCollectionOrTupleParserRuleCall_3();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new CollectionOrTuple_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getCollectionOrTupleRule().getType().getClassifier())
+ return null;
+ if(checkForRecursion(CollectionOrTuple_Group.class, eObjectConsumer)) return null;
+ return eObjectConsumer;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+ }
+ }
+}
+
+// Tuple
+protected class ValueSpecification_TupleParserRuleCall_4 extends RuleCallToken {
+
+ public ValueSpecification_TupleParserRuleCall_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public RuleCall getGrammarElement() {
+ return grammarAccess.getValueSpecificationAccess().getTupleParserRuleCall_4();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Tuple_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getTupleRule().getType().getClassifier())
+ return null;
+ if(checkForRecursion(Tuple_Group.class, eObjectConsumer)) return null;
+ return eObjectConsumer;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+ }
+ }
+}
+
+// TimeExpression
+protected class ValueSpecification_TimeExpressionParserRuleCall_5 extends RuleCallToken {
+
+ public ValueSpecification_TimeExpressionParserRuleCall_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public RuleCall getGrammarElement() {
+ return grammarAccess.getValueSpecificationAccess().getTimeExpressionParserRuleCall_5();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new TimeExpression_Alternatives(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getDurationObsExpressionRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getInstantObsExpressionRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getJitterExpRule().getType().getClassifier())
+ return null;
+ if(checkForRecursion(TimeExpression_Alternatives.class, eObjectConsumer)) return null;
+ return eObjectConsumer;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+ }
+ }
+}
+
+// VariableDeclaration
+protected class ValueSpecification_VariableDeclarationParserRuleCall_6 extends RuleCallToken {
+
+ public ValueSpecification_VariableDeclarationParserRuleCall_6(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public RuleCall getGrammarElement() {
+ return grammarAccess.getValueSpecificationAccess().getVariableDeclarationParserRuleCall_6();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new VariableDeclaration_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getVariableDeclarationRule().getType().getClassifier())
+ return null;
+ if(checkForRecursion(VariableDeclaration_Group.class, eObjectConsumer)) return null;
+ return eObjectConsumer;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+ }
+ }
+}
+
+// "(" Expression ")"
+protected class ValueSpecification_Group_7 extends GroupToken {
+
+ public ValueSpecification_Group_7(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getValueSpecificationAccess().getGroup_7();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ValueSpecification_RightParenthesisKeyword_7_2(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getExpressionRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// "("
+protected class ValueSpecification_LeftParenthesisKeyword_7_0 extends KeywordToken {
+
+ public ValueSpecification_LeftParenthesisKeyword_7_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getValueSpecificationAccess().getLeftParenthesisKeyword_7_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+ }
+ }
+
+}
+
+// Expression
+protected class ValueSpecification_ExpressionParserRuleCall_7_1 extends RuleCallToken {
+
+ public ValueSpecification_ExpressionParserRuleCall_7_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public RuleCall getGrammarElement() {
+ return grammarAccess.getValueSpecificationAccess().getExpressionParserRuleCall_7_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Expression_ExpAssignment(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(checkForRecursion(Expression_ExpAssignment.class, eObjectConsumer)) return null;
+ return eObjectConsumer;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ValueSpecification_LeftParenthesisKeyword_7_0(lastRuleCallOrigin, next, actIndex, inst);
+ default: return null;
+ }
+ }
+}
+
+// ")"
+protected class ValueSpecification_RightParenthesisKeyword_7_2 extends KeywordToken {
+
+ public ValueSpecification_RightParenthesisKeyword_7_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getValueSpecificationAccess().getRightParenthesisKeyword_7_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ValueSpecification_ExpressionParserRuleCall_7_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+
+
+/************ end Rule ValueSpecification ****************/
+
+
+/************ begin Rule SuffixExpression ****************
+ *
+ * SuffixExpression:
+ * PropertyCallExpression | OperationCallExpression;
+ *
+ **/
+
+// PropertyCallExpression | OperationCallExpression
+protected class SuffixExpression_Alternatives extends AlternativesToken {
+
+ public SuffixExpression_Alternatives(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Alternatives getGrammarElement() {
+ return grammarAccess.getSuffixExpressionAccess().getAlternatives();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new SuffixExpression_PropertyCallExpressionParserRuleCall_0(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new SuffixExpression_OperationCallExpressionParserRuleCall_1(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getOperationCallExpressionRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getPropertyCallExpressionRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// PropertyCallExpression
+protected class SuffixExpression_PropertyCallExpressionParserRuleCall_0 extends RuleCallToken {
+
+ public SuffixExpression_PropertyCallExpressionParserRuleCall_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public RuleCall getGrammarElement() {
+ return grammarAccess.getSuffixExpressionAccess().getPropertyCallExpressionParserRuleCall_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new PropertyCallExpression_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getPropertyCallExpressionRule().getType().getClassifier())
+ return null;
+ if(checkForRecursion(PropertyCallExpression_Group.class, eObjectConsumer)) return null;
+ return eObjectConsumer;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+ }
+ }
+}
+
+// OperationCallExpression
+protected class SuffixExpression_OperationCallExpressionParserRuleCall_1 extends RuleCallToken {
+
+ public SuffixExpression_OperationCallExpressionParserRuleCall_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public RuleCall getGrammarElement() {
+ return grammarAccess.getSuffixExpressionAccess().getOperationCallExpressionParserRuleCall_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new OperationCallExpression_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getOperationCallExpressionRule().getType().getClassifier())
+ return null;
+ if(checkForRecursion(OperationCallExpression_Group.class, eObjectConsumer)) return null;
+ return eObjectConsumer;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+ }
+ }
+}
+
+
+/************ end Rule SuffixExpression ****************/
+
+
+/************ begin Rule PropertyCallExpression ****************
+ *
+ * PropertyCallExpression:
+ * property=[uml::Property] ("." suffix=SuffixExpression)?;
+ *
+ **/
+
+// property=[uml::Property] ("." suffix=SuffixExpression)?
+protected class PropertyCallExpression_Group extends GroupToken {
+
+ public PropertyCallExpression_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getPropertyCallExpressionAccess().getGroup();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new PropertyCallExpression_Group_1(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new PropertyCallExpression_PropertyAssignment_0(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getPropertyCallExpressionRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// property=[uml::Property]
+protected class PropertyCallExpression_PropertyAssignment_0 extends AssignmentToken {
+
+ public PropertyCallExpression_PropertyAssignment_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getPropertyCallExpressionAccess().getPropertyAssignment_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("property",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("property");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getPropertyCallExpressionAccess().getPropertyPropertyCrossReference_0_0().getType().getClassifier())) {
+ type = AssignmentType.CROSS_REFERENCE;
+ element = grammarAccess.getPropertyCallExpressionAccess().getPropertyPropertyCrossReference_0_0();
+ return obj;
+ }
+ }
+ return null;
+ }
+
+}
+
+// ("." suffix=SuffixExpression)?
+protected class PropertyCallExpression_Group_1 extends GroupToken {
+
+ public PropertyCallExpression_Group_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getPropertyCallExpressionAccess().getGroup_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new PropertyCallExpression_SuffixAssignment_1_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// "."
+protected class PropertyCallExpression_FullStopKeyword_1_0 extends KeywordToken {
+
+ public PropertyCallExpression_FullStopKeyword_1_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getPropertyCallExpressionAccess().getFullStopKeyword_1_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new PropertyCallExpression_PropertyAssignment_0(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// suffix=SuffixExpression
+protected class PropertyCallExpression_SuffixAssignment_1_1 extends AssignmentToken {
+
+ public PropertyCallExpression_SuffixAssignment_1_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getPropertyCallExpressionAccess().getSuffixAssignment_1_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new SuffixExpression_Alternatives(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("suffix",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("suffix");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getSuffixExpressionRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getPropertyCallExpressionAccess().getSuffixSuffixExpressionParserRuleCall_1_1_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new PropertyCallExpression_FullStopKeyword_1_0(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+
+
+/************ end Rule PropertyCallExpression ****************/
+
+
+/************ begin Rule OperationCallExpression ****************
+ *
+ * OperationCallExpression:
+ * operation=[uml::Operation] "(" arguments=ListOfValues? ")" ("." suffix=SuffixExpression)?;
+ *
+ **/
+
+// operation=[uml::Operation] "(" arguments=ListOfValues? ")" ("." suffix=SuffixExpression)?
+protected class OperationCallExpression_Group extends GroupToken {
+
+ public OperationCallExpression_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getOperationCallExpressionAccess().getGroup();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new OperationCallExpression_Group_4(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new OperationCallExpression_RightParenthesisKeyword_3(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getOperationCallExpressionRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// operation=[uml::Operation]
+protected class OperationCallExpression_OperationAssignment_0 extends AssignmentToken {
+
+ public OperationCallExpression_OperationAssignment_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getOperationCallExpressionAccess().getOperationAssignment_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("operation",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("operation");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getOperationCallExpressionAccess().getOperationOperationCrossReference_0_0().getType().getClassifier())) {
+ type = AssignmentType.CROSS_REFERENCE;
+ element = grammarAccess.getOperationCallExpressionAccess().getOperationOperationCrossReference_0_0();
+ return obj;
+ }
+ }
+ return null;
+ }
+
+}
+
+// "("
+protected class OperationCallExpression_LeftParenthesisKeyword_1 extends KeywordToken {
+
+ public OperationCallExpression_LeftParenthesisKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getOperationCallExpressionAccess().getLeftParenthesisKeyword_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new OperationCallExpression_OperationAssignment_0(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// arguments=ListOfValues?
+protected class OperationCallExpression_ArgumentsAssignment_2 extends AssignmentToken {
+
+ public OperationCallExpression_ArgumentsAssignment_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getOperationCallExpressionAccess().getArgumentsAssignment_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ListOfValues_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("arguments",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("arguments");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getListOfValuesRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getOperationCallExpressionAccess().getArgumentsListOfValuesParserRuleCall_2_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new OperationCallExpression_LeftParenthesisKeyword_1(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+// ")"
+protected class OperationCallExpression_RightParenthesisKeyword_3 extends KeywordToken {
+
+ public OperationCallExpression_RightParenthesisKeyword_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getOperationCallExpressionAccess().getRightParenthesisKeyword_3();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new OperationCallExpression_ArgumentsAssignment_2(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new OperationCallExpression_LeftParenthesisKeyword_1(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// ("." suffix=SuffixExpression)?
+protected class OperationCallExpression_Group_4 extends GroupToken {
+
+ public OperationCallExpression_Group_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getOperationCallExpressionAccess().getGroup_4();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new OperationCallExpression_SuffixAssignment_4_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// "."
+protected class OperationCallExpression_FullStopKeyword_4_0 extends KeywordToken {
+
+ public OperationCallExpression_FullStopKeyword_4_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getOperationCallExpressionAccess().getFullStopKeyword_4_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new OperationCallExpression_RightParenthesisKeyword_3(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// suffix=SuffixExpression
+protected class OperationCallExpression_SuffixAssignment_4_1 extends AssignmentToken {
+
+ public OperationCallExpression_SuffixAssignment_4_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getOperationCallExpressionAccess().getSuffixAssignment_4_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new SuffixExpression_Alternatives(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("suffix",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("suffix");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getSuffixExpressionRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getOperationCallExpressionAccess().getSuffixSuffixExpressionParserRuleCall_4_1_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new OperationCallExpression_FullStopKeyword_4_0(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+
+
+/************ end Rule OperationCallExpression ****************/
+
+
+/************ begin Rule Literal ****************
+ *
+ * Literal:
+ * NumberLiteralRule | DateTimeLiteralRule | BooleanLiteralRule | NullLiteralRule | DefaultLiteralRule |
+ * StringLiteralRule;
+ *
+ **/
+
+// NumberLiteralRule | DateTimeLiteralRule | BooleanLiteralRule | NullLiteralRule | DefaultLiteralRule | StringLiteralRule
+protected class Literal_Alternatives extends AlternativesToken {
+
+ public Literal_Alternatives(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Alternatives getGrammarElement() {
+ return grammarAccess.getLiteralAccess().getAlternatives();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Literal_NumberLiteralRuleParserRuleCall_0(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new Literal_DateTimeLiteralRuleParserRuleCall_1(lastRuleCallOrigin, this, 1, inst);
+ case 2: return new Literal_BooleanLiteralRuleParserRuleCall_2(lastRuleCallOrigin, this, 2, inst);
+ case 3: return new Literal_NullLiteralRuleParserRuleCall_3(lastRuleCallOrigin, this, 3, inst);
+ case 4: return new Literal_DefaultLiteralRuleParserRuleCall_4(lastRuleCallOrigin, this, 4, inst);
+ case 5: return new Literal_StringLiteralRuleParserRuleCall_5(lastRuleCallOrigin, this, 5, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getBooleanLiteralRuleRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getDateTimeLiteralRuleRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getDefaultLiteralRuleRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getIntegerLiteralRuleRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getNullLiteralRuleRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getRealLiteralRuleRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getStringLiteralRuleRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getUnlimitedLiteralRuleRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// NumberLiteralRule
+protected class Literal_NumberLiteralRuleParserRuleCall_0 extends RuleCallToken {
+
+ public Literal_NumberLiteralRuleParserRuleCall_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public RuleCall getGrammarElement() {
+ return grammarAccess.getLiteralAccess().getNumberLiteralRuleParserRuleCall_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new NumberLiteralRule_Alternatives(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getIntegerLiteralRuleRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getRealLiteralRuleRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getUnlimitedLiteralRuleRule().getType().getClassifier())
+ return null;
+ if(checkForRecursion(NumberLiteralRule_Alternatives.class, eObjectConsumer)) return null;
+ return eObjectConsumer;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+ }
+ }
+}
+
+// DateTimeLiteralRule
+protected class Literal_DateTimeLiteralRuleParserRuleCall_1 extends RuleCallToken {
+
+ public Literal_DateTimeLiteralRuleParserRuleCall_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public RuleCall getGrammarElement() {
+ return grammarAccess.getLiteralAccess().getDateTimeLiteralRuleParserRuleCall_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new DateTimeLiteralRule_ValueAssignment(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getDateTimeLiteralRuleRule().getType().getClassifier())
+ return null;
+ if(checkForRecursion(DateTimeLiteralRule_ValueAssignment.class, eObjectConsumer)) return null;
+ return eObjectConsumer;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+ }
+ }
+}
+
+// BooleanLiteralRule
+protected class Literal_BooleanLiteralRuleParserRuleCall_2 extends RuleCallToken {
+
+ public Literal_BooleanLiteralRuleParserRuleCall_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public RuleCall getGrammarElement() {
+ return grammarAccess.getLiteralAccess().getBooleanLiteralRuleParserRuleCall_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new BooleanLiteralRule_ValueAssignment(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getBooleanLiteralRuleRule().getType().getClassifier())
+ return null;
+ if(checkForRecursion(BooleanLiteralRule_ValueAssignment.class, eObjectConsumer)) return null;
+ return eObjectConsumer;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+ }
+ }
+}
+
+// NullLiteralRule
+protected class Literal_NullLiteralRuleParserRuleCall_3 extends RuleCallToken {
+
+ public Literal_NullLiteralRuleParserRuleCall_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public RuleCall getGrammarElement() {
+ return grammarAccess.getLiteralAccess().getNullLiteralRuleParserRuleCall_3();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new NullLiteralRule_ValueAssignment(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getNullLiteralRuleRule().getType().getClassifier())
+ return null;
+ if(checkForRecursion(NullLiteralRule_ValueAssignment.class, eObjectConsumer)) return null;
+ return eObjectConsumer;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+ }
+ }
+}
+
+// DefaultLiteralRule
+protected class Literal_DefaultLiteralRuleParserRuleCall_4 extends RuleCallToken {
+
+ public Literal_DefaultLiteralRuleParserRuleCall_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public RuleCall getGrammarElement() {
+ return grammarAccess.getLiteralAccess().getDefaultLiteralRuleParserRuleCall_4();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new DefaultLiteralRule_ValueAssignment(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getDefaultLiteralRuleRule().getType().getClassifier())
+ return null;
+ if(checkForRecursion(DefaultLiteralRule_ValueAssignment.class, eObjectConsumer)) return null;
+ return eObjectConsumer;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+ }
+ }
+}
+
+// StringLiteralRule
+protected class Literal_StringLiteralRuleParserRuleCall_5 extends RuleCallToken {
+
+ public Literal_StringLiteralRuleParserRuleCall_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public RuleCall getGrammarElement() {
+ return grammarAccess.getLiteralAccess().getStringLiteralRuleParserRuleCall_5();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new StringLiteralRule_ValueAssignment(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getStringLiteralRuleRule().getType().getClassifier())
+ return null;
+ if(checkForRecursion(StringLiteralRule_ValueAssignment.class, eObjectConsumer)) return null;
+ return eObjectConsumer;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+ }
+ }
+}
+
+
+/************ end Rule Literal ****************/
+
+
+/************ begin Rule NameOrChoiceOrBehaviorCall ****************
+ *
+ * NameOrChoiceOrBehaviorCall:
+ * path=QualifiedName? // can resolve to :
+ * // - EnumSpecification,
+ * // - VariableCallExpression
+ * // - PropertyCallExpression
+ * // - ChoiceExpression
+ * id=[uml::NamedElement] ("(" arguments=ListOfValues? ")")?;
+ *
+ **/
+
+// path=QualifiedName? // can resolve to :
+// // - EnumSpecification,
+// // - VariableCallExpression
+// // - PropertyCallExpression
+// // - ChoiceExpression
+// id=[uml::NamedElement] ("(" arguments=ListOfValues? ")")?
+protected class NameOrChoiceOrBehaviorCall_Group extends GroupToken {
+
+ public NameOrChoiceOrBehaviorCall_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getNameOrChoiceOrBehaviorCallAccess().getGroup();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new NameOrChoiceOrBehaviorCall_Group_2(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new NameOrChoiceOrBehaviorCall_IdAssignment_1(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getNameOrChoiceOrBehaviorCallRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// path=QualifiedName?
+protected class NameOrChoiceOrBehaviorCall_PathAssignment_0 extends AssignmentToken {
+
+ public NameOrChoiceOrBehaviorCall_PathAssignment_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getNameOrChoiceOrBehaviorCallAccess().getPathAssignment_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new QualifiedName_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("path",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("path");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getQualifiedNameRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getNameOrChoiceOrBehaviorCallAccess().getPathQualifiedNameParserRuleCall_0_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, consumed);
+ }
+ }
+}
+
+// id=[uml::NamedElement]
+protected class NameOrChoiceOrBehaviorCall_IdAssignment_1 extends AssignmentToken {
+
+ public NameOrChoiceOrBehaviorCall_IdAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getNameOrChoiceOrBehaviorCallAccess().getIdAssignment_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new NameOrChoiceOrBehaviorCall_PathAssignment_0(lastRuleCallOrigin, this, 0, inst);
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index - 1, inst);
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("id",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("id");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getNameOrChoiceOrBehaviorCallAccess().getIdNamedElementCrossReference_1_0().getType().getClassifier())) {
+ type = AssignmentType.CROSS_REFERENCE;
+ element = grammarAccess.getNameOrChoiceOrBehaviorCallAccess().getIdNamedElementCrossReference_1_0();
+ return obj;
+ }
+ }
+ return null;
+ }
+
+}
+
+// ("(" arguments=ListOfValues? ")")?
+protected class NameOrChoiceOrBehaviorCall_Group_2 extends GroupToken {
+
+ public NameOrChoiceOrBehaviorCall_Group_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getNameOrChoiceOrBehaviorCallAccess().getGroup_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new NameOrChoiceOrBehaviorCall_RightParenthesisKeyword_2_2(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// "("
+protected class NameOrChoiceOrBehaviorCall_LeftParenthesisKeyword_2_0 extends KeywordToken {
+
+ public NameOrChoiceOrBehaviorCall_LeftParenthesisKeyword_2_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getNameOrChoiceOrBehaviorCallAccess().getLeftParenthesisKeyword_2_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new NameOrChoiceOrBehaviorCall_IdAssignment_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// arguments=ListOfValues?
+protected class NameOrChoiceOrBehaviorCall_ArgumentsAssignment_2_1 extends AssignmentToken {
+
+ public NameOrChoiceOrBehaviorCall_ArgumentsAssignment_2_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getNameOrChoiceOrBehaviorCallAccess().getArgumentsAssignment_2_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ListOfValues_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("arguments",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("arguments");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getListOfValuesRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getNameOrChoiceOrBehaviorCallAccess().getArgumentsListOfValuesParserRuleCall_2_1_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new NameOrChoiceOrBehaviorCall_LeftParenthesisKeyword_2_0(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+// ")"
+protected class NameOrChoiceOrBehaviorCall_RightParenthesisKeyword_2_2 extends KeywordToken {
+
+ public NameOrChoiceOrBehaviorCall_RightParenthesisKeyword_2_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getNameOrChoiceOrBehaviorCallAccess().getRightParenthesisKeyword_2_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new NameOrChoiceOrBehaviorCall_ArgumentsAssignment_2_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+
+
+/************ end Rule NameOrChoiceOrBehaviorCall ****************/
+
+
+/************ begin Rule QualifiedName ****************
+ *
+ * QualifiedName:
+ * path=[uml::Namespace] "::" remaining=QualifiedName?;
+ *
+ **/
+
+// path=[uml::Namespace] "::" remaining=QualifiedName?
+protected class QualifiedName_Group extends GroupToken {
+
+ public QualifiedName_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getQualifiedNameAccess().getGroup();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new QualifiedName_RemainingAssignment_2(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new QualifiedName_ColonColonKeyword_1(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getQualifiedNameRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// path=[uml::Namespace]
+protected class QualifiedName_PathAssignment_0 extends AssignmentToken {
+
+ public QualifiedName_PathAssignment_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getQualifiedNameAccess().getPathAssignment_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("path",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("path");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getQualifiedNameAccess().getPathNamespaceCrossReference_0_0().getType().getClassifier())) {
+ type = AssignmentType.CROSS_REFERENCE;
+ element = grammarAccess.getQualifiedNameAccess().getPathNamespaceCrossReference_0_0();
+ return obj;
+ }
+ }
+ return null;
+ }
+
+}
+
+// "::"
+protected class QualifiedName_ColonColonKeyword_1 extends KeywordToken {
+
+ public QualifiedName_ColonColonKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getQualifiedNameAccess().getColonColonKeyword_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new QualifiedName_PathAssignment_0(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// remaining=QualifiedName?
+protected class QualifiedName_RemainingAssignment_2 extends AssignmentToken {
+
+ public QualifiedName_RemainingAssignment_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getQualifiedNameAccess().getRemainingAssignment_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new QualifiedName_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("remaining",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("remaining");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getQualifiedNameRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getQualifiedNameAccess().getRemainingQualifiedNameParserRuleCall_2_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new QualifiedName_ColonColonKeyword_1(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+
+/************ end Rule QualifiedName ****************/
+
+
+/************ begin Rule Interval ****************
+ *
+ * Interval:
+ * ("]" | isLowerIncluded="[") lower=Expression ".." upper=Expression (isUpperIncluded="]" | "[");
+ *
+ **/
+
+// ("]" | isLowerIncluded="[") lower=Expression ".." upper=Expression (isUpperIncluded="]" | "[")
+protected class Interval_Group extends GroupToken {
+
+ public Interval_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getIntervalAccess().getGroup();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Interval_Alternatives_4(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getIntervalRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// "]" | isLowerIncluded="["
+protected class Interval_Alternatives_0 extends AlternativesToken {
+
+ public Interval_Alternatives_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Alternatives getGrammarElement() {
+ return grammarAccess.getIntervalAccess().getAlternatives_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Interval_RightSquareBracketKeyword_0_0(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new Interval_IsLowerIncludedAssignment_0_1(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// "]"
+protected class Interval_RightSquareBracketKeyword_0_0 extends KeywordToken {
+
+ public Interval_RightSquareBracketKeyword_0_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getIntervalAccess().getRightSquareBracketKeyword_0_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+ }
+ }
+
+}
+
+// isLowerIncluded="["
+protected class Interval_IsLowerIncludedAssignment_0_1 extends AssignmentToken {
+
+ public Interval_IsLowerIncludedAssignment_0_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getIntervalAccess().getIsLowerIncludedAssignment_0_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("isLowerIncluded",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("isLowerIncluded");
+ if(keywordSerializer.isValid(obj.getEObject(), grammarAccess.getIntervalAccess().getIsLowerIncludedLeftSquareBracketKeyword_0_1_0(), value, null)) {
+ type = AssignmentType.KEYWORD;
+ element = grammarAccess.getIntervalAccess().getIsLowerIncludedLeftSquareBracketKeyword_0_1_0();
+ return obj;
+ }
+ return null;
+ }
+
+}
+
+
+// lower=Expression
+protected class Interval_LowerAssignment_1 extends AssignmentToken {
+
+ public Interval_LowerAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getIntervalAccess().getLowerAssignment_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Expression_ExpAssignment(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("lower",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("lower");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getExpressionRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getIntervalAccess().getLowerExpressionParserRuleCall_1_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new Interval_Alternatives_0(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+// ".."
+protected class Interval_FullStopFullStopKeyword_2 extends KeywordToken {
+
+ public Interval_FullStopFullStopKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getIntervalAccess().getFullStopFullStopKeyword_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Interval_LowerAssignment_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// upper=Expression
+protected class Interval_UpperAssignment_3 extends AssignmentToken {
+
+ public Interval_UpperAssignment_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getIntervalAccess().getUpperAssignment_3();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Expression_ExpAssignment(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("upper",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("upper");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getExpressionRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getIntervalAccess().getUpperExpressionParserRuleCall_3_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new Interval_FullStopFullStopKeyword_2(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+// isUpperIncluded="]" | "["
+protected class Interval_Alternatives_4 extends AlternativesToken {
+
+ public Interval_Alternatives_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Alternatives getGrammarElement() {
+ return grammarAccess.getIntervalAccess().getAlternatives_4();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Interval_IsUpperIncludedAssignment_4_0(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new Interval_LeftSquareBracketKeyword_4_1(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// isUpperIncluded="]"
+protected class Interval_IsUpperIncludedAssignment_4_0 extends AssignmentToken {
+
+ public Interval_IsUpperIncludedAssignment_4_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getIntervalAccess().getIsUpperIncludedAssignment_4_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Interval_UpperAssignment_3(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("isUpperIncluded",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("isUpperIncluded");
+ if(keywordSerializer.isValid(obj.getEObject(), grammarAccess.getIntervalAccess().getIsUpperIncludedRightSquareBracketKeyword_4_0_0(), value, null)) {
+ type = AssignmentType.KEYWORD;
+ element = grammarAccess.getIntervalAccess().getIsUpperIncludedRightSquareBracketKeyword_4_0_0();
+ return obj;
+ }
+ return null;
+ }
+
+}
+
+// "["
+protected class Interval_LeftSquareBracketKeyword_4_1 extends KeywordToken {
+
+ public Interval_LeftSquareBracketKeyword_4_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getIntervalAccess().getLeftSquareBracketKeyword_4_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Interval_UpperAssignment_3(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+
+
+/************ end Rule Interval ****************/
+
+
+/************ begin Rule CollectionOrTuple ****************
+ *
+ * CollectionOrTuple:
+ * "{" listOfValues=ListOfValues "}";
+ *
+ **/
+
+// "{" listOfValues=ListOfValues "}"
+protected class CollectionOrTuple_Group extends GroupToken {
+
+ public CollectionOrTuple_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getCollectionOrTupleAccess().getGroup();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new CollectionOrTuple_RightCurlyBracketKeyword_2(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getCollectionOrTupleRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// "{"
+protected class CollectionOrTuple_LeftCurlyBracketKeyword_0 extends KeywordToken {
+
+ public CollectionOrTuple_LeftCurlyBracketKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getCollectionOrTupleAccess().getLeftCurlyBracketKeyword_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+ }
+ }
+
+}
+
+// listOfValues=ListOfValues
+protected class CollectionOrTuple_ListOfValuesAssignment_1 extends AssignmentToken {
+
+ public CollectionOrTuple_ListOfValuesAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getCollectionOrTupleAccess().getListOfValuesAssignment_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ListOfValues_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("listOfValues",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("listOfValues");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getListOfValuesRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getCollectionOrTupleAccess().getListOfValuesListOfValuesParserRuleCall_1_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new CollectionOrTuple_LeftCurlyBracketKeyword_0(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+// "}"
+protected class CollectionOrTuple_RightCurlyBracketKeyword_2 extends KeywordToken {
+
+ public CollectionOrTuple_RightCurlyBracketKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getCollectionOrTupleAccess().getRightCurlyBracketKeyword_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new CollectionOrTuple_ListOfValuesAssignment_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+
+/************ end Rule CollectionOrTuple ****************/
+
+
+/************ begin Rule Tuple ****************
+ *
+ * Tuple:
+ * "{" listOfValueNamePairs=ListOfValueNamePairs "}";
+ *
+ **/
+
+// "{" listOfValueNamePairs=ListOfValueNamePairs "}"
+protected class Tuple_Group extends GroupToken {
+
+ public Tuple_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getTupleAccess().getGroup();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Tuple_RightCurlyBracketKeyword_2(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getTupleRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// "{"
+protected class Tuple_LeftCurlyBracketKeyword_0 extends KeywordToken {
+
+ public Tuple_LeftCurlyBracketKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getTupleAccess().getLeftCurlyBracketKeyword_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+ }
+ }
+
+}
+
+// listOfValueNamePairs=ListOfValueNamePairs
+protected class Tuple_ListOfValueNamePairsAssignment_1 extends AssignmentToken {
+
+ public Tuple_ListOfValueNamePairsAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getTupleAccess().getListOfValueNamePairsAssignment_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ListOfValueNamePairs_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("listOfValueNamePairs",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("listOfValueNamePairs");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getListOfValueNamePairsRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getTupleAccess().getListOfValueNamePairsListOfValueNamePairsParserRuleCall_1_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new Tuple_LeftCurlyBracketKeyword_0(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+// "}"
+protected class Tuple_RightCurlyBracketKeyword_2 extends KeywordToken {
+
+ public Tuple_RightCurlyBracketKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getTupleAccess().getRightCurlyBracketKeyword_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Tuple_ListOfValueNamePairsAssignment_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+
+/************ end Rule Tuple ****************/
+
+
+/************ begin Rule ListOfValues ****************
+ *
+ * ListOfValues:
+ * values+=Expression ("," values+=Expression)*;
+ *
+ **/
+
+// values+=Expression ("," values+=Expression)*
+protected class ListOfValues_Group extends GroupToken {
+
+ public ListOfValues_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getListOfValuesAccess().getGroup();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ListOfValues_Group_1(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new ListOfValues_ValuesAssignment_0(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getListOfValuesRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// values+=Expression
+protected class ListOfValues_ValuesAssignment_0 extends AssignmentToken {
+
+ public ListOfValues_ValuesAssignment_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getListOfValuesAccess().getValuesAssignment_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Expression_ExpAssignment(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("values",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("values");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getExpressionRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getListOfValuesAccess().getValuesExpressionParserRuleCall_0_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, consumed);
+ }
+ }
+}
+
+// ("," values+=Expression)*
+protected class ListOfValues_Group_1 extends GroupToken {
+
+ public ListOfValues_Group_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getListOfValuesAccess().getGroup_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ListOfValues_ValuesAssignment_1_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// ","
+protected class ListOfValues_CommaKeyword_1_0 extends KeywordToken {
+
+ public ListOfValues_CommaKeyword_1_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getListOfValuesAccess().getCommaKeyword_1_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ListOfValues_Group_1(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new ListOfValues_ValuesAssignment_0(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// values+=Expression
+protected class ListOfValues_ValuesAssignment_1_1 extends AssignmentToken {
+
+ public ListOfValues_ValuesAssignment_1_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getListOfValuesAccess().getValuesAssignment_1_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Expression_ExpAssignment(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("values",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("values");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getExpressionRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getListOfValuesAccess().getValuesExpressionParserRuleCall_1_1_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new ListOfValues_CommaKeyword_1_0(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+
+
+/************ end Rule ListOfValues ****************/
+
+
+/************ begin Rule ListOfValueNamePairs ****************
+ *
+ * ListOfValueNamePairs:
+ * valueNamePairs+=ValueNamePair ("," valueNamePairs+=ValueNamePair)*;
+ *
+ **/
+
+// valueNamePairs+=ValueNamePair ("," valueNamePairs+=ValueNamePair)*
+protected class ListOfValueNamePairs_Group extends GroupToken {
+
+ public ListOfValueNamePairs_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getListOfValueNamePairsAccess().getGroup();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ListOfValueNamePairs_Group_1(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new ListOfValueNamePairs_ValueNamePairsAssignment_0(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getListOfValueNamePairsRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// valueNamePairs+=ValueNamePair
+protected class ListOfValueNamePairs_ValueNamePairsAssignment_0 extends AssignmentToken {
+
+ public ListOfValueNamePairs_ValueNamePairsAssignment_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getListOfValueNamePairsAccess().getValueNamePairsAssignment_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ValueNamePair_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("valueNamePairs",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("valueNamePairs");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getValueNamePairRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getListOfValueNamePairsAccess().getValueNamePairsValueNamePairParserRuleCall_0_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, consumed);
+ }
+ }
+}
+
+// ("," valueNamePairs+=ValueNamePair)*
+protected class ListOfValueNamePairs_Group_1 extends GroupToken {
+
+ public ListOfValueNamePairs_Group_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getListOfValueNamePairsAccess().getGroup_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ListOfValueNamePairs_ValueNamePairsAssignment_1_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// ","
+protected class ListOfValueNamePairs_CommaKeyword_1_0 extends KeywordToken {
+
+ public ListOfValueNamePairs_CommaKeyword_1_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getListOfValueNamePairsAccess().getCommaKeyword_1_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ListOfValueNamePairs_Group_1(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new ListOfValueNamePairs_ValueNamePairsAssignment_0(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// valueNamePairs+=ValueNamePair
+protected class ListOfValueNamePairs_ValueNamePairsAssignment_1_1 extends AssignmentToken {
+
+ public ListOfValueNamePairs_ValueNamePairsAssignment_1_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getListOfValueNamePairsAccess().getValueNamePairsAssignment_1_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ValueNamePair_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("valueNamePairs",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("valueNamePairs");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getValueNamePairRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getListOfValueNamePairsAccess().getValueNamePairsValueNamePairParserRuleCall_1_1_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new ListOfValueNamePairs_CommaKeyword_1_0(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+
+
+/************ end Rule ListOfValueNamePairs ****************/
+
+
+/************ begin Rule ValueNamePair ****************
+ *
+ * ValueNamePair:
+ * property=[uml::Property] "=" value=Expression;
+ *
+ **/
+
+// property=[uml::Property] "=" value=Expression
+protected class ValueNamePair_Group extends GroupToken {
+
+ public ValueNamePair_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getValueNamePairAccess().getGroup();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ValueNamePair_ValueAssignment_2(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getValueNamePairRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// property=[uml::Property]
+protected class ValueNamePair_PropertyAssignment_0 extends AssignmentToken {
+
+ public ValueNamePair_PropertyAssignment_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getValueNamePairAccess().getPropertyAssignment_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("property",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("property");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getValueNamePairAccess().getPropertyPropertyCrossReference_0_0().getType().getClassifier())) {
+ type = AssignmentType.CROSS_REFERENCE;
+ element = grammarAccess.getValueNamePairAccess().getPropertyPropertyCrossReference_0_0();
+ return obj;
+ }
+ }
+ return null;
+ }
+
+}
+
+// "="
+protected class ValueNamePair_EqualsSignKeyword_1 extends KeywordToken {
+
+ public ValueNamePair_EqualsSignKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getValueNamePairAccess().getEqualsSignKeyword_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ValueNamePair_PropertyAssignment_0(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// value=Expression
+protected class ValueNamePair_ValueAssignment_2 extends AssignmentToken {
+
+ public ValueNamePair_ValueAssignment_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getValueNamePairAccess().getValueAssignment_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Expression_ExpAssignment(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("value",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("value");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getExpressionRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getValueNamePairAccess().getValueExpressionParserRuleCall_2_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new ValueNamePair_EqualsSignKeyword_1(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+
+/************ end Rule ValueNamePair ****************/
+
+
+/************ begin Rule TimeExpression ****************
+ *
+ * TimeExpression:
+ * InstantObsExpression | DurationObsExpression | JitterExp;
+ *
+ **/
+
+// InstantObsExpression | DurationObsExpression | JitterExp
+protected class TimeExpression_Alternatives extends AlternativesToken {
+
+ public TimeExpression_Alternatives(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Alternatives getGrammarElement() {
+ return grammarAccess.getTimeExpressionAccess().getAlternatives();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new TimeExpression_InstantObsExpressionParserRuleCall_0(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new TimeExpression_DurationObsExpressionParserRuleCall_1(lastRuleCallOrigin, this, 1, inst);
+ case 2: return new TimeExpression_JitterExpParserRuleCall_2(lastRuleCallOrigin, this, 2, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getDurationObsExpressionRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getInstantObsExpressionRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getJitterExpRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// InstantObsExpression
+protected class TimeExpression_InstantObsExpressionParserRuleCall_0 extends RuleCallToken {
+
+ public TimeExpression_InstantObsExpressionParserRuleCall_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public RuleCall getGrammarElement() {
+ return grammarAccess.getTimeExpressionAccess().getInstantObsExpressionParserRuleCall_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new InstantObsExpression_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getInstantObsExpressionRule().getType().getClassifier())
+ return null;
+ if(checkForRecursion(InstantObsExpression_Group.class, eObjectConsumer)) return null;
+ return eObjectConsumer;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+ }
+ }
+}
+
+// DurationObsExpression
+protected class TimeExpression_DurationObsExpressionParserRuleCall_1 extends RuleCallToken {
+
+ public TimeExpression_DurationObsExpressionParserRuleCall_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public RuleCall getGrammarElement() {
+ return grammarAccess.getTimeExpressionAccess().getDurationObsExpressionParserRuleCall_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new DurationObsExpression_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getDurationObsExpressionRule().getType().getClassifier())
+ return null;
+ if(checkForRecursion(DurationObsExpression_Group.class, eObjectConsumer)) return null;
+ return eObjectConsumer;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+ }
+ }
+}
+
+// JitterExp
+protected class TimeExpression_JitterExpParserRuleCall_2 extends RuleCallToken {
+
+ public TimeExpression_JitterExpParserRuleCall_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public RuleCall getGrammarElement() {
+ return grammarAccess.getTimeExpressionAccess().getJitterExpParserRuleCall_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new JitterExp_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getJitterExpRule().getType().getClassifier())
+ return null;
+ if(checkForRecursion(JitterExp_Group.class, eObjectConsumer)) return null;
+ return eObjectConsumer;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+ }
+ }
+}
+
+
+/************ end Rule TimeExpression ****************/
+
+
+/************ begin Rule InstantObsExpression ****************
+ *
+ * InstantObsExpression:
+ * "@" id=InstantObsName ("(" index=Expression ")")? ("when" "(" condition=Expression ")")?;
+ *
+ **/
+
+// "@" id=InstantObsName ("(" index=Expression ")")? ("when" "(" condition=Expression ")")?
+protected class InstantObsExpression_Group extends GroupToken {
+
+ public InstantObsExpression_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getInstantObsExpressionAccess().getGroup();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new InstantObsExpression_Group_3(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new InstantObsExpression_Group_2(lastRuleCallOrigin, this, 1, inst);
+ case 2: return new InstantObsExpression_IdAssignment_1(lastRuleCallOrigin, this, 2, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getInstantObsExpressionRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// "@"
+protected class InstantObsExpression_CommercialAtKeyword_0 extends KeywordToken {
+
+ public InstantObsExpression_CommercialAtKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getInstantObsExpressionAccess().getCommercialAtKeyword_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+ }
+ }
+
+}
+
+// id=InstantObsName
+protected class InstantObsExpression_IdAssignment_1 extends AssignmentToken {
+
+ public InstantObsExpression_IdAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getInstantObsExpressionAccess().getIdAssignment_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new InstantObsName_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("id",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("id");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getInstantObsNameRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getInstantObsExpressionAccess().getIdInstantObsNameParserRuleCall_1_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new InstantObsExpression_CommercialAtKeyword_0(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+// ("(" index=Expression ")")?
+protected class InstantObsExpression_Group_2 extends GroupToken {
+
+ public InstantObsExpression_Group_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getInstantObsExpressionAccess().getGroup_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new InstantObsExpression_RightParenthesisKeyword_2_2(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// "("
+protected class InstantObsExpression_LeftParenthesisKeyword_2_0 extends KeywordToken {
+
+ public InstantObsExpression_LeftParenthesisKeyword_2_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getInstantObsExpressionAccess().getLeftParenthesisKeyword_2_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new InstantObsExpression_IdAssignment_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// index=Expression
+protected class InstantObsExpression_IndexAssignment_2_1 extends AssignmentToken {
+
+ public InstantObsExpression_IndexAssignment_2_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getInstantObsExpressionAccess().getIndexAssignment_2_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Expression_ExpAssignment(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("index",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("index");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getExpressionRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getInstantObsExpressionAccess().getIndexExpressionParserRuleCall_2_1_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new InstantObsExpression_LeftParenthesisKeyword_2_0(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+// ")"
+protected class InstantObsExpression_RightParenthesisKeyword_2_2 extends KeywordToken {
+
+ public InstantObsExpression_RightParenthesisKeyword_2_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getInstantObsExpressionAccess().getRightParenthesisKeyword_2_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new InstantObsExpression_IndexAssignment_2_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+
+// ("when" "(" condition=Expression ")")?
+protected class InstantObsExpression_Group_3 extends GroupToken {
+
+ public InstantObsExpression_Group_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getInstantObsExpressionAccess().getGroup_3();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new InstantObsExpression_RightParenthesisKeyword_3_3(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// "when"
+protected class InstantObsExpression_WhenKeyword_3_0 extends KeywordToken {
+
+ public InstantObsExpression_WhenKeyword_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getInstantObsExpressionAccess().getWhenKeyword_3_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new InstantObsExpression_Group_2(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new InstantObsExpression_IdAssignment_1(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// "("
+protected class InstantObsExpression_LeftParenthesisKeyword_3_1 extends KeywordToken {
+
+ public InstantObsExpression_LeftParenthesisKeyword_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getInstantObsExpressionAccess().getLeftParenthesisKeyword_3_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new InstantObsExpression_WhenKeyword_3_0(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// condition=Expression
+protected class InstantObsExpression_ConditionAssignment_3_2 extends AssignmentToken {
+
+ public InstantObsExpression_ConditionAssignment_3_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getInstantObsExpressionAccess().getConditionAssignment_3_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Expression_ExpAssignment(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("condition",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("condition");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getExpressionRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getInstantObsExpressionAccess().getConditionExpressionParserRuleCall_3_2_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new InstantObsExpression_LeftParenthesisKeyword_3_1(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+// ")"
+protected class InstantObsExpression_RightParenthesisKeyword_3_3 extends KeywordToken {
+
+ public InstantObsExpression_RightParenthesisKeyword_3_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getInstantObsExpressionAccess().getRightParenthesisKeyword_3_3();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new InstantObsExpression_ConditionAssignment_3_2(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+
+
+/************ end Rule InstantObsExpression ****************/
+
+
+/************ begin Rule InstantObsName ****************
+ *
+ * InstantObsName:
+ * path=QualifiedName? instantId=[uml::TimeObservation];
+ *
+ **/
+
+// path=QualifiedName? instantId=[uml::TimeObservation]
+protected class InstantObsName_Group extends GroupToken {
+
+ public InstantObsName_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getInstantObsNameAccess().getGroup();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new InstantObsName_InstantIdAssignment_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getInstantObsNameRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// path=QualifiedName?
+protected class InstantObsName_PathAssignment_0 extends AssignmentToken {
+
+ public InstantObsName_PathAssignment_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getInstantObsNameAccess().getPathAssignment_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new QualifiedName_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("path",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("path");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getQualifiedNameRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getInstantObsNameAccess().getPathQualifiedNameParserRuleCall_0_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, consumed);
+ }
+ }
+}
+
+// instantId=[uml::TimeObservation]
+protected class InstantObsName_InstantIdAssignment_1 extends AssignmentToken {
+
+ public InstantObsName_InstantIdAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getInstantObsNameAccess().getInstantIdAssignment_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new InstantObsName_PathAssignment_0(lastRuleCallOrigin, this, 0, inst);
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index - 1, inst);
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("instantId",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("instantId");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getInstantObsNameAccess().getInstantIdTimeObservationCrossReference_1_0().getType().getClassifier())) {
+ type = AssignmentType.CROSS_REFERENCE;
+ element = grammarAccess.getInstantObsNameAccess().getInstantIdTimeObservationCrossReference_1_0();
+ return obj;
+ }
+ }
+ return null;
+ }
+
+}
+
+
+/************ end Rule InstantObsName ****************/
+
+
+/************ begin Rule DurationObsExpression ****************
+ *
+ * DurationObsExpression:
+ * "&" id=DurationObsName ("(" index=Expression ")")? ("when" "(" condition=Expression ")")?;
+ *
+ **/
+
+// "&" id=DurationObsName ("(" index=Expression ")")? ("when" "(" condition=Expression ")")?
+protected class DurationObsExpression_Group extends GroupToken {
+
+ public DurationObsExpression_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getDurationObsExpressionAccess().getGroup();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new DurationObsExpression_Group_3(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new DurationObsExpression_Group_2(lastRuleCallOrigin, this, 1, inst);
+ case 2: return new DurationObsExpression_IdAssignment_1(lastRuleCallOrigin, this, 2, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getDurationObsExpressionRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// "&"
+protected class DurationObsExpression_AmpersandKeyword_0 extends KeywordToken {
+
+ public DurationObsExpression_AmpersandKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getDurationObsExpressionAccess().getAmpersandKeyword_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+ }
+ }
+
+}
+
+// id=DurationObsName
+protected class DurationObsExpression_IdAssignment_1 extends AssignmentToken {
+
+ public DurationObsExpression_IdAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getDurationObsExpressionAccess().getIdAssignment_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new DurationObsName_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("id",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("id");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getDurationObsNameRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getDurationObsExpressionAccess().getIdDurationObsNameParserRuleCall_1_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new DurationObsExpression_AmpersandKeyword_0(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+// ("(" index=Expression ")")?
+protected class DurationObsExpression_Group_2 extends GroupToken {
+
+ public DurationObsExpression_Group_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getDurationObsExpressionAccess().getGroup_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new DurationObsExpression_RightParenthesisKeyword_2_2(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// "("
+protected class DurationObsExpression_LeftParenthesisKeyword_2_0 extends KeywordToken {
+
+ public DurationObsExpression_LeftParenthesisKeyword_2_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getDurationObsExpressionAccess().getLeftParenthesisKeyword_2_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new DurationObsExpression_IdAssignment_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// index=Expression
+protected class DurationObsExpression_IndexAssignment_2_1 extends AssignmentToken {
+
+ public DurationObsExpression_IndexAssignment_2_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getDurationObsExpressionAccess().getIndexAssignment_2_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Expression_ExpAssignment(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("index",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("index");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getExpressionRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getDurationObsExpressionAccess().getIndexExpressionParserRuleCall_2_1_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new DurationObsExpression_LeftParenthesisKeyword_2_0(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+// ")"
+protected class DurationObsExpression_RightParenthesisKeyword_2_2 extends KeywordToken {
+
+ public DurationObsExpression_RightParenthesisKeyword_2_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getDurationObsExpressionAccess().getRightParenthesisKeyword_2_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new DurationObsExpression_IndexAssignment_2_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+
+// ("when" "(" condition=Expression ")")?
+protected class DurationObsExpression_Group_3 extends GroupToken {
+
+ public DurationObsExpression_Group_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getDurationObsExpressionAccess().getGroup_3();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new DurationObsExpression_RightParenthesisKeyword_3_3(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// "when"
+protected class DurationObsExpression_WhenKeyword_3_0 extends KeywordToken {
+
+ public DurationObsExpression_WhenKeyword_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getDurationObsExpressionAccess().getWhenKeyword_3_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new DurationObsExpression_Group_2(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new DurationObsExpression_IdAssignment_1(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// "("
+protected class DurationObsExpression_LeftParenthesisKeyword_3_1 extends KeywordToken {
+
+ public DurationObsExpression_LeftParenthesisKeyword_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getDurationObsExpressionAccess().getLeftParenthesisKeyword_3_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new DurationObsExpression_WhenKeyword_3_0(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// condition=Expression
+protected class DurationObsExpression_ConditionAssignment_3_2 extends AssignmentToken {
+
+ public DurationObsExpression_ConditionAssignment_3_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getDurationObsExpressionAccess().getConditionAssignment_3_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Expression_ExpAssignment(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("condition",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("condition");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getExpressionRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getDurationObsExpressionAccess().getConditionExpressionParserRuleCall_3_2_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new DurationObsExpression_LeftParenthesisKeyword_3_1(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+// ")"
+protected class DurationObsExpression_RightParenthesisKeyword_3_3 extends KeywordToken {
+
+ public DurationObsExpression_RightParenthesisKeyword_3_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getDurationObsExpressionAccess().getRightParenthesisKeyword_3_3();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new DurationObsExpression_ConditionAssignment_3_2(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+
+
+/************ end Rule DurationObsExpression ****************/
+
+
+/************ begin Rule DurationObsName ****************
+ *
+ * DurationObsName:
+ * path=QualifiedName? durationId=[uml::DurationObservation];
+ *
+ **/
+
+// path=QualifiedName? durationId=[uml::DurationObservation]
+protected class DurationObsName_Group extends GroupToken {
+
+ public DurationObsName_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getDurationObsNameAccess().getGroup();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new DurationObsName_DurationIdAssignment_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getDurationObsNameRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// path=QualifiedName?
+protected class DurationObsName_PathAssignment_0 extends AssignmentToken {
+
+ public DurationObsName_PathAssignment_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getDurationObsNameAccess().getPathAssignment_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new QualifiedName_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("path",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("path");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getQualifiedNameRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getDurationObsNameAccess().getPathQualifiedNameParserRuleCall_0_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, consumed);
+ }
+ }
+}
+
+// durationId=[uml::DurationObservation]
+protected class DurationObsName_DurationIdAssignment_1 extends AssignmentToken {
+
+ public DurationObsName_DurationIdAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getDurationObsNameAccess().getDurationIdAssignment_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new DurationObsName_PathAssignment_0(lastRuleCallOrigin, this, 0, inst);
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index - 1, inst);
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("durationId",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("durationId");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getDurationObsNameAccess().getDurationIdDurationObservationCrossReference_1_0().getType().getClassifier())) {
+ type = AssignmentType.CROSS_REFERENCE;
+ element = grammarAccess.getDurationObsNameAccess().getDurationIdDurationObservationCrossReference_1_0();
+ return obj;
+ }
+ }
+ return null;
+ }
+
+}
+
+
+/************ end Rule DurationObsName ****************/
+
+
+/************ begin Rule JitterExp ****************
+ *
+ * JitterExp:
+ * "jitter(" firstInstant=InstantObsExpression ("-" secondInstant=InstantObsExpression)? ")";
+ *
+ **/
+
+// "jitter(" firstInstant=InstantObsExpression ("-" secondInstant=InstantObsExpression)? ")"
+protected class JitterExp_Group extends GroupToken {
+
+ public JitterExp_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getJitterExpAccess().getGroup();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new JitterExp_RightParenthesisKeyword_3(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getJitterExpRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// "jitter("
+protected class JitterExp_JitterKeyword_0 extends KeywordToken {
+
+ public JitterExp_JitterKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getJitterExpAccess().getJitterKeyword_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+ }
+ }
+
+}
+
+// firstInstant=InstantObsExpression
+protected class JitterExp_FirstInstantAssignment_1 extends AssignmentToken {
+
+ public JitterExp_FirstInstantAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getJitterExpAccess().getFirstInstantAssignment_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new InstantObsExpression_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("firstInstant",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("firstInstant");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getInstantObsExpressionRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getJitterExpAccess().getFirstInstantInstantObsExpressionParserRuleCall_1_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new JitterExp_JitterKeyword_0(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+// ("-" secondInstant=InstantObsExpression)?
+protected class JitterExp_Group_2 extends GroupToken {
+
+ public JitterExp_Group_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getJitterExpAccess().getGroup_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new JitterExp_SecondInstantAssignment_2_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// "-"
+protected class JitterExp_HyphenMinusKeyword_2_0 extends KeywordToken {
+
+ public JitterExp_HyphenMinusKeyword_2_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getJitterExpAccess().getHyphenMinusKeyword_2_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new JitterExp_FirstInstantAssignment_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// secondInstant=InstantObsExpression
+protected class JitterExp_SecondInstantAssignment_2_1 extends AssignmentToken {
+
+ public JitterExp_SecondInstantAssignment_2_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getJitterExpAccess().getSecondInstantAssignment_2_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new InstantObsExpression_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("secondInstant",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("secondInstant");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getInstantObsExpressionRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getJitterExpAccess().getSecondInstantInstantObsExpressionParserRuleCall_2_1_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new JitterExp_HyphenMinusKeyword_2_0(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+
+// ")"
+protected class JitterExp_RightParenthesisKeyword_3 extends KeywordToken {
+
+ public JitterExp_RightParenthesisKeyword_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getJitterExpAccess().getRightParenthesisKeyword_3();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new JitterExp_Group_2(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new JitterExp_FirstInstantAssignment_1(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+}
+
+
+/************ end Rule JitterExp ****************/
+
+
+/************ begin Rule VariableDeclaration ****************
+ *
+ * VariableDeclaration:
+ * variableDeclaration=VariableDirectionKind? "$" name=ID (":" type=DataTypeName ("=" "(" initValue=Expression ")")? |
+ * "=" "(" initValue=Expression ")");
+ *
+ **/
+
+// variableDeclaration=VariableDirectionKind? "$" name=ID (":" type=DataTypeName ("=" "(" initValue=Expression ")")? | "="
+// "(" initValue=Expression ")")
+protected class VariableDeclaration_Group extends GroupToken {
+
+ public VariableDeclaration_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getVariableDeclarationAccess().getGroup();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new VariableDeclaration_Alternatives_3(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getVariableDeclarationRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// variableDeclaration=VariableDirectionKind?
+protected class VariableDeclaration_VariableDeclarationAssignment_0 extends AssignmentToken {
+
+ public VariableDeclaration_VariableDeclarationAssignment_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getVariableDeclarationAccess().getVariableDeclarationAssignment_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("variableDeclaration",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("variableDeclaration");
+ if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getVariableDeclarationAccess().getVariableDeclarationVariableDirectionKindParserRuleCall_0_0(), value, null)) {
+ type = AssignmentType.DATATYPE_RULE_CALL;
+ element = grammarAccess.getVariableDeclarationAccess().getVariableDeclarationVariableDirectionKindParserRuleCall_0_0();
+ return obj;
+ }
+ return null;
+ }
+
+}
+
+// "$"
+protected class VariableDeclaration_DollarSignKeyword_1 extends KeywordToken {
+
+ public VariableDeclaration_DollarSignKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getVariableDeclarationAccess().getDollarSignKeyword_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new VariableDeclaration_VariableDeclarationAssignment_0(lastRuleCallOrigin, this, 0, inst);
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index - 1, inst);
+ }
+ }
+
+}
+
+// name=ID
+protected class VariableDeclaration_NameAssignment_2 extends AssignmentToken {
+
+ public VariableDeclaration_NameAssignment_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getVariableDeclarationAccess().getNameAssignment_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new VariableDeclaration_DollarSignKeyword_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("name",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("name");
+ if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getVariableDeclarationAccess().getNameIDTerminalRuleCall_2_0(), value, null)) {
+ type = AssignmentType.TERMINAL_RULE_CALL;
+ element = grammarAccess.getVariableDeclarationAccess().getNameIDTerminalRuleCall_2_0();
+ return obj;
+ }
+ return null;
+ }
+
+}
+
+// ":" type=DataTypeName ("=" "(" initValue=Expression ")")? | "=" "(" initValue=Expression ")"
+protected class VariableDeclaration_Alternatives_3 extends AlternativesToken {
+
+ public VariableDeclaration_Alternatives_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Alternatives getGrammarElement() {
+ return grammarAccess.getVariableDeclarationAccess().getAlternatives_3();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new VariableDeclaration_Group_3_0(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new VariableDeclaration_Group_3_1(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// ":" type=DataTypeName ("=" "(" initValue=Expression ")")?
+protected class VariableDeclaration_Group_3_0 extends GroupToken {
+
+ public VariableDeclaration_Group_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getVariableDeclarationAccess().getGroup_3_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new VariableDeclaration_Group_3_0_2(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new VariableDeclaration_TypeAssignment_3_0_1(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// ":"
+protected class VariableDeclaration_ColonKeyword_3_0_0 extends KeywordToken {
+
+ public VariableDeclaration_ColonKeyword_3_0_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getVariableDeclarationAccess().getColonKeyword_3_0_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new VariableDeclaration_NameAssignment_2(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// type=DataTypeName
+protected class VariableDeclaration_TypeAssignment_3_0_1 extends AssignmentToken {
+
+ public VariableDeclaration_TypeAssignment_3_0_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getVariableDeclarationAccess().getTypeAssignment_3_0_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new DataTypeName_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("type",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("type");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getDataTypeNameRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getVariableDeclarationAccess().getTypeDataTypeNameParserRuleCall_3_0_1_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new VariableDeclaration_ColonKeyword_3_0_0(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+// ("=" "(" initValue=Expression ")")?
+protected class VariableDeclaration_Group_3_0_2 extends GroupToken {
+
+ public VariableDeclaration_Group_3_0_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getVariableDeclarationAccess().getGroup_3_0_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new VariableDeclaration_RightParenthesisKeyword_3_0_2_3(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// "="
+protected class VariableDeclaration_EqualsSignKeyword_3_0_2_0 extends KeywordToken {
+
+ public VariableDeclaration_EqualsSignKeyword_3_0_2_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getVariableDeclarationAccess().getEqualsSignKeyword_3_0_2_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new VariableDeclaration_TypeAssignment_3_0_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// "("
+protected class VariableDeclaration_LeftParenthesisKeyword_3_0_2_1 extends KeywordToken {
+
+ public VariableDeclaration_LeftParenthesisKeyword_3_0_2_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getVariableDeclarationAccess().getLeftParenthesisKeyword_3_0_2_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new VariableDeclaration_EqualsSignKeyword_3_0_2_0(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// initValue=Expression
+protected class VariableDeclaration_InitValueAssignment_3_0_2_2 extends AssignmentToken {
+
+ public VariableDeclaration_InitValueAssignment_3_0_2_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getVariableDeclarationAccess().getInitValueAssignment_3_0_2_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Expression_ExpAssignment(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("initValue",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("initValue");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getExpressionRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getVariableDeclarationAccess().getInitValueExpressionParserRuleCall_3_0_2_2_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new VariableDeclaration_LeftParenthesisKeyword_3_0_2_1(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+// ")"
+protected class VariableDeclaration_RightParenthesisKeyword_3_0_2_3 extends KeywordToken {
+
+ public VariableDeclaration_RightParenthesisKeyword_3_0_2_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getVariableDeclarationAccess().getRightParenthesisKeyword_3_0_2_3();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new VariableDeclaration_InitValueAssignment_3_0_2_2(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+
+
+// "=" "(" initValue=Expression ")"
+protected class VariableDeclaration_Group_3_1 extends GroupToken {
+
+ public VariableDeclaration_Group_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getVariableDeclarationAccess().getGroup_3_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new VariableDeclaration_RightParenthesisKeyword_3_1_3(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// "="
+protected class VariableDeclaration_EqualsSignKeyword_3_1_0 extends KeywordToken {
+
+ public VariableDeclaration_EqualsSignKeyword_3_1_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getVariableDeclarationAccess().getEqualsSignKeyword_3_1_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new VariableDeclaration_NameAssignment_2(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// "("
+protected class VariableDeclaration_LeftParenthesisKeyword_3_1_1 extends KeywordToken {
+
+ public VariableDeclaration_LeftParenthesisKeyword_3_1_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getVariableDeclarationAccess().getLeftParenthesisKeyword_3_1_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new VariableDeclaration_EqualsSignKeyword_3_1_0(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// initValue=Expression
+protected class VariableDeclaration_InitValueAssignment_3_1_2 extends AssignmentToken {
+
+ public VariableDeclaration_InitValueAssignment_3_1_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getVariableDeclarationAccess().getInitValueAssignment_3_1_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Expression_ExpAssignment(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("initValue",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("initValue");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getExpressionRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getVariableDeclarationAccess().getInitValueExpressionParserRuleCall_3_1_2_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new VariableDeclaration_LeftParenthesisKeyword_3_1_1(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+// ")"
+protected class VariableDeclaration_RightParenthesisKeyword_3_1_3 extends KeywordToken {
+
+ public VariableDeclaration_RightParenthesisKeyword_3_1_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getVariableDeclarationAccess().getRightParenthesisKeyword_3_1_3();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new VariableDeclaration_InitValueAssignment_3_1_2(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+
+
+
+/************ end Rule VariableDeclaration ****************/
+
+
+
+/************ begin Rule DataTypeName ****************
+ *
+ * DataTypeName:
+ * path=QualifiedName? type=[uml::DataType];
+ *
+ **/
+
+// path=QualifiedName? type=[uml::DataType]
+protected class DataTypeName_Group extends GroupToken {
+
+ public DataTypeName_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getDataTypeNameAccess().getGroup();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new DataTypeName_TypeAssignment_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getDataTypeNameRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// path=QualifiedName?
+protected class DataTypeName_PathAssignment_0 extends AssignmentToken {
+
+ public DataTypeName_PathAssignment_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getDataTypeNameAccess().getPathAssignment_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new QualifiedName_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("path",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("path");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getQualifiedNameRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getDataTypeNameAccess().getPathQualifiedNameParserRuleCall_0_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, consumed);
+ }
+ }
+}
+
+// type=[uml::DataType]
+protected class DataTypeName_TypeAssignment_1 extends AssignmentToken {
+
+ public DataTypeName_TypeAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getDataTypeNameAccess().getTypeAssignment_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new DataTypeName_PathAssignment_0(lastRuleCallOrigin, this, 0, inst);
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index - 1, inst);
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("type",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("type");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getDataTypeNameAccess().getTypeDataTypeCrossReference_1_0().getType().getClassifier())) {
+ type = AssignmentType.CROSS_REFERENCE;
+ element = grammarAccess.getDataTypeNameAccess().getTypeDataTypeCrossReference_1_0();
+ return obj;
+ }
+ }
+ return null;
+ }
+
+}
+
+
+/************ end Rule DataTypeName ****************/
+
+
+/************ begin Rule NumberLiteralRule ****************
+ *
+ * //////////////////////////////////////////////////////////////////////////////////////////////////////
+ * //LITERAL
+ * //////////////////////////////////////////////////////////////////////////////////////////////////////
+ * NumberLiteralRule:
+ * IntegerLiteralRule | UnlimitedLiteralRule | RealLiteralRule;
+ *
+ **/
+
+// IntegerLiteralRule | UnlimitedLiteralRule | RealLiteralRule
+protected class NumberLiteralRule_Alternatives extends AlternativesToken {
+
+ public NumberLiteralRule_Alternatives(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Alternatives getGrammarElement() {
+ return grammarAccess.getNumberLiteralRuleAccess().getAlternatives();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new NumberLiteralRule_IntegerLiteralRuleParserRuleCall_0(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new NumberLiteralRule_UnlimitedLiteralRuleParserRuleCall_1(lastRuleCallOrigin, this, 1, inst);
+ case 2: return new NumberLiteralRule_RealLiteralRuleParserRuleCall_2(lastRuleCallOrigin, this, 2, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getIntegerLiteralRuleRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getRealLiteralRuleRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getUnlimitedLiteralRuleRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// IntegerLiteralRule
+protected class NumberLiteralRule_IntegerLiteralRuleParserRuleCall_0 extends RuleCallToken {
+
+ public NumberLiteralRule_IntegerLiteralRuleParserRuleCall_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public RuleCall getGrammarElement() {
+ return grammarAccess.getNumberLiteralRuleAccess().getIntegerLiteralRuleParserRuleCall_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new IntegerLiteralRule_ValueAssignment(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getIntegerLiteralRuleRule().getType().getClassifier())
+ return null;
+ if(checkForRecursion(IntegerLiteralRule_ValueAssignment.class, eObjectConsumer)) return null;
+ return eObjectConsumer;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+ }
+ }
+}
+
+// UnlimitedLiteralRule
+protected class NumberLiteralRule_UnlimitedLiteralRuleParserRuleCall_1 extends RuleCallToken {
+
+ public NumberLiteralRule_UnlimitedLiteralRuleParserRuleCall_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public RuleCall getGrammarElement() {
+ return grammarAccess.getNumberLiteralRuleAccess().getUnlimitedLiteralRuleParserRuleCall_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new UnlimitedLiteralRule_ValueAssignment(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getUnlimitedLiteralRuleRule().getType().getClassifier())
+ return null;
+ if(checkForRecursion(UnlimitedLiteralRule_ValueAssignment.class, eObjectConsumer)) return null;
+ return eObjectConsumer;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+ }
+ }
+}
+
+// RealLiteralRule
+protected class NumberLiteralRule_RealLiteralRuleParserRuleCall_2 extends RuleCallToken {
+
+ public NumberLiteralRule_RealLiteralRuleParserRuleCall_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public RuleCall getGrammarElement() {
+ return grammarAccess.getNumberLiteralRuleAccess().getRealLiteralRuleParserRuleCall_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new RealLiteralRule_ValueAssignment(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getRealLiteralRuleRule().getType().getClassifier())
+ return null;
+ if(checkForRecursion(RealLiteralRule_ValueAssignment.class, eObjectConsumer)) return null;
+ return eObjectConsumer;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+ }
+ }
+}
+
+
+/************ end Rule NumberLiteralRule ****************/
+
+
+/************ begin Rule IntegerLiteralRule ****************
+ *
+ * IntegerLiteralRule:
+ * value=IntegerLiteral;
+ *
+ **/
+
+// value=IntegerLiteral
+protected class IntegerLiteralRule_ValueAssignment extends AssignmentToken {
+
+ public IntegerLiteralRule_ValueAssignment(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getIntegerLiteralRuleAccess().getValueAssignment();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getIntegerLiteralRuleRule().getType().getClassifier())
+ return null;
+ if((value = eObjectConsumer.getConsumable("value",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("value");
+ if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getIntegerLiteralRuleAccess().getValueIntegerLiteralTerminalRuleCall_0(), value, null)) {
+ type = AssignmentType.TERMINAL_RULE_CALL;
+ element = grammarAccess.getIntegerLiteralRuleAccess().getValueIntegerLiteralTerminalRuleCall_0();
+ return obj;
+ }
+ return null;
+ }
+
+}
+
+/************ end Rule IntegerLiteralRule ****************/
+
+
+/************ begin Rule UnlimitedLiteralRule ****************
+ *
+ * //UnlimitedLiteralRule :
+ * // value = UnlimitedLiteral ;
+ * //terminal UnlimitedLiteral :
+ * // '*' ;
+ * UnlimitedLiteralRule:
+ * value="*";
+ *
+ **/
+
+// value="*"
+protected class UnlimitedLiteralRule_ValueAssignment extends AssignmentToken {
+
+ public UnlimitedLiteralRule_ValueAssignment(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getUnlimitedLiteralRuleAccess().getValueAssignment();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getUnlimitedLiteralRuleRule().getType().getClassifier())
+ return null;
+ if((value = eObjectConsumer.getConsumable("value",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("value");
+ if(keywordSerializer.isValid(obj.getEObject(), grammarAccess.getUnlimitedLiteralRuleAccess().getValueAsteriskKeyword_0(), value, null)) {
+ type = AssignmentType.KEYWORD;
+ element = grammarAccess.getUnlimitedLiteralRuleAccess().getValueAsteriskKeyword_0();
+ return obj;
+ }
+ return null;
+ }
+
+}
+
+/************ end Rule UnlimitedLiteralRule ****************/
+
+
+/************ begin Rule RealLiteralRule ****************
+ *
+ * RealLiteralRule:
+ * value=RealLiteral;
+ *
+ **/
+
+// value=RealLiteral
+protected class RealLiteralRule_ValueAssignment extends AssignmentToken {
+
+ public RealLiteralRule_ValueAssignment(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getRealLiteralRuleAccess().getValueAssignment();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getRealLiteralRuleRule().getType().getClassifier())
+ return null;
+ if((value = eObjectConsumer.getConsumable("value",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("value");
+ if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getRealLiteralRuleAccess().getValueRealLiteralTerminalRuleCall_0(), value, null)) {
+ type = AssignmentType.TERMINAL_RULE_CALL;
+ element = grammarAccess.getRealLiteralRuleAccess().getValueRealLiteralTerminalRuleCall_0();
+ return obj;
+ }
+ return null;
+ }
+
+}
+
+/************ end Rule RealLiteralRule ****************/
+
+
+/************ begin Rule DateTimeLiteralRule ****************
+ *
+ * //DateTimeLiteral:
+ * // TimeString (DateString)? (DayString)? |
+ * // DateString (DayString)? |
+ * // DayString ;
+ * //terminal DateString :
+ * // ('0'..'9')('0'..'9')('0'..'9')('0'..'9')'/'('0'('0'..'9')|'1'('0'..'2'))'/'(('0'..'2')('0'..'9')|'3' ('0'|'1')) ;
+ * //terminal TimeString :
+ * // (('0'..'1')('0'..'9')|'2'('0'..'3'))':'('0'..'5')('0'..'9')(':'('0'..'5')('0'..'9')(':'('0'..'9')('0'..'9'))?)? ;
+ * //terminal DayString :
+ * // "Mon" | "Tue" | "Wed" | "Thr" | "Fri" | "Sat" | "Sun" ;
+ * DateTimeLiteralRule:
+ * value=DateTimeLiteral;
+ *
+ **/
+
+// value=DateTimeLiteral
+protected class DateTimeLiteralRule_ValueAssignment extends AssignmentToken {
+
+ public DateTimeLiteralRule_ValueAssignment(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getDateTimeLiteralRuleAccess().getValueAssignment();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getDateTimeLiteralRuleRule().getType().getClassifier())
+ return null;
+ if((value = eObjectConsumer.getConsumable("value",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("value");
+ if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getDateTimeLiteralRuleAccess().getValueDateTimeLiteralTerminalRuleCall_0(), value, null)) {
+ type = AssignmentType.TERMINAL_RULE_CALL;
+ element = grammarAccess.getDateTimeLiteralRuleAccess().getValueDateTimeLiteralTerminalRuleCall_0();
+ return obj;
+ }
+ return null;
+ }
+
+}
+
+/************ end Rule DateTimeLiteralRule ****************/
+
+
+/************ begin Rule BooleanLiteralRule ****************
+ *
+ * BooleanLiteralRule:
+ * value=BooleanLiteral;
+ *
+ **/
+
+// value=BooleanLiteral
+protected class BooleanLiteralRule_ValueAssignment extends AssignmentToken {
+
+ public BooleanLiteralRule_ValueAssignment(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getBooleanLiteralRuleAccess().getValueAssignment();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getBooleanLiteralRuleRule().getType().getClassifier())
+ return null;
+ if((value = eObjectConsumer.getConsumable("value",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("value");
+ if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getBooleanLiteralRuleAccess().getValueBooleanLiteralTerminalRuleCall_0(), value, null)) {
+ type = AssignmentType.TERMINAL_RULE_CALL;
+ element = grammarAccess.getBooleanLiteralRuleAccess().getValueBooleanLiteralTerminalRuleCall_0();
+ return obj;
+ }
+ return null;
+ }
+
+}
+
+/************ end Rule BooleanLiteralRule ****************/
+
+
+/************ begin Rule NullLiteralRule ****************
+ *
+ * NullLiteralRule:
+ * value=NullLiteral;
+ *
+ **/
+
+// value=NullLiteral
+protected class NullLiteralRule_ValueAssignment extends AssignmentToken {
+
+ public NullLiteralRule_ValueAssignment(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getNullLiteralRuleAccess().getValueAssignment();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getNullLiteralRuleRule().getType().getClassifier())
+ return null;
+ if((value = eObjectConsumer.getConsumable("value",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("value");
+ if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getNullLiteralRuleAccess().getValueNullLiteralTerminalRuleCall_0(), value, null)) {
+ type = AssignmentType.TERMINAL_RULE_CALL;
+ element = grammarAccess.getNullLiteralRuleAccess().getValueNullLiteralTerminalRuleCall_0();
+ return obj;
+ }
+ return null;
+ }
+
+}
+
+/************ end Rule NullLiteralRule ****************/
+
+
+/************ begin Rule DefaultLiteralRule ****************
+ *
+ * //DefaultLiteralRule :
+ * // value = DefaultLiteral ;
+ * //terminal DefaultLiteral :
+ * // '/' ;
+ * DefaultLiteralRule:
+ * value="/";
+ *
+ **/
+
+// value="/"
+protected class DefaultLiteralRule_ValueAssignment extends AssignmentToken {
+
+ public DefaultLiteralRule_ValueAssignment(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getDefaultLiteralRuleAccess().getValueAssignment();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getDefaultLiteralRuleRule().getType().getClassifier())
+ return null;
+ if((value = eObjectConsumer.getConsumable("value",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("value");
+ if(keywordSerializer.isValid(obj.getEObject(), grammarAccess.getDefaultLiteralRuleAccess().getValueSolidusKeyword_0(), value, null)) {
+ type = AssignmentType.KEYWORD;
+ element = grammarAccess.getDefaultLiteralRuleAccess().getValueSolidusKeyword_0();
+ return obj;
+ }
+ return null;
+ }
+
+}
+
+/************ end Rule DefaultLiteralRule ****************/
+
+
+/************ begin Rule StringLiteralRule ****************
+ *
+ * StringLiteralRule:
+ * value=STRING;
+ *
+ **/
+
+// value=STRING
+protected class StringLiteralRule_ValueAssignment extends AssignmentToken {
+
+ public StringLiteralRule_ValueAssignment(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getStringLiteralRuleAccess().getValueAssignment();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getStringLiteralRuleRule().getType().getClassifier())
+ return null;
+ if((value = eObjectConsumer.getConsumable("value",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("value");
+ if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getStringLiteralRuleAccess().getValueSTRINGTerminalRuleCall_0(), value, null)) {
+ type = AssignmentType.TERMINAL_RULE_CALL;
+ element = grammarAccess.getStringLiteralRuleAccess().getValueSTRINGTerminalRuleCall_0();
+ return obj;
+ }
+ return null;
+ }
+
+}
+
+/************ end Rule StringLiteralRule ****************/
+
+}
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/VSLAntlrTokenFileProvider.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/VSLAntlrTokenFileProvider.java
new file mode 100644
index 00000000000..fdda17db7ce
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/VSLAntlrTokenFileProvider.java
@@ -0,0 +1,15 @@
+/*
+* generated by Xtext
+*/
+package org.eclipse.papyrus.marte.vsl.parser.antlr;
+
+import java.io.InputStream;
+import org.eclipse.xtext.parser.antlr.IAntlrTokenFileProvider;
+
+public class VSLAntlrTokenFileProvider implements IAntlrTokenFileProvider {
+
+ public InputStream getAntlrTokenFile() {
+ ClassLoader classLoader = getClass().getClassLoader();
+ return classLoader.getResourceAsStream("org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.tokens");
+ }
+}
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/VSLParser.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/VSLParser.java
new file mode 100644
index 00000000000..db1769b1f51
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/VSLParser.java
@@ -0,0 +1,39 @@
+/*
+* generated by Xtext
+*/
+package org.eclipse.papyrus.marte.vsl.parser.antlr;
+
+import com.google.inject.Inject;
+
+import org.eclipse.xtext.parser.antlr.XtextTokenStream;
+import org.eclipse.papyrus.marte.vsl.services.VSLGrammarAccess;
+
+public class VSLParser extends org.eclipse.xtext.parser.antlr.AbstractAntlrParser {
+
+ @Inject
+ private VSLGrammarAccess grammarAccess;
+
+ @Override
+ protected void setInitialHiddenTokens(XtextTokenStream tokenStream) {
+ tokenStream.setInitialHiddenTokens("RULE_WS", "RULE_ML_COMMENT", "RULE_SL_COMMENT");
+ }
+
+ @Override
+ protected org.eclipse.papyrus.marte.vsl.parser.antlr.internal.InternalVSLParser createParser(XtextTokenStream stream) {
+ return new org.eclipse.papyrus.marte.vsl.parser.antlr.internal.InternalVSLParser(stream, getGrammarAccess());
+ }
+
+ @Override
+ protected String getDefaultRuleName() {
+ return "Expression";
+ }
+
+ public VSLGrammarAccess getGrammarAccess() {
+ return this.grammarAccess;
+ }
+
+ public void setGrammarAccess(VSLGrammarAccess grammarAccess) {
+ this.grammarAccess = grammarAccess;
+ }
+
+}
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g
new file mode 100644
index 00000000000..36db441a496
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g
@@ -0,0 +1,2754 @@
+/*
+* generated by Xtext
+*/
+grammar InternalVSL;
+
+options {
+ superClass=AbstractInternalAntlrParser;
+
+}
+
+@lexer::header {
+package org.eclipse.papyrus.marte.vsl.parser.antlr.internal;
+
+// Hack: Use our own Lexer superclass by means of import.
+// Currently there is no other way to specify the superclass for the lexer.
+import org.eclipse.xtext.parser.antlr.Lexer;
+}
+
+@parser::header {
+package org.eclipse.papyrus.marte.vsl.parser.antlr.internal;
+
+import org.eclipse.xtext.*;
+import org.eclipse.xtext.parser.*;
+import org.eclipse.xtext.parser.impl.*;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
+import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken;
+import org.eclipse.papyrus.marte.vsl.services.VSLGrammarAccess;
+
+}
+
+@parser::members {
+
+ private VSLGrammarAccess grammarAccess;
+
+ public InternalVSLParser(TokenStream input, VSLGrammarAccess grammarAccess) {
+ this(input);
+ this.grammarAccess = grammarAccess;
+ registerRules(grammarAccess.getGrammar());
+ }
+
+ @Override
+ protected String getFirstRuleName() {
+ return "Expression";
+ }
+
+ @Override
+ protected VSLGrammarAccess getGrammarAccess() {
+ return grammarAccess;
+ }
+}
+
+@rulecatch {
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+}
+
+
+
+
+// Entry rule entryRuleExpression
+entryRuleExpression returns [EObject current=null]
+ :
+ { newCompositeNode(grammarAccess.getExpressionRule()); }
+ iv_ruleExpression=ruleExpression
+ { $current=$iv_ruleExpression.current; }
+ EOF
+;
+
+// Rule Expression
+ruleExpression returns [EObject current=null]
+ @init { enterRule();
+ }
+ @after { leaveRule(); }:
+(
+(
+ {
+ newCompositeNode(grammarAccess.getExpressionAccess().getExpAndOrXorExpressionParserRuleCall_0());
+ }
+ lv_exp_0_0=ruleAndOrXorExpression {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getExpressionRule());
+ }
+ set(
+ $current,
+ "exp",
+ lv_exp_0_0,
+ "AndOrXorExpression");
+ afterParserOrEnumRuleCall();
+ }
+
+)
+)
+;
+
+
+
+
+
+// Entry rule entryRuleAndOrXorExpression
+entryRuleAndOrXorExpression returns [EObject current=null]
+ :
+ { newCompositeNode(grammarAccess.getAndOrXorExpressionRule()); }
+ iv_ruleAndOrXorExpression=ruleAndOrXorExpression
+ { $current=$iv_ruleAndOrXorExpression.current; }
+ EOF
+;
+
+// Rule AndOrXorExpression
+ruleAndOrXorExpression returns [EObject current=null]
+ @init { enterRule();
+ }
+ @after { leaveRule(); }:
+((
+(
+ {
+ newCompositeNode(grammarAccess.getAndOrXorExpressionAccess().getExpEqualityExpressionParserRuleCall_0_0());
+ }
+ lv_exp_0_0=ruleEqualityExpression {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getAndOrXorExpressionRule());
+ }
+ add(
+ $current,
+ "exp",
+ lv_exp_0_0,
+ "EqualityExpression");
+ afterParserOrEnumRuleCall();
+ }
+
+)
+)((
+(
+(
+ lv_op_1_1= 'and'
+ {
+ newLeafNode(lv_op_1_1, grammarAccess.getAndOrXorExpressionAccess().getOpAndKeyword_1_0_0_0());
+ }
+
+ {
+ if ($current==null) {
+ $current = createModelElement(grammarAccess.getAndOrXorExpressionRule());
+ }
+ addWithLastConsumed($current, "op", lv_op_1_1, null);
+ }
+
+ | lv_op_1_2= 'or'
+ {
+ newLeafNode(lv_op_1_2, grammarAccess.getAndOrXorExpressionAccess().getOpOrKeyword_1_0_0_1());
+ }
+
+ {
+ if ($current==null) {
+ $current = createModelElement(grammarAccess.getAndOrXorExpressionRule());
+ }
+ addWithLastConsumed($current, "op", lv_op_1_2, null);
+ }
+
+ | lv_op_1_3= 'xor'
+ {
+ newLeafNode(lv_op_1_3, grammarAccess.getAndOrXorExpressionAccess().getOpXorKeyword_1_0_0_2());
+ }
+
+ {
+ if ($current==null) {
+ $current = createModelElement(grammarAccess.getAndOrXorExpressionRule());
+ }
+ addWithLastConsumed($current, "op", lv_op_1_3, null);
+ }
+
+)
+
+)
+)(
+(
+ {
+ newCompositeNode(grammarAccess.getAndOrXorExpressionAccess().getExpEqualityExpressionParserRuleCall_1_1_0());
+ }
+ lv_exp_2_0=ruleEqualityExpression {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getAndOrXorExpressionRule());
+ }
+ add(
+ $current,
+ "exp",
+ lv_exp_2_0,
+ "EqualityExpression");
+ afterParserOrEnumRuleCall();
+ }
+
+)
+))*)
+;
+
+
+
+
+
+// Entry rule entryRuleEqualityExpression
+entryRuleEqualityExpression returns [EObject current=null]
+ :
+ { newCompositeNode(grammarAccess.getEqualityExpressionRule()); }
+ iv_ruleEqualityExpression=ruleEqualityExpression
+ { $current=$iv_ruleEqualityExpression.current; }
+ EOF
+;
+
+// Rule EqualityExpression
+ruleEqualityExpression returns [EObject current=null]
+ @init { enterRule();
+ }
+ @after { leaveRule(); }:
+((
+(
+ {
+ newCompositeNode(grammarAccess.getEqualityExpressionAccess().getExpRelationalExpressionParserRuleCall_0_0());
+ }
+ lv_exp_0_0=ruleRelationalExpression {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getEqualityExpressionRule());
+ }
+ add(
+ $current,
+ "exp",
+ lv_exp_0_0,
+ "RelationalExpression");
+ afterParserOrEnumRuleCall();
+ }
+
+)
+)((
+(
+(
+ lv_op_1_1= '=='
+ {
+ newLeafNode(lv_op_1_1, grammarAccess.getEqualityExpressionAccess().getOpEqualsSignEqualsSignKeyword_1_0_0_0());
+ }
+
+ {
+ if ($current==null) {
+ $current = createModelElement(grammarAccess.getEqualityExpressionRule());
+ }
+ addWithLastConsumed($current, "op", lv_op_1_1, null);
+ }
+
+ | lv_op_1_2= '<>'
+ {
+ newLeafNode(lv_op_1_2, grammarAccess.getEqualityExpressionAccess().getOpLessThanSignGreaterThanSignKeyword_1_0_0_1());
+ }
+
+ {
+ if ($current==null) {
+ $current = createModelElement(grammarAccess.getEqualityExpressionRule());
+ }
+ addWithLastConsumed($current, "op", lv_op_1_2, null);
+ }
+
+)
+
+)
+)(
+(
+ {
+ newCompositeNode(grammarAccess.getEqualityExpressionAccess().getExpRelationalExpressionParserRuleCall_1_1_0());
+ }
+ lv_exp_2_0=ruleRelationalExpression {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getEqualityExpressionRule());
+ }
+ add(
+ $current,
+ "exp",
+ lv_exp_2_0,
+ "RelationalExpression");
+ afterParserOrEnumRuleCall();
+ }
+
+)
+))*)
+;
+
+
+
+
+
+// Entry rule entryRuleRelationalExpression
+entryRuleRelationalExpression returns [EObject current=null]
+ :
+ { newCompositeNode(grammarAccess.getRelationalExpressionRule()); }
+ iv_ruleRelationalExpression=ruleRelationalExpression
+ { $current=$iv_ruleRelationalExpression.current; }
+ EOF
+;
+
+// Rule RelationalExpression
+ruleRelationalExpression returns [EObject current=null]
+ @init { enterRule();
+ }
+ @after { leaveRule(); }:
+((
+(
+ {
+ newCompositeNode(grammarAccess.getRelationalExpressionAccess().getExpConditionalExpressionParserRuleCall_0_0());
+ }
+ lv_exp_0_0=ruleConditionalExpression {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getRelationalExpressionRule());
+ }
+ add(
+ $current,
+ "exp",
+ lv_exp_0_0,
+ "ConditionalExpression");
+ afterParserOrEnumRuleCall();
+ }
+
+)
+)((
+(
+(
+ lv_op_1_1= '<'
+ {
+ newLeafNode(lv_op_1_1, grammarAccess.getRelationalExpressionAccess().getOpLessThanSignKeyword_1_0_0_0());
+ }
+
+ {
+ if ($current==null) {
+ $current = createModelElement(grammarAccess.getRelationalExpressionRule());
+ }
+ addWithLastConsumed($current, "op", lv_op_1_1, null);
+ }
+
+ | lv_op_1_2= '>'
+ {
+ newLeafNode(lv_op_1_2, grammarAccess.getRelationalExpressionAccess().getOpGreaterThanSignKeyword_1_0_0_1());
+ }
+
+ {
+ if ($current==null) {
+ $current = createModelElement(grammarAccess.getRelationalExpressionRule());
+ }
+ addWithLastConsumed($current, "op", lv_op_1_2, null);
+ }
+
+ | lv_op_1_3= '<='
+ {
+ newLeafNode(lv_op_1_3, grammarAccess.getRelationalExpressionAccess().getOpLessThanSignEqualsSignKeyword_1_0_0_2());
+ }
+
+ {
+ if ($current==null) {
+ $current = createModelElement(grammarAccess.getRelationalExpressionRule());
+ }
+ addWithLastConsumed($current, "op", lv_op_1_3, null);
+ }
+
+ | lv_op_1_4= '>='
+ {
+ newLeafNode(lv_op_1_4, grammarAccess.getRelationalExpressionAccess().getOpGreaterThanSignEqualsSignKeyword_1_0_0_3());
+ }
+
+ {
+ if ($current==null) {
+ $current = createModelElement(grammarAccess.getRelationalExpressionRule());
+ }
+ addWithLastConsumed($current, "op", lv_op_1_4, null);
+ }
+
+)
+
+)
+)(
+(
+ {
+ newCompositeNode(grammarAccess.getRelationalExpressionAccess().getExpConditionalExpressionParserRuleCall_1_1_0());
+ }
+ lv_exp_2_0=ruleConditionalExpression {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getRelationalExpressionRule());
+ }
+ add(
+ $current,
+ "exp",
+ lv_exp_2_0,
+ "ConditionalExpression");
+ afterParserOrEnumRuleCall();
+ }
+
+)
+))*)
+;
+
+
+
+
+
+// Entry rule entryRuleConditionalExpression
+entryRuleConditionalExpression returns [EObject current=null]
+ :
+ { newCompositeNode(grammarAccess.getConditionalExpressionRule()); }
+ iv_ruleConditionalExpression=ruleConditionalExpression
+ { $current=$iv_ruleConditionalExpression.current; }
+ EOF
+;
+
+// Rule ConditionalExpression
+ruleConditionalExpression returns [EObject current=null]
+ @init { enterRule();
+ }
+ @after { leaveRule(); }:
+((
+(
+ {
+ newCompositeNode(grammarAccess.getConditionalExpressionAccess().getExpAdditiveExpressionParserRuleCall_0_0());
+ }
+ lv_exp_0_0=ruleAdditiveExpression {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getConditionalExpressionRule());
+ }
+ add(
+ $current,
+ "exp",
+ lv_exp_0_0,
+ "AdditiveExpression");
+ afterParserOrEnumRuleCall();
+ }
+
+)
+)((
+(
+ lv_op_1_0= '?'
+ {
+ newLeafNode(lv_op_1_0, grammarAccess.getConditionalExpressionAccess().getOpQuestionMarkKeyword_1_0_0());
+ }
+
+ {
+ if ($current==null) {
+ $current = createModelElement(grammarAccess.getConditionalExpressionRule());
+ }
+ addWithLastConsumed($current, "op", lv_op_1_0, "?");
+ }
+
+)
+)(
+(
+ {
+ newCompositeNode(grammarAccess.getConditionalExpressionAccess().getExpAdditiveExpressionParserRuleCall_1_1_0());
+ }
+ lv_exp_2_0=ruleAdditiveExpression {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getConditionalExpressionRule());
+ }
+ add(
+ $current,
+ "exp",
+ lv_exp_2_0,
+ "AdditiveExpression");
+ afterParserOrEnumRuleCall();
+ }
+
+)
+) otherlv_3=':'
+ {
+ newLeafNode(otherlv_3, grammarAccess.getConditionalExpressionAccess().getColonKeyword_1_2());
+ }
+(
+(
+ {
+ newCompositeNode(grammarAccess.getConditionalExpressionAccess().getExpAdditiveExpressionParserRuleCall_1_3_0());
+ }
+ lv_exp_4_0=ruleAdditiveExpression {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getConditionalExpressionRule());
+ }
+ add(
+ $current,
+ "exp",
+ lv_exp_4_0,
+ "AdditiveExpression");
+ afterParserOrEnumRuleCall();
+ }
+
+)
+))?)
+;
+
+
+
+
+
+// Entry rule entryRuleAdditiveExpression
+entryRuleAdditiveExpression returns [EObject current=null]
+ :
+ { newCompositeNode(grammarAccess.getAdditiveExpressionRule()); }
+ iv_ruleAdditiveExpression=ruleAdditiveExpression
+ { $current=$iv_ruleAdditiveExpression.current; }
+ EOF
+;
+
+// Rule AdditiveExpression
+ruleAdditiveExpression returns [EObject current=null]
+ @init { enterRule();
+ }
+ @after { leaveRule(); }:
+((
+(
+ {
+ newCompositeNode(grammarAccess.getAdditiveExpressionAccess().getExpMultiplicativeExpressionParserRuleCall_0_0());
+ }
+ lv_exp_0_0=ruleMultiplicativeExpression {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getAdditiveExpressionRule());
+ }
+ add(
+ $current,
+ "exp",
+ lv_exp_0_0,
+ "MultiplicativeExpression");
+ afterParserOrEnumRuleCall();
+ }
+
+)
+)((
+(
+(
+ lv_op_1_1= '+'
+ {
+ newLeafNode(lv_op_1_1, grammarAccess.getAdditiveExpressionAccess().getOpPlusSignKeyword_1_0_0_0());
+ }
+
+ {
+ if ($current==null) {
+ $current = createModelElement(grammarAccess.getAdditiveExpressionRule());
+ }
+ addWithLastConsumed($current, "op", lv_op_1_1, null);
+ }
+
+ | lv_op_1_2= '-'
+ {
+ newLeafNode(lv_op_1_2, grammarAccess.getAdditiveExpressionAccess().getOpHyphenMinusKeyword_1_0_0_1());
+ }
+
+ {
+ if ($current==null) {
+ $current = createModelElement(grammarAccess.getAdditiveExpressionRule());
+ }
+ addWithLastConsumed($current, "op", lv_op_1_2, null);
+ }
+
+)
+
+)
+)(
+(
+ {
+ newCompositeNode(grammarAccess.getAdditiveExpressionAccess().getExpMultiplicativeExpressionParserRuleCall_1_1_0());
+ }
+ lv_exp_2_0=ruleMultiplicativeExpression {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getAdditiveExpressionRule());
+ }
+ add(
+ $current,
+ "exp",
+ lv_exp_2_0,
+ "MultiplicativeExpression");
+ afterParserOrEnumRuleCall();
+ }
+
+)
+))*)
+;
+
+
+
+
+
+// Entry rule entryRuleMultiplicativeExpression
+entryRuleMultiplicativeExpression returns [EObject current=null]
+ :
+ { newCompositeNode(grammarAccess.getMultiplicativeExpressionRule()); }
+ iv_ruleMultiplicativeExpression=ruleMultiplicativeExpression
+ { $current=$iv_ruleMultiplicativeExpression.current; }
+ EOF
+;
+
+// Rule MultiplicativeExpression
+ruleMultiplicativeExpression returns [EObject current=null]
+ @init { enterRule();
+ }
+ @after { leaveRule(); }:
+((
+(
+ {
+ newCompositeNode(grammarAccess.getMultiplicativeExpressionAccess().getExpUnaryExpressionParserRuleCall_0_0());
+ }
+ lv_exp_0_0=ruleUnaryExpression {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getMultiplicativeExpressionRule());
+ }
+ add(
+ $current,
+ "exp",
+ lv_exp_0_0,
+ "UnaryExpression");
+ afterParserOrEnumRuleCall();
+ }
+
+)
+)((
+(
+(
+ lv_op_1_1= '*'
+ {
+ newLeafNode(lv_op_1_1, grammarAccess.getMultiplicativeExpressionAccess().getOpAsteriskKeyword_1_0_0_0());
+ }
+
+ {
+ if ($current==null) {
+ $current = createModelElement(grammarAccess.getMultiplicativeExpressionRule());
+ }
+ addWithLastConsumed($current, "op", lv_op_1_1, null);
+ }
+
+ | lv_op_1_2= '/'
+ {
+ newLeafNode(lv_op_1_2, grammarAccess.getMultiplicativeExpressionAccess().getOpSolidusKeyword_1_0_0_1());
+ }
+
+ {
+ if ($current==null) {
+ $current = createModelElement(grammarAccess.getMultiplicativeExpressionRule());
+ }
+ addWithLastConsumed($current, "op", lv_op_1_2, null);
+ }
+
+ | lv_op_1_3= 'mod'
+ {
+ newLeafNode(lv_op_1_3, grammarAccess.getMultiplicativeExpressionAccess().getOpModKeyword_1_0_0_2());
+ }
+
+ {
+ if ($current==null) {
+ $current = createModelElement(grammarAccess.getMultiplicativeExpressionRule());
+ }
+ addWithLastConsumed($current, "op", lv_op_1_3, null);
+ }
+
+)
+
+)
+)(
+(
+ {
+ newCompositeNode(grammarAccess.getMultiplicativeExpressionAccess().getExpUnaryExpressionParserRuleCall_1_1_0());
+ }
+ lv_exp_2_0=ruleUnaryExpression {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getMultiplicativeExpressionRule());
+ }
+ add(
+ $current,
+ "exp",
+ lv_exp_2_0,
+ "UnaryExpression");
+ afterParserOrEnumRuleCall();
+ }
+
+)
+))*)
+;
+
+
+
+
+
+// Entry rule entryRuleUnaryExpression
+entryRuleUnaryExpression returns [EObject current=null]
+ :
+ { newCompositeNode(grammarAccess.getUnaryExpressionRule()); }
+ iv_ruleUnaryExpression=ruleUnaryExpression
+ { $current=$iv_ruleUnaryExpression.current; }
+ EOF
+;
+
+// Rule UnaryExpression
+ruleUnaryExpression returns [EObject current=null]
+ @init { enterRule();
+ }
+ @after { leaveRule(); }:
+(((
+(
+(
+ lv_op_0_1= 'not'
+ {
+ newLeafNode(lv_op_0_1, grammarAccess.getUnaryExpressionAccess().getOpNotKeyword_0_0_0_0());
+ }
+
+ {
+ if ($current==null) {
+ $current = createModelElement(grammarAccess.getUnaryExpressionRule());
+ }
+ setWithLastConsumed($current, "op", lv_op_0_1, null);
+ }
+
+ | lv_op_0_2= '-'
+ {
+ newLeafNode(lv_op_0_2, grammarAccess.getUnaryExpressionAccess().getOpHyphenMinusKeyword_0_0_0_1());
+ }
+
+ {
+ if ($current==null) {
+ $current = createModelElement(grammarAccess.getUnaryExpressionRule());
+ }
+ setWithLastConsumed($current, "op", lv_op_0_2, null);
+ }
+
+ | lv_op_0_3= '+'
+ {
+ newLeafNode(lv_op_0_3, grammarAccess.getUnaryExpressionAccess().getOpPlusSignKeyword_0_0_0_2());
+ }
+
+ {
+ if ($current==null) {
+ $current = createModelElement(grammarAccess.getUnaryExpressionRule());
+ }
+ setWithLastConsumed($current, "op", lv_op_0_3, null);
+ }
+
+)
+
+)
+)(
+(
+ {
+ newCompositeNode(grammarAccess.getUnaryExpressionAccess().getUnaryUnaryExpressionParserRuleCall_0_1_0());
+ }
+ lv_unary_1_0=ruleUnaryExpression {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getUnaryExpressionRule());
+ }
+ set(
+ $current,
+ "unary",
+ lv_unary_1_0,
+ "UnaryExpression");
+ afterParserOrEnumRuleCall();
+ }
+
+)
+))
+ |(
+(
+ {
+ newCompositeNode(grammarAccess.getUnaryExpressionAccess().getExpPrimaryExpressionParserRuleCall_1_0());
+ }
+ lv_exp_2_0=rulePrimaryExpression {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getUnaryExpressionRule());
+ }
+ set(
+ $current,
+ "exp",
+ lv_exp_2_0,
+ "PrimaryExpression");
+ afterParserOrEnumRuleCall();
+ }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRulePrimaryExpression
+entryRulePrimaryExpression returns [EObject current=null]
+ :
+ { newCompositeNode(grammarAccess.getPrimaryExpressionRule()); }
+ iv_rulePrimaryExpression=rulePrimaryExpression
+ { $current=$iv_rulePrimaryExpression.current; }
+ EOF
+;
+
+// Rule PrimaryExpression
+rulePrimaryExpression returns [EObject current=null]
+ @init { enterRule();
+ }
+ @after { leaveRule(); }:
+((
+(
+ {
+ newCompositeNode(grammarAccess.getPrimaryExpressionAccess().getPrefixValueSpecificationParserRuleCall_0_0());
+ }
+ lv_prefix_0_0=ruleValueSpecification {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getPrimaryExpressionRule());
+ }
+ set(
+ $current,
+ "prefix",
+ lv_prefix_0_0,
+ "ValueSpecification");
+ afterParserOrEnumRuleCall();
+ }
+
+)
+)( otherlv_1='.'
+ {
+ newLeafNode(otherlv_1, grammarAccess.getPrimaryExpressionAccess().getFullStopKeyword_1_0());
+ }
+(
+(
+ {
+ newCompositeNode(grammarAccess.getPrimaryExpressionAccess().getSuffixSuffixExpressionParserRuleCall_1_1_0());
+ }
+ lv_suffix_2_0=ruleSuffixExpression {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getPrimaryExpressionRule());
+ }
+ set(
+ $current,
+ "suffix",
+ lv_suffix_2_0,
+ "SuffixExpression");
+ afterParserOrEnumRuleCall();
+ }
+
+)
+))?)
+;
+
+
+
+
+
+// Entry rule entryRuleValueSpecification
+entryRuleValueSpecification returns [EObject current=null]
+ :
+ { newCompositeNode(grammarAccess.getValueSpecificationRule()); }
+ iv_ruleValueSpecification=ruleValueSpecification
+ { $current=$iv_ruleValueSpecification.current; }
+ EOF
+;
+
+// Rule ValueSpecification
+ruleValueSpecification returns [EObject current=null]
+ @init { enterRule();
+ }
+ @after { leaveRule(); }:
+(
+ {
+ newCompositeNode(grammarAccess.getValueSpecificationAccess().getLiteralParserRuleCall_0());
+ }
+ this_Literal_0=ruleLiteral
+ {
+ $current = $this_Literal_0.current;
+ afterParserOrEnumRuleCall();
+ }
+
+ |
+ {
+ newCompositeNode(grammarAccess.getValueSpecificationAccess().getNameOrChoiceOrBehaviorCallParserRuleCall_1());
+ }
+ this_NameOrChoiceOrBehaviorCall_1=ruleNameOrChoiceOrBehaviorCall
+ {
+ $current = $this_NameOrChoiceOrBehaviorCall_1.current;
+ afterParserOrEnumRuleCall();
+ }
+
+ |
+ {
+ newCompositeNode(grammarAccess.getValueSpecificationAccess().getIntervalParserRuleCall_2());
+ }
+ this_Interval_2=ruleInterval
+ {
+ $current = $this_Interval_2.current;
+ afterParserOrEnumRuleCall();
+ }
+
+ |
+ {
+ newCompositeNode(grammarAccess.getValueSpecificationAccess().getCollectionOrTupleParserRuleCall_3());
+ }
+ this_CollectionOrTuple_3=ruleCollectionOrTuple
+ {
+ $current = $this_CollectionOrTuple_3.current;
+ afterParserOrEnumRuleCall();
+ }
+
+ |
+ {
+ newCompositeNode(grammarAccess.getValueSpecificationAccess().getTupleParserRuleCall_4());
+ }
+ this_Tuple_4=ruleTuple
+ {
+ $current = $this_Tuple_4.current;
+ afterParserOrEnumRuleCall();
+ }
+
+ |
+ {
+ newCompositeNode(grammarAccess.getValueSpecificationAccess().getTimeExpressionParserRuleCall_5());
+ }
+ this_TimeExpression_5=ruleTimeExpression
+ {
+ $current = $this_TimeExpression_5.current;
+ afterParserOrEnumRuleCall();
+ }
+
+ |
+ {
+ newCompositeNode(grammarAccess.getValueSpecificationAccess().getVariableDeclarationParserRuleCall_6());
+ }
+ this_VariableDeclaration_6=ruleVariableDeclaration
+ {
+ $current = $this_VariableDeclaration_6.current;
+ afterParserOrEnumRuleCall();
+ }
+
+ |( otherlv_7='('
+ {
+ newLeafNode(otherlv_7, grammarAccess.getValueSpecificationAccess().getLeftParenthesisKeyword_7_0());
+ }
+
+ {
+ newCompositeNode(grammarAccess.getValueSpecificationAccess().getExpressionParserRuleCall_7_1());
+ }
+ this_Expression_8=ruleExpression
+ {
+ $current = $this_Expression_8.current;
+ afterParserOrEnumRuleCall();
+ }
+ otherlv_9=')'
+ {
+ newLeafNode(otherlv_9, grammarAccess.getValueSpecificationAccess().getRightParenthesisKeyword_7_2());
+ }
+))
+;
+
+
+
+
+
+// Entry rule entryRuleSuffixExpression
+entryRuleSuffixExpression returns [EObject current=null]
+ :
+ { newCompositeNode(grammarAccess.getSuffixExpressionRule()); }
+ iv_ruleSuffixExpression=ruleSuffixExpression
+ { $current=$iv_ruleSuffixExpression.current; }
+ EOF
+;
+
+// Rule SuffixExpression
+ruleSuffixExpression returns [EObject current=null]
+ @init { enterRule();
+ }
+ @after { leaveRule(); }:
+(
+ {
+ newCompositeNode(grammarAccess.getSuffixExpressionAccess().getPropertyCallExpressionParserRuleCall_0());
+ }
+ this_PropertyCallExpression_0=rulePropertyCallExpression
+ {
+ $current = $this_PropertyCallExpression_0.current;
+ afterParserOrEnumRuleCall();
+ }
+
+ |
+ {
+ newCompositeNode(grammarAccess.getSuffixExpressionAccess().getOperationCallExpressionParserRuleCall_1());
+ }
+ this_OperationCallExpression_1=ruleOperationCallExpression
+ {
+ $current = $this_OperationCallExpression_1.current;
+ afterParserOrEnumRuleCall();
+ }
+)
+;
+
+
+
+
+
+// Entry rule entryRulePropertyCallExpression
+entryRulePropertyCallExpression returns [EObject current=null]
+ :
+ { newCompositeNode(grammarAccess.getPropertyCallExpressionRule()); }
+ iv_rulePropertyCallExpression=rulePropertyCallExpression
+ { $current=$iv_rulePropertyCallExpression.current; }
+ EOF
+;
+
+// Rule PropertyCallExpression
+rulePropertyCallExpression returns [EObject current=null]
+ @init { enterRule();
+ }
+ @after { leaveRule(); }:
+((
+(
+ {
+ if ($current==null) {
+ $current = createModelElement(grammarAccess.getPropertyCallExpressionRule());
+ }
+ }
+ otherlv_0=RULE_ID
+ {
+ newLeafNode(otherlv_0, grammarAccess.getPropertyCallExpressionAccess().getPropertyPropertyCrossReference_0_0());
+ }
+
+)
+)( otherlv_1='.'
+ {
+ newLeafNode(otherlv_1, grammarAccess.getPropertyCallExpressionAccess().getFullStopKeyword_1_0());
+ }
+(
+(
+ {
+ newCompositeNode(grammarAccess.getPropertyCallExpressionAccess().getSuffixSuffixExpressionParserRuleCall_1_1_0());
+ }
+ lv_suffix_2_0=ruleSuffixExpression {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getPropertyCallExpressionRule());
+ }
+ set(
+ $current,
+ "suffix",
+ lv_suffix_2_0,
+ "SuffixExpression");
+ afterParserOrEnumRuleCall();
+ }
+
+)
+))?)
+;
+
+
+
+
+
+// Entry rule entryRuleOperationCallExpression
+entryRuleOperationCallExpression returns [EObject current=null]
+ :
+ { newCompositeNode(grammarAccess.getOperationCallExpressionRule()); }
+ iv_ruleOperationCallExpression=ruleOperationCallExpression
+ { $current=$iv_ruleOperationCallExpression.current; }
+ EOF
+;
+
+// Rule OperationCallExpression
+ruleOperationCallExpression returns [EObject current=null]
+ @init { enterRule();
+ }
+ @after { leaveRule(); }:
+((
+(
+ {
+ if ($current==null) {
+ $current = createModelElement(grammarAccess.getOperationCallExpressionRule());
+ }
+ }
+ otherlv_0=RULE_ID
+ {
+ newLeafNode(otherlv_0, grammarAccess.getOperationCallExpressionAccess().getOperationOperationCrossReference_0_0());
+ }
+
+)
+) otherlv_1='('
+ {
+ newLeafNode(otherlv_1, grammarAccess.getOperationCallExpressionAccess().getLeftParenthesisKeyword_1());
+ }
+(
+(
+ {
+ newCompositeNode(grammarAccess.getOperationCallExpressionAccess().getArgumentsListOfValuesParserRuleCall_2_0());
+ }
+ lv_arguments_2_0=ruleListOfValues {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getOperationCallExpressionRule());
+ }
+ set(
+ $current,
+ "arguments",
+ lv_arguments_2_0,
+ "ListOfValues");
+ afterParserOrEnumRuleCall();
+ }
+
+)
+)? otherlv_3=')'
+ {
+ newLeafNode(otherlv_3, grammarAccess.getOperationCallExpressionAccess().getRightParenthesisKeyword_3());
+ }
+( otherlv_4='.'
+ {
+ newLeafNode(otherlv_4, grammarAccess.getOperationCallExpressionAccess().getFullStopKeyword_4_0());
+ }
+(
+(
+ {
+ newCompositeNode(grammarAccess.getOperationCallExpressionAccess().getSuffixSuffixExpressionParserRuleCall_4_1_0());
+ }
+ lv_suffix_5_0=ruleSuffixExpression {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getOperationCallExpressionRule());
+ }
+ set(
+ $current,
+ "suffix",
+ lv_suffix_5_0,
+ "SuffixExpression");
+ afterParserOrEnumRuleCall();
+ }
+
+)
+))?)
+;
+
+
+
+
+
+// Entry rule entryRuleLiteral
+entryRuleLiteral returns [EObject current=null]
+ :
+ { newCompositeNode(grammarAccess.getLiteralRule()); }
+ iv_ruleLiteral=ruleLiteral
+ { $current=$iv_ruleLiteral.current; }
+ EOF
+;
+
+// Rule Literal
+ruleLiteral returns [EObject current=null]
+ @init { enterRule();
+ }
+ @after { leaveRule(); }:
+(
+ {
+ newCompositeNode(grammarAccess.getLiteralAccess().getNumberLiteralRuleParserRuleCall_0());
+ }
+ this_NumberLiteralRule_0=ruleNumberLiteralRule
+ {
+ $current = $this_NumberLiteralRule_0.current;
+ afterParserOrEnumRuleCall();
+ }
+
+ |
+ {
+ newCompositeNode(grammarAccess.getLiteralAccess().getDateTimeLiteralRuleParserRuleCall_1());
+ }
+ this_DateTimeLiteralRule_1=ruleDateTimeLiteralRule
+ {
+ $current = $this_DateTimeLiteralRule_1.current;
+ afterParserOrEnumRuleCall();
+ }
+
+ |
+ {
+ newCompositeNode(grammarAccess.getLiteralAccess().getBooleanLiteralRuleParserRuleCall_2());
+ }
+ this_BooleanLiteralRule_2=ruleBooleanLiteralRule
+ {
+ $current = $this_BooleanLiteralRule_2.current;
+ afterParserOrEnumRuleCall();
+ }
+
+ |
+ {
+ newCompositeNode(grammarAccess.getLiteralAccess().getNullLiteralRuleParserRuleCall_3());
+ }
+ this_NullLiteralRule_3=ruleNullLiteralRule
+ {
+ $current = $this_NullLiteralRule_3.current;
+ afterParserOrEnumRuleCall();
+ }
+
+ |
+ {
+ newCompositeNode(grammarAccess.getLiteralAccess().getDefaultLiteralRuleParserRuleCall_4());
+ }
+ this_DefaultLiteralRule_4=ruleDefaultLiteralRule
+ {
+ $current = $this_DefaultLiteralRule_4.current;
+ afterParserOrEnumRuleCall();
+ }
+
+ |
+ {
+ newCompositeNode(grammarAccess.getLiteralAccess().getStringLiteralRuleParserRuleCall_5());
+ }
+ this_StringLiteralRule_5=ruleStringLiteralRule
+ {
+ $current = $this_StringLiteralRule_5.current;
+ afterParserOrEnumRuleCall();
+ }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleNameOrChoiceOrBehaviorCall
+entryRuleNameOrChoiceOrBehaviorCall returns [EObject current=null]
+ :
+ { newCompositeNode(grammarAccess.getNameOrChoiceOrBehaviorCallRule()); }
+ iv_ruleNameOrChoiceOrBehaviorCall=ruleNameOrChoiceOrBehaviorCall
+ { $current=$iv_ruleNameOrChoiceOrBehaviorCall.current; }
+ EOF
+;
+
+// Rule NameOrChoiceOrBehaviorCall
+ruleNameOrChoiceOrBehaviorCall returns [EObject current=null]
+ @init { enterRule();
+ }
+ @after { leaveRule(); }:
+((
+(
+ {
+ newCompositeNode(grammarAccess.getNameOrChoiceOrBehaviorCallAccess().getPathQualifiedNameParserRuleCall_0_0());
+ }
+ lv_path_0_0=ruleQualifiedName {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getNameOrChoiceOrBehaviorCallRule());
+ }
+ set(
+ $current,
+ "path",
+ lv_path_0_0,
+ "QualifiedName");
+ afterParserOrEnumRuleCall();
+ }
+
+)
+)?(
+(
+ {
+ if ($current==null) {
+ $current = createModelElement(grammarAccess.getNameOrChoiceOrBehaviorCallRule());
+ }
+ }
+ otherlv_1=RULE_ID
+ {
+ newLeafNode(otherlv_1, grammarAccess.getNameOrChoiceOrBehaviorCallAccess().getIdNamedElementCrossReference_1_0());
+ }
+
+)
+)( otherlv_2='('
+ {
+ newLeafNode(otherlv_2, grammarAccess.getNameOrChoiceOrBehaviorCallAccess().getLeftParenthesisKeyword_2_0());
+ }
+(
+(
+ {
+ newCompositeNode(grammarAccess.getNameOrChoiceOrBehaviorCallAccess().getArgumentsListOfValuesParserRuleCall_2_1_0());
+ }
+ lv_arguments_3_0=ruleListOfValues {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getNameOrChoiceOrBehaviorCallRule());
+ }
+ set(
+ $current,
+ "arguments",
+ lv_arguments_3_0,
+ "ListOfValues");
+ afterParserOrEnumRuleCall();
+ }
+
+)
+)? otherlv_4=')'
+ {
+ newLeafNode(otherlv_4, grammarAccess.getNameOrChoiceOrBehaviorCallAccess().getRightParenthesisKeyword_2_2());
+ }
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleQualifiedName
+entryRuleQualifiedName returns [EObject current=null]
+ :
+ { newCompositeNode(grammarAccess.getQualifiedNameRule()); }
+ iv_ruleQualifiedName=ruleQualifiedName
+ { $current=$iv_ruleQualifiedName.current; }
+ EOF
+;
+
+// Rule QualifiedName
+ruleQualifiedName returns [EObject current=null]
+ @init { enterRule();
+ }
+ @after { leaveRule(); }:
+((
+(
+ {
+ if ($current==null) {
+ $current = createModelElement(grammarAccess.getQualifiedNameRule());
+ }
+ }
+ otherlv_0=RULE_ID
+ {
+ newLeafNode(otherlv_0, grammarAccess.getQualifiedNameAccess().getPathNamespaceCrossReference_0_0());
+ }
+
+)
+) otherlv_1='::'
+ {
+ newLeafNode(otherlv_1, grammarAccess.getQualifiedNameAccess().getColonColonKeyword_1());
+ }
+(
+(
+ {
+ newCompositeNode(grammarAccess.getQualifiedNameAccess().getRemainingQualifiedNameParserRuleCall_2_0());
+ }
+ lv_remaining_2_0=ruleQualifiedName {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getQualifiedNameRule());
+ }
+ set(
+ $current,
+ "remaining",
+ lv_remaining_2_0,
+ "QualifiedName");
+ afterParserOrEnumRuleCall();
+ }
+
+)
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleInterval
+entryRuleInterval returns [EObject current=null]
+ :
+ { newCompositeNode(grammarAccess.getIntervalRule()); }
+ iv_ruleInterval=ruleInterval
+ { $current=$iv_ruleInterval.current; }
+ EOF
+;
+
+// Rule Interval
+ruleInterval returns [EObject current=null]
+ @init { enterRule();
+ }
+ @after { leaveRule(); }:
+(( otherlv_0=']'
+ {
+ newLeafNode(otherlv_0, grammarAccess.getIntervalAccess().getRightSquareBracketKeyword_0_0());
+ }
+
+ |(
+(
+ lv_isLowerIncluded_1_0= '['
+ {
+ newLeafNode(lv_isLowerIncluded_1_0, grammarAccess.getIntervalAccess().getIsLowerIncludedLeftSquareBracketKeyword_0_1_0());
+ }
+
+ {
+ if ($current==null) {
+ $current = createModelElement(grammarAccess.getIntervalRule());
+ }
+ setWithLastConsumed($current, "isLowerIncluded", lv_isLowerIncluded_1_0, "[");
+ }
+
+)
+))(
+(
+ {
+ newCompositeNode(grammarAccess.getIntervalAccess().getLowerExpressionParserRuleCall_1_0());
+ }
+ lv_lower_2_0=ruleExpression {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getIntervalRule());
+ }
+ set(
+ $current,
+ "lower",
+ lv_lower_2_0,
+ "Expression");
+ afterParserOrEnumRuleCall();
+ }
+
+)
+) otherlv_3='..'
+ {
+ newLeafNode(otherlv_3, grammarAccess.getIntervalAccess().getFullStopFullStopKeyword_2());
+ }
+(
+(
+ {
+ newCompositeNode(grammarAccess.getIntervalAccess().getUpperExpressionParserRuleCall_3_0());
+ }
+ lv_upper_4_0=ruleExpression {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getIntervalRule());
+ }
+ set(
+ $current,
+ "upper",
+ lv_upper_4_0,
+ "Expression");
+ afterParserOrEnumRuleCall();
+ }
+
+)
+)((
+(
+ lv_isUpperIncluded_5_0= ']'
+ {
+ newLeafNode(lv_isUpperIncluded_5_0, grammarAccess.getIntervalAccess().getIsUpperIncludedRightSquareBracketKeyword_4_0_0());
+ }
+
+ {
+ if ($current==null) {
+ $current = createModelElement(grammarAccess.getIntervalRule());
+ }
+ setWithLastConsumed($current, "isUpperIncluded", lv_isUpperIncluded_5_0, "]");
+ }
+
+)
+)
+ | otherlv_6='['
+ {
+ newLeafNode(otherlv_6, grammarAccess.getIntervalAccess().getLeftSquareBracketKeyword_4_1());
+ }
+))
+;
+
+
+
+
+
+// Entry rule entryRuleCollectionOrTuple
+entryRuleCollectionOrTuple returns [EObject current=null]
+ :
+ { newCompositeNode(grammarAccess.getCollectionOrTupleRule()); }
+ iv_ruleCollectionOrTuple=ruleCollectionOrTuple
+ { $current=$iv_ruleCollectionOrTuple.current; }
+ EOF
+;
+
+// Rule CollectionOrTuple
+ruleCollectionOrTuple returns [EObject current=null]
+ @init { enterRule();
+ }
+ @after { leaveRule(); }:
+( otherlv_0='{'
+ {
+ newLeafNode(otherlv_0, grammarAccess.getCollectionOrTupleAccess().getLeftCurlyBracketKeyword_0());
+ }
+(
+(
+ {
+ newCompositeNode(grammarAccess.getCollectionOrTupleAccess().getListOfValuesListOfValuesParserRuleCall_1_0());
+ }
+ lv_listOfValues_1_0=ruleListOfValues {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getCollectionOrTupleRule());
+ }
+ set(
+ $current,
+ "listOfValues",
+ lv_listOfValues_1_0,
+ "ListOfValues");
+ afterParserOrEnumRuleCall();
+ }
+
+)
+) otherlv_2='}'
+ {
+ newLeafNode(otherlv_2, grammarAccess.getCollectionOrTupleAccess().getRightCurlyBracketKeyword_2());
+ }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleTuple
+entryRuleTuple returns [EObject current=null]
+ :
+ { newCompositeNode(grammarAccess.getTupleRule()); }
+ iv_ruleTuple=ruleTuple
+ { $current=$iv_ruleTuple.current; }
+ EOF
+;
+
+// Rule Tuple
+ruleTuple returns [EObject current=null]
+ @init { enterRule();
+ }
+ @after { leaveRule(); }:
+( otherlv_0='{'
+ {
+ newLeafNode(otherlv_0, grammarAccess.getTupleAccess().getLeftCurlyBracketKeyword_0());
+ }
+(
+(
+ {
+ newCompositeNode(grammarAccess.getTupleAccess().getListOfValueNamePairsListOfValueNamePairsParserRuleCall_1_0());
+ }
+ lv_listOfValueNamePairs_1_0=ruleListOfValueNamePairs {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getTupleRule());
+ }
+ set(
+ $current,
+ "listOfValueNamePairs",
+ lv_listOfValueNamePairs_1_0,
+ "ListOfValueNamePairs");
+ afterParserOrEnumRuleCall();
+ }
+
+)
+) otherlv_2='}'
+ {
+ newLeafNode(otherlv_2, grammarAccess.getTupleAccess().getRightCurlyBracketKeyword_2());
+ }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleListOfValues
+entryRuleListOfValues returns [EObject current=null]
+ :
+ { newCompositeNode(grammarAccess.getListOfValuesRule()); }
+ iv_ruleListOfValues=ruleListOfValues
+ { $current=$iv_ruleListOfValues.current; }
+ EOF
+;
+
+// Rule ListOfValues
+ruleListOfValues returns [EObject current=null]
+ @init { enterRule();
+ }
+ @after { leaveRule(); }:
+((
+(
+ {
+ newCompositeNode(grammarAccess.getListOfValuesAccess().getValuesExpressionParserRuleCall_0_0());
+ }
+ lv_values_0_0=ruleExpression {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getListOfValuesRule());
+ }
+ add(
+ $current,
+ "values",
+ lv_values_0_0,
+ "Expression");
+ afterParserOrEnumRuleCall();
+ }
+
+)
+)( otherlv_1=','
+ {
+ newLeafNode(otherlv_1, grammarAccess.getListOfValuesAccess().getCommaKeyword_1_0());
+ }
+(
+(
+ {
+ newCompositeNode(grammarAccess.getListOfValuesAccess().getValuesExpressionParserRuleCall_1_1_0());
+ }
+ lv_values_2_0=ruleExpression {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getListOfValuesRule());
+ }
+ add(
+ $current,
+ "values",
+ lv_values_2_0,
+ "Expression");
+ afterParserOrEnumRuleCall();
+ }
+
+)
+))*)
+;
+
+
+
+
+
+// Entry rule entryRuleListOfValueNamePairs
+entryRuleListOfValueNamePairs returns [EObject current=null]
+ :
+ { newCompositeNode(grammarAccess.getListOfValueNamePairsRule()); }
+ iv_ruleListOfValueNamePairs=ruleListOfValueNamePairs
+ { $current=$iv_ruleListOfValueNamePairs.current; }
+ EOF
+;
+
+// Rule ListOfValueNamePairs
+ruleListOfValueNamePairs returns [EObject current=null]
+ @init { enterRule();
+ }
+ @after { leaveRule(); }:
+((
+(
+ {
+ newCompositeNode(grammarAccess.getListOfValueNamePairsAccess().getValueNamePairsValueNamePairParserRuleCall_0_0());
+ }
+ lv_valueNamePairs_0_0=ruleValueNamePair {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getListOfValueNamePairsRule());
+ }
+ add(
+ $current,
+ "valueNamePairs",
+ lv_valueNamePairs_0_0,
+ "ValueNamePair");
+ afterParserOrEnumRuleCall();
+ }
+
+)
+)( otherlv_1=','
+ {
+ newLeafNode(otherlv_1, grammarAccess.getListOfValueNamePairsAccess().getCommaKeyword_1_0());
+ }
+(
+(
+ {
+ newCompositeNode(grammarAccess.getListOfValueNamePairsAccess().getValueNamePairsValueNamePairParserRuleCall_1_1_0());
+ }
+ lv_valueNamePairs_2_0=ruleValueNamePair {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getListOfValueNamePairsRule());
+ }
+ add(
+ $current,
+ "valueNamePairs",
+ lv_valueNamePairs_2_0,
+ "ValueNamePair");
+ afterParserOrEnumRuleCall();
+ }
+
+)
+))*)
+;
+
+
+
+
+
+// Entry rule entryRuleValueNamePair
+entryRuleValueNamePair returns [EObject current=null]
+ :
+ { newCompositeNode(grammarAccess.getValueNamePairRule()); }
+ iv_ruleValueNamePair=ruleValueNamePair
+ { $current=$iv_ruleValueNamePair.current; }
+ EOF
+;
+
+// Rule ValueNamePair
+ruleValueNamePair returns [EObject current=null]
+ @init { enterRule();
+ }
+ @after { leaveRule(); }:
+((
+(
+ {
+ if ($current==null) {
+ $current = createModelElement(grammarAccess.getValueNamePairRule());
+ }
+ }
+ otherlv_0=RULE_ID
+ {
+ newLeafNode(otherlv_0, grammarAccess.getValueNamePairAccess().getPropertyPropertyCrossReference_0_0());
+ }
+
+)
+) otherlv_1='='
+ {
+ newLeafNode(otherlv_1, grammarAccess.getValueNamePairAccess().getEqualsSignKeyword_1());
+ }
+(
+(
+ {
+ newCompositeNode(grammarAccess.getValueNamePairAccess().getValueExpressionParserRuleCall_2_0());
+ }
+ lv_value_2_0=ruleExpression {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getValueNamePairRule());
+ }
+ set(
+ $current,
+ "value",
+ lv_value_2_0,
+ "Expression");
+ afterParserOrEnumRuleCall();
+ }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleTimeExpression
+entryRuleTimeExpression returns [EObject current=null]
+ :
+ { newCompositeNode(grammarAccess.getTimeExpressionRule()); }
+ iv_ruleTimeExpression=ruleTimeExpression
+ { $current=$iv_ruleTimeExpression.current; }
+ EOF
+;
+
+// Rule TimeExpression
+ruleTimeExpression returns [EObject current=null]
+ @init { enterRule();
+ }
+ @after { leaveRule(); }:
+(
+ {
+ newCompositeNode(grammarAccess.getTimeExpressionAccess().getInstantObsExpressionParserRuleCall_0());
+ }
+ this_InstantObsExpression_0=ruleInstantObsExpression
+ {
+ $current = $this_InstantObsExpression_0.current;
+ afterParserOrEnumRuleCall();
+ }
+
+ |
+ {
+ newCompositeNode(grammarAccess.getTimeExpressionAccess().getDurationObsExpressionParserRuleCall_1());
+ }
+ this_DurationObsExpression_1=ruleDurationObsExpression
+ {
+ $current = $this_DurationObsExpression_1.current;
+ afterParserOrEnumRuleCall();
+ }
+
+ |
+ {
+ newCompositeNode(grammarAccess.getTimeExpressionAccess().getJitterExpParserRuleCall_2());
+ }
+ this_JitterExp_2=ruleJitterExp
+ {
+ $current = $this_JitterExp_2.current;
+ afterParserOrEnumRuleCall();
+ }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleInstantObsExpression
+entryRuleInstantObsExpression returns [EObject current=null]
+ :
+ { newCompositeNode(grammarAccess.getInstantObsExpressionRule()); }
+ iv_ruleInstantObsExpression=ruleInstantObsExpression
+ { $current=$iv_ruleInstantObsExpression.current; }
+ EOF
+;
+
+// Rule InstantObsExpression
+ruleInstantObsExpression returns [EObject current=null]
+ @init { enterRule();
+ }
+ @after { leaveRule(); }:
+( otherlv_0='@'
+ {
+ newLeafNode(otherlv_0, grammarAccess.getInstantObsExpressionAccess().getCommercialAtKeyword_0());
+ }
+(
+(
+ {
+ newCompositeNode(grammarAccess.getInstantObsExpressionAccess().getIdInstantObsNameParserRuleCall_1_0());
+ }
+ lv_id_1_0=ruleInstantObsName {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getInstantObsExpressionRule());
+ }
+ set(
+ $current,
+ "id",
+ lv_id_1_0,
+ "InstantObsName");
+ afterParserOrEnumRuleCall();
+ }
+
+)
+)( otherlv_2='('
+ {
+ newLeafNode(otherlv_2, grammarAccess.getInstantObsExpressionAccess().getLeftParenthesisKeyword_2_0());
+ }
+(
+(
+ {
+ newCompositeNode(grammarAccess.getInstantObsExpressionAccess().getIndexExpressionParserRuleCall_2_1_0());
+ }
+ lv_index_3_0=ruleExpression {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getInstantObsExpressionRule());
+ }
+ set(
+ $current,
+ "index",
+ lv_index_3_0,
+ "Expression");
+ afterParserOrEnumRuleCall();
+ }
+
+)
+) otherlv_4=')'
+ {
+ newLeafNode(otherlv_4, grammarAccess.getInstantObsExpressionAccess().getRightParenthesisKeyword_2_2());
+ }
+)?( otherlv_5='when'
+ {
+ newLeafNode(otherlv_5, grammarAccess.getInstantObsExpressionAccess().getWhenKeyword_3_0());
+ }
+ otherlv_6='('
+ {
+ newLeafNode(otherlv_6, grammarAccess.getInstantObsExpressionAccess().getLeftParenthesisKeyword_3_1());
+ }
+(
+(
+ {
+ newCompositeNode(grammarAccess.getInstantObsExpressionAccess().getConditionExpressionParserRuleCall_3_2_0());
+ }
+ lv_condition_7_0=ruleExpression {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getInstantObsExpressionRule());
+ }
+ set(
+ $current,
+ "condition",
+ lv_condition_7_0,
+ "Expression");
+ afterParserOrEnumRuleCall();
+ }
+
+)
+) otherlv_8=')'
+ {
+ newLeafNode(otherlv_8, grammarAccess.getInstantObsExpressionAccess().getRightParenthesisKeyword_3_3());
+ }
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleInstantObsName
+entryRuleInstantObsName returns [EObject current=null]
+ :
+ { newCompositeNode(grammarAccess.getInstantObsNameRule()); }
+ iv_ruleInstantObsName=ruleInstantObsName
+ { $current=$iv_ruleInstantObsName.current; }
+ EOF
+;
+
+// Rule InstantObsName
+ruleInstantObsName returns [EObject current=null]
+ @init { enterRule();
+ }
+ @after { leaveRule(); }:
+((
+(
+ {
+ newCompositeNode(grammarAccess.getInstantObsNameAccess().getPathQualifiedNameParserRuleCall_0_0());
+ }
+ lv_path_0_0=ruleQualifiedName {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getInstantObsNameRule());
+ }
+ set(
+ $current,
+ "path",
+ lv_path_0_0,
+ "QualifiedName");
+ afterParserOrEnumRuleCall();
+ }
+
+)
+)?(
+(
+ {
+ if ($current==null) {
+ $current = createModelElement(grammarAccess.getInstantObsNameRule());
+ }
+ }
+ otherlv_1=RULE_ID
+ {
+ newLeafNode(otherlv_1, grammarAccess.getInstantObsNameAccess().getInstantIdTimeObservationCrossReference_1_0());
+ }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleDurationObsExpression
+entryRuleDurationObsExpression returns [EObject current=null]
+ :
+ { newCompositeNode(grammarAccess.getDurationObsExpressionRule()); }
+ iv_ruleDurationObsExpression=ruleDurationObsExpression
+ { $current=$iv_ruleDurationObsExpression.current; }
+ EOF
+;
+
+// Rule DurationObsExpression
+ruleDurationObsExpression returns [EObject current=null]
+ @init { enterRule();
+ }
+ @after { leaveRule(); }:
+( otherlv_0='&'
+ {
+ newLeafNode(otherlv_0, grammarAccess.getDurationObsExpressionAccess().getAmpersandKeyword_0());
+ }
+(
+(
+ {
+ newCompositeNode(grammarAccess.getDurationObsExpressionAccess().getIdDurationObsNameParserRuleCall_1_0());
+ }
+ lv_id_1_0=ruleDurationObsName {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getDurationObsExpressionRule());
+ }
+ set(
+ $current,
+ "id",
+ lv_id_1_0,
+ "DurationObsName");
+ afterParserOrEnumRuleCall();
+ }
+
+)
+)( otherlv_2='('
+ {
+ newLeafNode(otherlv_2, grammarAccess.getDurationObsExpressionAccess().getLeftParenthesisKeyword_2_0());
+ }
+(
+(
+ {
+ newCompositeNode(grammarAccess.getDurationObsExpressionAccess().getIndexExpressionParserRuleCall_2_1_0());
+ }
+ lv_index_3_0=ruleExpression {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getDurationObsExpressionRule());
+ }
+ set(
+ $current,
+ "index",
+ lv_index_3_0,
+ "Expression");
+ afterParserOrEnumRuleCall();
+ }
+
+)
+) otherlv_4=')'
+ {
+ newLeafNode(otherlv_4, grammarAccess.getDurationObsExpressionAccess().getRightParenthesisKeyword_2_2());
+ }
+)?( otherlv_5='when'
+ {
+ newLeafNode(otherlv_5, grammarAccess.getDurationObsExpressionAccess().getWhenKeyword_3_0());
+ }
+ otherlv_6='('
+ {
+ newLeafNode(otherlv_6, grammarAccess.getDurationObsExpressionAccess().getLeftParenthesisKeyword_3_1());
+ }
+(
+(
+ {
+ newCompositeNode(grammarAccess.getDurationObsExpressionAccess().getConditionExpressionParserRuleCall_3_2_0());
+ }
+ lv_condition_7_0=ruleExpression {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getDurationObsExpressionRule());
+ }
+ set(
+ $current,
+ "condition",
+ lv_condition_7_0,
+ "Expression");
+ afterParserOrEnumRuleCall();
+ }
+
+)
+) otherlv_8=')'
+ {
+ newLeafNode(otherlv_8, grammarAccess.getDurationObsExpressionAccess().getRightParenthesisKeyword_3_3());
+ }
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleDurationObsName
+entryRuleDurationObsName returns [EObject current=null]
+ :
+ { newCompositeNode(grammarAccess.getDurationObsNameRule()); }
+ iv_ruleDurationObsName=ruleDurationObsName
+ { $current=$iv_ruleDurationObsName.current; }
+ EOF
+;
+
+// Rule DurationObsName
+ruleDurationObsName returns [EObject current=null]
+ @init { enterRule();
+ }
+ @after { leaveRule(); }:
+((
+(
+ {
+ newCompositeNode(grammarAccess.getDurationObsNameAccess().getPathQualifiedNameParserRuleCall_0_0());
+ }
+ lv_path_0_0=ruleQualifiedName {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getDurationObsNameRule());
+ }
+ set(
+ $current,
+ "path",
+ lv_path_0_0,
+ "QualifiedName");
+ afterParserOrEnumRuleCall();
+ }
+
+)
+)?(
+(
+ {
+ if ($current==null) {
+ $current = createModelElement(grammarAccess.getDurationObsNameRule());
+ }
+ }
+ otherlv_1=RULE_ID
+ {
+ newLeafNode(otherlv_1, grammarAccess.getDurationObsNameAccess().getDurationIdDurationObservationCrossReference_1_0());
+ }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleJitterExp
+entryRuleJitterExp returns [EObject current=null]
+ :
+ { newCompositeNode(grammarAccess.getJitterExpRule()); }
+ iv_ruleJitterExp=ruleJitterExp
+ { $current=$iv_ruleJitterExp.current; }
+ EOF
+;
+
+// Rule JitterExp
+ruleJitterExp returns [EObject current=null]
+ @init { enterRule();
+ }
+ @after { leaveRule(); }:
+( otherlv_0='jitter('
+ {
+ newLeafNode(otherlv_0, grammarAccess.getJitterExpAccess().getJitterKeyword_0());
+ }
+(
+(
+ {
+ newCompositeNode(grammarAccess.getJitterExpAccess().getFirstInstantInstantObsExpressionParserRuleCall_1_0());
+ }
+ lv_firstInstant_1_0=ruleInstantObsExpression {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getJitterExpRule());
+ }
+ set(
+ $current,
+ "firstInstant",
+ lv_firstInstant_1_0,
+ "InstantObsExpression");
+ afterParserOrEnumRuleCall();
+ }
+
+)
+)( otherlv_2='-'
+ {
+ newLeafNode(otherlv_2, grammarAccess.getJitterExpAccess().getHyphenMinusKeyword_2_0());
+ }
+(
+(
+ {
+ newCompositeNode(grammarAccess.getJitterExpAccess().getSecondInstantInstantObsExpressionParserRuleCall_2_1_0());
+ }
+ lv_secondInstant_3_0=ruleInstantObsExpression {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getJitterExpRule());
+ }
+ set(
+ $current,
+ "secondInstant",
+ lv_secondInstant_3_0,
+ "InstantObsExpression");
+ afterParserOrEnumRuleCall();
+ }
+
+)
+))? otherlv_4=')'
+ {
+ newLeafNode(otherlv_4, grammarAccess.getJitterExpAccess().getRightParenthesisKeyword_3());
+ }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleVariableDeclaration
+entryRuleVariableDeclaration returns [EObject current=null]
+ :
+ { newCompositeNode(grammarAccess.getVariableDeclarationRule()); }
+ iv_ruleVariableDeclaration=ruleVariableDeclaration
+ { $current=$iv_ruleVariableDeclaration.current; }
+ EOF
+;
+
+// Rule VariableDeclaration
+ruleVariableDeclaration returns [EObject current=null]
+ @init { enterRule();
+ }
+ @after { leaveRule(); }:
+((
+(
+ {
+ newCompositeNode(grammarAccess.getVariableDeclarationAccess().getVariableDeclarationVariableDirectionKindParserRuleCall_0_0());
+ }
+ lv_variableDeclaration_0_0=ruleVariableDirectionKind {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getVariableDeclarationRule());
+ }
+ set(
+ $current,
+ "variableDeclaration",
+ lv_variableDeclaration_0_0,
+ "VariableDirectionKind");
+ afterParserOrEnumRuleCall();
+ }
+
+)
+)? otherlv_1='$'
+ {
+ newLeafNode(otherlv_1, grammarAccess.getVariableDeclarationAccess().getDollarSignKeyword_1());
+ }
+(
+(
+ lv_name_2_0=RULE_ID
+ {
+ newLeafNode(lv_name_2_0, grammarAccess.getVariableDeclarationAccess().getNameIDTerminalRuleCall_2_0());
+ }
+ {
+ if ($current==null) {
+ $current = createModelElement(grammarAccess.getVariableDeclarationRule());
+ }
+ setWithLastConsumed(
+ $current,
+ "name",
+ lv_name_2_0,
+ "ID");
+ }
+
+)
+)(( otherlv_3=':'
+ {
+ newLeafNode(otherlv_3, grammarAccess.getVariableDeclarationAccess().getColonKeyword_3_0_0());
+ }
+(
+(
+ {
+ newCompositeNode(grammarAccess.getVariableDeclarationAccess().getTypeDataTypeNameParserRuleCall_3_0_1_0());
+ }
+ lv_type_4_0=ruleDataTypeName {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getVariableDeclarationRule());
+ }
+ set(
+ $current,
+ "type",
+ lv_type_4_0,
+ "DataTypeName");
+ afterParserOrEnumRuleCall();
+ }
+
+)
+)( otherlv_5='='
+ {
+ newLeafNode(otherlv_5, grammarAccess.getVariableDeclarationAccess().getEqualsSignKeyword_3_0_2_0());
+ }
+ otherlv_6='('
+ {
+ newLeafNode(otherlv_6, grammarAccess.getVariableDeclarationAccess().getLeftParenthesisKeyword_3_0_2_1());
+ }
+(
+(
+ {
+ newCompositeNode(grammarAccess.getVariableDeclarationAccess().getInitValueExpressionParserRuleCall_3_0_2_2_0());
+ }
+ lv_initValue_7_0=ruleExpression {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getVariableDeclarationRule());
+ }
+ set(
+ $current,
+ "initValue",
+ lv_initValue_7_0,
+ "Expression");
+ afterParserOrEnumRuleCall();
+ }
+
+)
+) otherlv_8=')'
+ {
+ newLeafNode(otherlv_8, grammarAccess.getVariableDeclarationAccess().getRightParenthesisKeyword_3_0_2_3());
+ }
+)?)
+ |( otherlv_9='='
+ {
+ newLeafNode(otherlv_9, grammarAccess.getVariableDeclarationAccess().getEqualsSignKeyword_3_1_0());
+ }
+ otherlv_10='('
+ {
+ newLeafNode(otherlv_10, grammarAccess.getVariableDeclarationAccess().getLeftParenthesisKeyword_3_1_1());
+ }
+(
+(
+ {
+ newCompositeNode(grammarAccess.getVariableDeclarationAccess().getInitValueExpressionParserRuleCall_3_1_2_0());
+ }
+ lv_initValue_11_0=ruleExpression {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getVariableDeclarationRule());
+ }
+ set(
+ $current,
+ "initValue",
+ lv_initValue_11_0,
+ "Expression");
+ afterParserOrEnumRuleCall();
+ }
+
+)
+) otherlv_12=')'
+ {
+ newLeafNode(otherlv_12, grammarAccess.getVariableDeclarationAccess().getRightParenthesisKeyword_3_1_3());
+ }
+)))
+;
+
+
+
+
+
+// Entry rule entryRuleVariableDirectionKind
+entryRuleVariableDirectionKind returns [String current=null]
+ :
+ { newCompositeNode(grammarAccess.getVariableDirectionKindRule()); }
+ iv_ruleVariableDirectionKind=ruleVariableDirectionKind
+ { $current=$iv_ruleVariableDirectionKind.current.getText(); }
+ EOF
+;
+
+// Rule VariableDirectionKind
+ruleVariableDirectionKind returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()]
+ @init { enterRule();
+ }
+ @after { leaveRule(); }:
+(
+ kw='in'
+ {
+ $current.merge(kw);
+ newLeafNode(kw, grammarAccess.getVariableDirectionKindAccess().getInKeyword_0());
+ }
+
+ |
+ kw='out'
+ {
+ $current.merge(kw);
+ newLeafNode(kw, grammarAccess.getVariableDirectionKindAccess().getOutKeyword_1());
+ }
+
+ |
+ kw='inout'
+ {
+ $current.merge(kw);
+ newLeafNode(kw, grammarAccess.getVariableDirectionKindAccess().getInoutKeyword_2());
+ }
+)
+ ;
+
+
+
+
+
+// Entry rule entryRuleDataTypeName
+entryRuleDataTypeName returns [EObject current=null]
+ :
+ { newCompositeNode(grammarAccess.getDataTypeNameRule()); }
+ iv_ruleDataTypeName=ruleDataTypeName
+ { $current=$iv_ruleDataTypeName.current; }
+ EOF
+;
+
+// Rule DataTypeName
+ruleDataTypeName returns [EObject current=null]
+ @init { enterRule();
+ }
+ @after { leaveRule(); }:
+((
+(
+ {
+ newCompositeNode(grammarAccess.getDataTypeNameAccess().getPathQualifiedNameParserRuleCall_0_0());
+ }
+ lv_path_0_0=ruleQualifiedName {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getDataTypeNameRule());
+ }
+ set(
+ $current,
+ "path",
+ lv_path_0_0,
+ "QualifiedName");
+ afterParserOrEnumRuleCall();
+ }
+
+)
+)?(
+(
+ {
+ if ($current==null) {
+ $current = createModelElement(grammarAccess.getDataTypeNameRule());
+ }
+ }
+ otherlv_1=RULE_ID
+ {
+ newLeafNode(otherlv_1, grammarAccess.getDataTypeNameAccess().getTypeDataTypeCrossReference_1_0());
+ }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleNumberLiteralRule
+entryRuleNumberLiteralRule returns [EObject current=null]
+ :
+ { newCompositeNode(grammarAccess.getNumberLiteralRuleRule()); }
+ iv_ruleNumberLiteralRule=ruleNumberLiteralRule
+ { $current=$iv_ruleNumberLiteralRule.current; }
+ EOF
+;
+
+// Rule NumberLiteralRule
+ruleNumberLiteralRule returns [EObject current=null]
+ @init { enterRule();
+ }
+ @after { leaveRule(); }:
+(
+ {
+ newCompositeNode(grammarAccess.getNumberLiteralRuleAccess().getIntegerLiteralRuleParserRuleCall_0());
+ }
+ this_IntegerLiteralRule_0=ruleIntegerLiteralRule
+ {
+ $current = $this_IntegerLiteralRule_0.current;
+ afterParserOrEnumRuleCall();
+ }
+
+ |
+ {
+ newCompositeNode(grammarAccess.getNumberLiteralRuleAccess().getUnlimitedLiteralRuleParserRuleCall_1());
+ }
+ this_UnlimitedLiteralRule_1=ruleUnlimitedLiteralRule
+ {
+ $current = $this_UnlimitedLiteralRule_1.current;
+ afterParserOrEnumRuleCall();
+ }
+
+ |
+ {
+ newCompositeNode(grammarAccess.getNumberLiteralRuleAccess().getRealLiteralRuleParserRuleCall_2());
+ }
+ this_RealLiteralRule_2=ruleRealLiteralRule
+ {
+ $current = $this_RealLiteralRule_2.current;
+ afterParserOrEnumRuleCall();
+ }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleIntegerLiteralRule
+entryRuleIntegerLiteralRule returns [EObject current=null]
+ :
+ { newCompositeNode(grammarAccess.getIntegerLiteralRuleRule()); }
+ iv_ruleIntegerLiteralRule=ruleIntegerLiteralRule
+ { $current=$iv_ruleIntegerLiteralRule.current; }
+ EOF
+;
+
+// Rule IntegerLiteralRule
+ruleIntegerLiteralRule returns [EObject current=null]
+ @init { enterRule();
+ }
+ @after { leaveRule(); }:
+(
+(
+ lv_value_0_0=RULE_INTEGERLITERAL
+ {
+ newLeafNode(lv_value_0_0, grammarAccess.getIntegerLiteralRuleAccess().getValueIntegerLiteralTerminalRuleCall_0());
+ }
+ {
+ if ($current==null) {
+ $current = createModelElement(grammarAccess.getIntegerLiteralRuleRule());
+ }
+ setWithLastConsumed(
+ $current,
+ "value",
+ lv_value_0_0,
+ "IntegerLiteral");
+ }
+
+)
+)
+;
+
+
+
+
+
+// Entry rule entryRuleUnlimitedLiteralRule
+entryRuleUnlimitedLiteralRule returns [EObject current=null]
+ :
+ { newCompositeNode(grammarAccess.getUnlimitedLiteralRuleRule()); }
+ iv_ruleUnlimitedLiteralRule=ruleUnlimitedLiteralRule
+ { $current=$iv_ruleUnlimitedLiteralRule.current; }
+ EOF
+;
+
+// Rule UnlimitedLiteralRule
+ruleUnlimitedLiteralRule returns [EObject current=null]
+ @init { enterRule();
+ }
+ @after { leaveRule(); }:
+(
+(
+ lv_value_0_0= '*'
+ {
+ newLeafNode(lv_value_0_0, grammarAccess.getUnlimitedLiteralRuleAccess().getValueAsteriskKeyword_0());
+ }
+
+ {
+ if ($current==null) {
+ $current = createModelElement(grammarAccess.getUnlimitedLiteralRuleRule());
+ }
+ setWithLastConsumed($current, "value", lv_value_0_0, "*");
+ }
+
+)
+)
+;
+
+
+
+
+
+// Entry rule entryRuleRealLiteralRule
+entryRuleRealLiteralRule returns [EObject current=null]
+ :
+ { newCompositeNode(grammarAccess.getRealLiteralRuleRule()); }
+ iv_ruleRealLiteralRule=ruleRealLiteralRule
+ { $current=$iv_ruleRealLiteralRule.current; }
+ EOF
+;
+
+// Rule RealLiteralRule
+ruleRealLiteralRule returns [EObject current=null]
+ @init { enterRule();
+ }
+ @after { leaveRule(); }:
+(
+(
+ lv_value_0_0=RULE_REALLITERAL
+ {
+ newLeafNode(lv_value_0_0, grammarAccess.getRealLiteralRuleAccess().getValueRealLiteralTerminalRuleCall_0());
+ }
+ {
+ if ($current==null) {
+ $current = createModelElement(grammarAccess.getRealLiteralRuleRule());
+ }
+ setWithLastConsumed(
+ $current,
+ "value",
+ lv_value_0_0,
+ "RealLiteral");
+ }
+
+)
+)
+;
+
+
+
+
+
+// Entry rule entryRuleDateTimeLiteralRule
+entryRuleDateTimeLiteralRule returns [EObject current=null]
+ :
+ { newCompositeNode(grammarAccess.getDateTimeLiteralRuleRule()); }
+ iv_ruleDateTimeLiteralRule=ruleDateTimeLiteralRule
+ { $current=$iv_ruleDateTimeLiteralRule.current; }
+ EOF
+;
+
+// Rule DateTimeLiteralRule
+ruleDateTimeLiteralRule returns [EObject current=null]
+ @init { enterRule();
+ }
+ @after { leaveRule(); }:
+(
+(
+ lv_value_0_0=RULE_DATETIMELITERAL
+ {
+ newLeafNode(lv_value_0_0, grammarAccess.getDateTimeLiteralRuleAccess().getValueDateTimeLiteralTerminalRuleCall_0());
+ }
+ {
+ if ($current==null) {
+ $current = createModelElement(grammarAccess.getDateTimeLiteralRuleRule());
+ }
+ setWithLastConsumed(
+ $current,
+ "value",
+ lv_value_0_0,
+ "DateTimeLiteral");
+ }
+
+)
+)
+;
+
+
+
+
+
+// Entry rule entryRuleBooleanLiteralRule
+entryRuleBooleanLiteralRule returns [EObject current=null]
+ :
+ { newCompositeNode(grammarAccess.getBooleanLiteralRuleRule()); }
+ iv_ruleBooleanLiteralRule=ruleBooleanLiteralRule
+ { $current=$iv_ruleBooleanLiteralRule.current; }
+ EOF
+;
+
+// Rule BooleanLiteralRule
+ruleBooleanLiteralRule returns [EObject current=null]
+ @init { enterRule();
+ }
+ @after { leaveRule(); }:
+(
+(
+ lv_value_0_0=RULE_BOOLEANLITERAL
+ {
+ newLeafNode(lv_value_0_0, grammarAccess.getBooleanLiteralRuleAccess().getValueBooleanLiteralTerminalRuleCall_0());
+ }
+ {
+ if ($current==null) {
+ $current = createModelElement(grammarAccess.getBooleanLiteralRuleRule());
+ }
+ setWithLastConsumed(
+ $current,
+ "value",
+ lv_value_0_0,
+ "BooleanLiteral");
+ }
+
+)
+)
+;
+
+
+
+
+
+// Entry rule entryRuleNullLiteralRule
+entryRuleNullLiteralRule returns [EObject current=null]
+ :
+ { newCompositeNode(grammarAccess.getNullLiteralRuleRule()); }
+ iv_ruleNullLiteralRule=ruleNullLiteralRule
+ { $current=$iv_ruleNullLiteralRule.current; }
+ EOF
+;
+
+// Rule NullLiteralRule
+ruleNullLiteralRule returns [EObject current=null]
+ @init { enterRule();
+ }
+ @after { leaveRule(); }:
+(
+(
+ lv_value_0_0=RULE_NULLLITERAL
+ {
+ newLeafNode(lv_value_0_0, grammarAccess.getNullLiteralRuleAccess().getValueNullLiteralTerminalRuleCall_0());
+ }
+ {
+ if ($current==null) {
+ $current = createModelElement(grammarAccess.getNullLiteralRuleRule());
+ }
+ setWithLastConsumed(
+ $current,
+ "value",
+ lv_value_0_0,
+ "NullLiteral");
+ }
+
+)
+)
+;
+
+
+
+
+
+// Entry rule entryRuleDefaultLiteralRule
+entryRuleDefaultLiteralRule returns [EObject current=null]
+ :
+ { newCompositeNode(grammarAccess.getDefaultLiteralRuleRule()); }
+ iv_ruleDefaultLiteralRule=ruleDefaultLiteralRule
+ { $current=$iv_ruleDefaultLiteralRule.current; }
+ EOF
+;
+
+// Rule DefaultLiteralRule
+ruleDefaultLiteralRule returns [EObject current=null]
+ @init { enterRule();
+ }
+ @after { leaveRule(); }:
+(
+(
+ lv_value_0_0= '/'
+ {
+ newLeafNode(lv_value_0_0, grammarAccess.getDefaultLiteralRuleAccess().getValueSolidusKeyword_0());
+ }
+
+ {
+ if ($current==null) {
+ $current = createModelElement(grammarAccess.getDefaultLiteralRuleRule());
+ }
+ setWithLastConsumed($current, "value", lv_value_0_0, "/");
+ }
+
+)
+)
+;
+
+
+
+
+
+// Entry rule entryRuleStringLiteralRule
+entryRuleStringLiteralRule returns [EObject current=null]
+ :
+ { newCompositeNode(grammarAccess.getStringLiteralRuleRule()); }
+ iv_ruleStringLiteralRule=ruleStringLiteralRule
+ { $current=$iv_ruleStringLiteralRule.current; }
+ EOF
+;
+
+// Rule StringLiteralRule
+ruleStringLiteralRule returns [EObject current=null]
+ @init { enterRule();
+ }
+ @after { leaveRule(); }:
+(
+(
+ lv_value_0_0=RULE_STRING
+ {
+ newLeafNode(lv_value_0_0, grammarAccess.getStringLiteralRuleAccess().getValueSTRINGTerminalRuleCall_0());
+ }
+ {
+ if ($current==null) {
+ $current = createModelElement(grammarAccess.getStringLiteralRuleRule());
+ }
+ setWithLastConsumed(
+ $current,
+ "value",
+ lv_value_0_0,
+ "STRING");
+ }
+
+)
+)
+;
+
+
+
+
+
+RULE_INTEGERLITERAL : ('+'|'-')? (('0'..'9')+|'0x' ('0'..'9'|'A'..'F'|'a'..'f')+|'0b' ('0'..'1')+);
+
+RULE_REALLITERAL : ('+'|'-')? ('0'..'9')+ '.' ('0'..'9')+ ('E' ('+'|'-')? ('0'..'9')+)?;
+
+RULE_DATETIMELITERAL : (('0'..'1' '0'..'9'|'2' '0'..'3') ':' '0'..'5' '0'..'9' (':' '0'..'5' '0'..'9' (':' '0'..'9' '0'..'9')?)? (' ' '0'..'9' '0'..'9' '0'..'9' '0'..'9' '/' ('0' '0'..'9'|'1' '0'..'2') '/' ('0'..'2' '0'..'9'|'3' ('0'|'1')))? (' ' ('Mon'|'Tue'|'Wed'|'Thr'|'Fri'|'Sat'|'Sun'))?|'0'..'9' '0'..'9' '0'..'9' '0'..'9' '/' ('0' '0'..'9'|'1' '0'..'2') '/' ('0'..'2' '0'..'9'|'3' ('0'|'1')) (' ' ('Mon'|'Tue'|'Wed'|'Thr'|'Fri'|'Sat'|'Sun'))?|('Mon'|'Tue'|'Wed'|'Thr'|'Fri'|'Sat'|'Sun'));
+
+RULE_BOOLEANLITERAL : ('true'|'false');
+
+RULE_NULLLITERAL : 'null';
+
+RULE_ID : '^'? ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'_'|'0'..'9')*;
+
+RULE_INT : ('0'..'9')+;
+
+RULE_STRING : ('"' ('\\' ('b'|'t'|'n'|'f'|'r'|'u'|'"'|'\''|'\\')|~(('\\'|'"')))* '"'|'\'' ('\\' ('b'|'t'|'n'|'f'|'r'|'u'|'"'|'\''|'\\')|~(('\\'|'\'')))* '\'');
+
+RULE_ML_COMMENT : '/*' ( options {greedy=false;} : . )*'*/';
+
+RULE_SL_COMMENT : '//' ~(('\n'|'\r'))* ('\r'? '\n')?;
+
+RULE_WS : (' '|'\t'|'\r'|'\n')+;
+
+RULE_ANY_OTHER : .;
+
+
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.tokens b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.tokens
new file mode 100644
index 00000000000..6b5cb8fe470
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.tokens
@@ -0,0 +1,84 @@
+RULE_DATETIMELITERAL=7
+RULE_ID=4
+T__29=29
+T__28=28
+T__27=27
+T__26=26
+T__25=25
+T__24=24
+T__23=23
+T__22=22
+RULE_ANY_OTHER=15
+T__21=21
+T__20=20
+RULE_REALLITERAL=6
+RULE_BOOLEANLITERAL=8
+T__19=19
+T__16=16
+T__51=51
+T__18=18
+T__17=17
+RULE_INT=11
+T__50=50
+RULE_NULLLITERAL=9
+T__42=42
+T__43=43
+T__40=40
+T__41=41
+T__46=46
+T__47=47
+T__44=44
+T__45=45
+T__48=48
+T__49=49
+RULE_INTEGERLITERAL=5
+RULE_SL_COMMENT=13
+RULE_ML_COMMENT=12
+T__30=30
+T__31=31
+RULE_STRING=10
+T__32=32
+T__33=33
+T__34=34
+T__35=35
+T__36=36
+T__37=37
+T__38=38
+T__39=39
+RULE_WS=14
+'..'=39
+'out'=50
+'>='=24
+'when'=45
+'=='=19
+'/'=30
+'mod'=31
+'>'=22
+'='=43
+'<>'=20
+'@'=44
+'::'=36
+'+'=27
+'.'=33
+')'=35
+'xor'=18
+'$'=48
+'}'=41
+'jitter('=47
+'inout'=51
+'and'=16
+'{'=40
+'?'=25
+'<='=23
+'<'=21
+':'=26
+'not'=32
+'('=34
+'-'=28
+'or'=17
+'*'=29
+'['=38
+','=42
+'in'=49
+'&'=46
+']'=37
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSLLexer.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSLLexer.java
new file mode 100644
index 00000000000..f39e7885c88
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSLLexer.java
@@ -0,0 +1,3295 @@
+package org.eclipse.papyrus.marte.vsl.parser.antlr.internal;
+
+// Hack: Use our own Lexer superclass by means of import.
+// Currently there is no other way to specify the superclass for the lexer.
+import org.eclipse.xtext.parser.antlr.Lexer;
+
+
+import org.antlr.runtime.*;
+import java.util.Stack;
+import java.util.List;
+import java.util.ArrayList;
+
+@SuppressWarnings("all")
+public class InternalVSLLexer extends Lexer {
+ public static final int RULE_DATETIMELITERAL=7;
+ public static final int RULE_ID=4;
+ public static final int T__29=29;
+ public static final int T__28=28;
+ public static final int T__27=27;
+ public static final int T__26=26;
+ public static final int T__25=25;
+ public static final int T__24=24;
+ public static final int T__23=23;
+ public static final int T__22=22;
+ public static final int T__21=21;
+ public static final int RULE_ANY_OTHER=15;
+ public static final int T__20=20;
+ public static final int RULE_REALLITERAL=6;
+ public static final int EOF=-1;
+ public static final int T__19=19;
+ public static final int RULE_BOOLEANLITERAL=8;
+ public static final int T__16=16;
+ public static final int T__51=51;
+ public static final int T__18=18;
+ public static final int T__17=17;
+ public static final int RULE_INT=11;
+ public static final int T__50=50;
+ public static final int RULE_NULLLITERAL=9;
+ public static final int T__42=42;
+ public static final int T__43=43;
+ public static final int T__40=40;
+ public static final int T__41=41;
+ public static final int T__46=46;
+ public static final int T__47=47;
+ public static final int T__44=44;
+ public static final int T__45=45;
+ public static final int T__48=48;
+ public static final int T__49=49;
+ public static final int RULE_INTEGERLITERAL=5;
+ public static final int RULE_SL_COMMENT=13;
+ public static final int RULE_ML_COMMENT=12;
+ public static final int T__30=30;
+ public static final int T__31=31;
+ public static final int RULE_STRING=10;
+ public static final int T__32=32;
+ public static final int T__33=33;
+ public static final int T__34=34;
+ public static final int T__35=35;
+ public static final int T__36=36;
+ public static final int T__37=37;
+ public static final int T__38=38;
+ public static final int T__39=39;
+ public static final int RULE_WS=14;
+
+ // delegates
+ // delegators
+
+ public InternalVSLLexer() {;}
+ public InternalVSLLexer(CharStream input) {
+ this(input, new RecognizerSharedState());
+ }
+ public InternalVSLLexer(CharStream input, RecognizerSharedState state) {
+ super(input,state);
+
+ }
+ public String getGrammarFileName() { return "../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g"; }
+
+ // $ANTLR start "T__16"
+ public final void mT__16() throws RecognitionException {
+ try {
+ int _type = T__16;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:11:7: ( 'and' )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:11:9: 'and'
+ {
+ match("and");
+
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__16"
+
+ // $ANTLR start "T__17"
+ public final void mT__17() throws RecognitionException {
+ try {
+ int _type = T__17;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:12:7: ( 'or' )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:12:9: 'or'
+ {
+ match("or");
+
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__17"
+
+ // $ANTLR start "T__18"
+ public final void mT__18() throws RecognitionException {
+ try {
+ int _type = T__18;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:13:7: ( 'xor' )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:13:9: 'xor'
+ {
+ match("xor");
+
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__18"
+
+ // $ANTLR start "T__19"
+ public final void mT__19() throws RecognitionException {
+ try {
+ int _type = T__19;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:14:7: ( '==' )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:14:9: '=='
+ {
+ match("==");
+
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__19"
+
+ // $ANTLR start "T__20"
+ public final void mT__20() throws RecognitionException {
+ try {
+ int _type = T__20;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:15:7: ( '<>' )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:15:9: '<>'
+ {
+ match("<>");
+
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__20"
+
+ // $ANTLR start "T__21"
+ public final void mT__21() throws RecognitionException {
+ try {
+ int _type = T__21;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:16:7: ( '<' )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:16:9: '<'
+ {
+ match('<');
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__21"
+
+ // $ANTLR start "T__22"
+ public final void mT__22() throws RecognitionException {
+ try {
+ int _type = T__22;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:17:7: ( '>' )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:17:9: '>'
+ {
+ match('>');
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__22"
+
+ // $ANTLR start "T__23"
+ public final void mT__23() throws RecognitionException {
+ try {
+ int _type = T__23;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:18:7: ( '<=' )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:18:9: '<='
+ {
+ match("<=");
+
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__23"
+
+ // $ANTLR start "T__24"
+ public final void mT__24() throws RecognitionException {
+ try {
+ int _type = T__24;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:19:7: ( '>=' )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:19:9: '>='
+ {
+ match(">=");
+
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__24"
+
+ // $ANTLR start "T__25"
+ public final void mT__25() throws RecognitionException {
+ try {
+ int _type = T__25;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:20:7: ( '?' )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:20:9: '?'
+ {
+ match('?');
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__25"
+
+ // $ANTLR start "T__26"
+ public final void mT__26() throws RecognitionException {
+ try {
+ int _type = T__26;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:21:7: ( ':' )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:21:9: ':'
+ {
+ match(':');
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__26"
+
+ // $ANTLR start "T__27"
+ public final void mT__27() throws RecognitionException {
+ try {
+ int _type = T__27;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:22:7: ( '+' )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:22:9: '+'
+ {
+ match('+');
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__27"
+
+ // $ANTLR start "T__28"
+ public final void mT__28() throws RecognitionException {
+ try {
+ int _type = T__28;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:23:7: ( '-' )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:23:9: '-'
+ {
+ match('-');
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__28"
+
+ // $ANTLR start "T__29"
+ public final void mT__29() throws RecognitionException {
+ try {
+ int _type = T__29;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:24:7: ( '*' )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:24:9: '*'
+ {
+ match('*');
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__29"
+
+ // $ANTLR start "T__30"
+ public final void mT__30() throws RecognitionException {
+ try {
+ int _type = T__30;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:25:7: ( '/' )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:25:9: '/'
+ {
+ match('/');
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__30"
+
+ // $ANTLR start "T__31"
+ public final void mT__31() throws RecognitionException {
+ try {
+ int _type = T__31;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:26:7: ( 'mod' )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:26:9: 'mod'
+ {
+ match("mod");
+
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__31"
+
+ // $ANTLR start "T__32"
+ public final void mT__32() throws RecognitionException {
+ try {
+ int _type = T__32;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:27:7: ( 'not' )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:27:9: 'not'
+ {
+ match("not");
+
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__32"
+
+ // $ANTLR start "T__33"
+ public final void mT__33() throws RecognitionException {
+ try {
+ int _type = T__33;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:28:7: ( '.' )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:28:9: '.'
+ {
+ match('.');
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__33"
+
+ // $ANTLR start "T__34"
+ public final void mT__34() throws RecognitionException {
+ try {
+ int _type = T__34;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:29:7: ( '(' )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:29:9: '('
+ {
+ match('(');
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__34"
+
+ // $ANTLR start "T__35"
+ public final void mT__35() throws RecognitionException {
+ try {
+ int _type = T__35;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:30:7: ( ')' )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:30:9: ')'
+ {
+ match(')');
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__35"
+
+ // $ANTLR start "T__36"
+ public final void mT__36() throws RecognitionException {
+ try {
+ int _type = T__36;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:31:7: ( '::' )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:31:9: '::'
+ {
+ match("::");
+
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__36"
+
+ // $ANTLR start "T__37"
+ public final void mT__37() throws RecognitionException {
+ try {
+ int _type = T__37;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:32:7: ( ']' )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:32:9: ']'
+ {
+ match(']');
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__37"
+
+ // $ANTLR start "T__38"
+ public final void mT__38() throws RecognitionException {
+ try {
+ int _type = T__38;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:33:7: ( '[' )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:33:9: '['
+ {
+ match('[');
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__38"
+
+ // $ANTLR start "T__39"
+ public final void mT__39() throws RecognitionException {
+ try {
+ int _type = T__39;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:34:7: ( '..' )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:34:9: '..'
+ {
+ match("..");
+
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__39"
+
+ // $ANTLR start "T__40"
+ public final void mT__40() throws RecognitionException {
+ try {
+ int _type = T__40;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:35:7: ( '{' )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:35:9: '{'
+ {
+ match('{');
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__40"
+
+ // $ANTLR start "T__41"
+ public final void mT__41() throws RecognitionException {
+ try {
+ int _type = T__41;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:36:7: ( '}' )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:36:9: '}'
+ {
+ match('}');
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__41"
+
+ // $ANTLR start "T__42"
+ public final void mT__42() throws RecognitionException {
+ try {
+ int _type = T__42;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:37:7: ( ',' )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:37:9: ','
+ {
+ match(',');
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__42"
+
+ // $ANTLR start "T__43"
+ public final void mT__43() throws RecognitionException {
+ try {
+ int _type = T__43;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:38:7: ( '=' )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:38:9: '='
+ {
+ match('=');
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__43"
+
+ // $ANTLR start "T__44"
+ public final void mT__44() throws RecognitionException {
+ try {
+ int _type = T__44;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:39:7: ( '@' )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:39:9: '@'
+ {
+ match('@');
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__44"
+
+ // $ANTLR start "T__45"
+ public final void mT__45() throws RecognitionException {
+ try {
+ int _type = T__45;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:40:7: ( 'when' )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:40:9: 'when'
+ {
+ match("when");
+
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__45"
+
+ // $ANTLR start "T__46"
+ public final void mT__46() throws RecognitionException {
+ try {
+ int _type = T__46;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:41:7: ( '&' )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:41:9: '&'
+ {
+ match('&');
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__46"
+
+ // $ANTLR start "T__47"
+ public final void mT__47() throws RecognitionException {
+ try {
+ int _type = T__47;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:42:7: ( 'jitter(' )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:42:9: 'jitter('
+ {
+ match("jitter(");
+
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__47"
+
+ // $ANTLR start "T__48"
+ public final void mT__48() throws RecognitionException {
+ try {
+ int _type = T__48;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:43:7: ( '$' )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:43:9: '$'
+ {
+ match('$');
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__48"
+
+ // $ANTLR start "T__49"
+ public final void mT__49() throws RecognitionException {
+ try {
+ int _type = T__49;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:44:7: ( 'in' )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:44:9: 'in'
+ {
+ match("in");
+
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__49"
+
+ // $ANTLR start "T__50"
+ public final void mT__50() throws RecognitionException {
+ try {
+ int _type = T__50;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:45:7: ( 'out' )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:45:9: 'out'
+ {
+ match("out");
+
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__50"
+
+ // $ANTLR start "T__51"
+ public final void mT__51() throws RecognitionException {
+ try {
+ int _type = T__51;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:46:7: ( 'inout' )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:46:9: 'inout'
+ {
+ match("inout");
+
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__51"
+
+ // $ANTLR start "RULE_INTEGERLITERAL"
+ public final void mRULE_INTEGERLITERAL() throws RecognitionException {
+ try {
+ int _type = RULE_INTEGERLITERAL;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2730:21: ( ( '+' | '-' )? ( ( '0' .. '9' )+ | '0x' ( '0' .. '9' | 'A' .. 'F' | 'a' .. 'f' )+ | '0b' ( '0' .. '1' )+ ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2730:23: ( '+' | '-' )? ( ( '0' .. '9' )+ | '0x' ( '0' .. '9' | 'A' .. 'F' | 'a' .. 'f' )+ | '0b' ( '0' .. '1' )+ )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2730:23: ( '+' | '-' )?
+ int alt1=2;
+ int LA1_0 = input.LA(1);
+
+ if ( (LA1_0=='+'||LA1_0=='-') ) {
+ alt1=1;
+ }
+ switch (alt1) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:
+ {
+ if ( input.LA(1)=='+'||input.LA(1)=='-' ) {
+ input.consume();
+
+ }
+ else {
+ MismatchedSetException mse = new MismatchedSetException(null,input);
+ recover(mse);
+ throw mse;}
+
+
+ }
+ break;
+
+ }
+
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2730:34: ( ( '0' .. '9' )+ | '0x' ( '0' .. '9' | 'A' .. 'F' | 'a' .. 'f' )+ | '0b' ( '0' .. '1' )+ )
+ int alt5=3;
+ int LA5_0 = input.LA(1);
+
+ if ( (LA5_0=='0') ) {
+ switch ( input.LA(2) ) {
+ case 'x':
+ {
+ alt5=2;
+ }
+ break;
+ case 'b':
+ {
+ alt5=3;
+ }
+ break;
+ default:
+ alt5=1;}
+
+ }
+ else if ( ((LA5_0>='1' && LA5_0<='9')) ) {
+ alt5=1;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("", 5, 0, input);
+
+ throw nvae;
+ }
+ switch (alt5) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2730:35: ( '0' .. '9' )+
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2730:35: ( '0' .. '9' )+
+ int cnt2=0;
+ loop2:
+ do {
+ int alt2=2;
+ int LA2_0 = input.LA(1);
+
+ if ( ((LA2_0>='0' && LA2_0<='9')) ) {
+ alt2=1;
+ }
+
+
+ switch (alt2) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2730:36: '0' .. '9'
+ {
+ matchRange('0','9');
+
+ }
+ break;
+
+ default :
+ if ( cnt2 >= 1 ) break loop2;
+ EarlyExitException eee =
+ new EarlyExitException(2, input);
+ throw eee;
+ }
+ cnt2++;
+ } while (true);
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2730:47: '0x' ( '0' .. '9' | 'A' .. 'F' | 'a' .. 'f' )+
+ {
+ match("0x");
+
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2730:52: ( '0' .. '9' | 'A' .. 'F' | 'a' .. 'f' )+
+ int cnt3=0;
+ loop3:
+ do {
+ int alt3=2;
+ int LA3_0 = input.LA(1);
+
+ if ( ((LA3_0>='0' && LA3_0<='9')||(LA3_0>='A' && LA3_0<='F')||(LA3_0>='a' && LA3_0<='f')) ) {
+ alt3=1;
+ }
+
+
+ switch (alt3) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:
+ {
+ if ( (input.LA(1)>='0' && input.LA(1)<='9')||(input.LA(1)>='A' && input.LA(1)<='F')||(input.LA(1)>='a' && input.LA(1)<='f') ) {
+ input.consume();
+
+ }
+ else {
+ MismatchedSetException mse = new MismatchedSetException(null,input);
+ recover(mse);
+ throw mse;}
+
+
+ }
+ break;
+
+ default :
+ if ( cnt3 >= 1 ) break loop3;
+ EarlyExitException eee =
+ new EarlyExitException(3, input);
+ throw eee;
+ }
+ cnt3++;
+ } while (true);
+
+
+ }
+ break;
+ case 3 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2730:82: '0b' ( '0' .. '1' )+
+ {
+ match("0b");
+
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2730:87: ( '0' .. '1' )+
+ int cnt4=0;
+ loop4:
+ do {
+ int alt4=2;
+ int LA4_0 = input.LA(1);
+
+ if ( ((LA4_0>='0' && LA4_0<='1')) ) {
+ alt4=1;
+ }
+
+
+ switch (alt4) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2730:88: '0' .. '1'
+ {
+ matchRange('0','1');
+
+ }
+ break;
+
+ default :
+ if ( cnt4 >= 1 ) break loop4;
+ EarlyExitException eee =
+ new EarlyExitException(4, input);
+ throw eee;
+ }
+ cnt4++;
+ } while (true);
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "RULE_INTEGERLITERAL"
+
+ // $ANTLR start "RULE_REALLITERAL"
+ public final void mRULE_REALLITERAL() throws RecognitionException {
+ try {
+ int _type = RULE_REALLITERAL;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2732:18: ( ( '+' | '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+ ( 'E' ( '+' | '-' )? ( '0' .. '9' )+ )? )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2732:20: ( '+' | '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+ ( 'E' ( '+' | '-' )? ( '0' .. '9' )+ )?
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2732:20: ( '+' | '-' )?
+ int alt6=2;
+ int LA6_0 = input.LA(1);
+
+ if ( (LA6_0=='+'||LA6_0=='-') ) {
+ alt6=1;
+ }
+ switch (alt6) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:
+ {
+ if ( input.LA(1)=='+'||input.LA(1)=='-' ) {
+ input.consume();
+
+ }
+ else {
+ MismatchedSetException mse = new MismatchedSetException(null,input);
+ recover(mse);
+ throw mse;}
+
+
+ }
+ break;
+
+ }
+
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2732:31: ( '0' .. '9' )+
+ int cnt7=0;
+ loop7:
+ do {
+ int alt7=2;
+ int LA7_0 = input.LA(1);
+
+ if ( ((LA7_0>='0' && LA7_0<='9')) ) {
+ alt7=1;
+ }
+
+
+ switch (alt7) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2732:32: '0' .. '9'
+ {
+ matchRange('0','9');
+
+ }
+ break;
+
+ default :
+ if ( cnt7 >= 1 ) break loop7;
+ EarlyExitException eee =
+ new EarlyExitException(7, input);
+ throw eee;
+ }
+ cnt7++;
+ } while (true);
+
+ match('.');
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2732:47: ( '0' .. '9' )+
+ int cnt8=0;
+ loop8:
+ do {
+ int alt8=2;
+ int LA8_0 = input.LA(1);
+
+ if ( ((LA8_0>='0' && LA8_0<='9')) ) {
+ alt8=1;
+ }
+
+
+ switch (alt8) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2732:48: '0' .. '9'
+ {
+ matchRange('0','9');
+
+ }
+ break;
+
+ default :
+ if ( cnt8 >= 1 ) break loop8;
+ EarlyExitException eee =
+ new EarlyExitException(8, input);
+ throw eee;
+ }
+ cnt8++;
+ } while (true);
+
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2732:59: ( 'E' ( '+' | '-' )? ( '0' .. '9' )+ )?
+ int alt11=2;
+ int LA11_0 = input.LA(1);
+
+ if ( (LA11_0=='E') ) {
+ alt11=1;
+ }
+ switch (alt11) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2732:60: 'E' ( '+' | '-' )? ( '0' .. '9' )+
+ {
+ match('E');
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2732:64: ( '+' | '-' )?
+ int alt9=2;
+ int LA9_0 = input.LA(1);
+
+ if ( (LA9_0=='+'||LA9_0=='-') ) {
+ alt9=1;
+ }
+ switch (alt9) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:
+ {
+ if ( input.LA(1)=='+'||input.LA(1)=='-' ) {
+ input.consume();
+
+ }
+ else {
+ MismatchedSetException mse = new MismatchedSetException(null,input);
+ recover(mse);
+ throw mse;}
+
+
+ }
+ break;
+
+ }
+
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2732:75: ( '0' .. '9' )+
+ int cnt10=0;
+ loop10:
+ do {
+ int alt10=2;
+ int LA10_0 = input.LA(1);
+
+ if ( ((LA10_0>='0' && LA10_0<='9')) ) {
+ alt10=1;
+ }
+
+
+ switch (alt10) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2732:76: '0' .. '9'
+ {
+ matchRange('0','9');
+
+ }
+ break;
+
+ default :
+ if ( cnt10 >= 1 ) break loop10;
+ EarlyExitException eee =
+ new EarlyExitException(10, input);
+ throw eee;
+ }
+ cnt10++;
+ } while (true);
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "RULE_REALLITERAL"
+
+ // $ANTLR start "RULE_DATETIMELITERAL"
+ public final void mRULE_DATETIMELITERAL() throws RecognitionException {
+ try {
+ int _type = RULE_DATETIMELITERAL;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2734:22: ( ( ( '0' .. '1' '0' .. '9' | '2' '0' .. '3' ) ':' '0' .. '5' '0' .. '9' ( ':' '0' .. '5' '0' .. '9' ( ':' '0' .. '9' '0' .. '9' )? )? ( ' ' '0' .. '9' '0' .. '9' '0' .. '9' '0' .. '9' '/' ( '0' '0' .. '9' | '1' '0' .. '2' ) '/' ( '0' .. '2' '0' .. '9' | '3' ( '0' | '1' ) ) )? ( ' ' ( 'Mon' | 'Tue' | 'Wed' | 'Thr' | 'Fri' | 'Sat' | 'Sun' ) )? | '0' .. '9' '0' .. '9' '0' .. '9' '0' .. '9' '/' ( '0' '0' .. '9' | '1' '0' .. '2' ) '/' ( '0' .. '2' '0' .. '9' | '3' ( '0' | '1' ) ) ( ' ' ( 'Mon' | 'Tue' | 'Wed' | 'Thr' | 'Fri' | 'Sat' | 'Sun' ) )? | ( 'Mon' | 'Tue' | 'Wed' | 'Thr' | 'Fri' | 'Sat' | 'Sun' ) ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2734:24: ( ( '0' .. '1' '0' .. '9' | '2' '0' .. '3' ) ':' '0' .. '5' '0' .. '9' ( ':' '0' .. '5' '0' .. '9' ( ':' '0' .. '9' '0' .. '9' )? )? ( ' ' '0' .. '9' '0' .. '9' '0' .. '9' '0' .. '9' '/' ( '0' '0' .. '9' | '1' '0' .. '2' ) '/' ( '0' .. '2' '0' .. '9' | '3' ( '0' | '1' ) ) )? ( ' ' ( 'Mon' | 'Tue' | 'Wed' | 'Thr' | 'Fri' | 'Sat' | 'Sun' ) )? | '0' .. '9' '0' .. '9' '0' .. '9' '0' .. '9' '/' ( '0' '0' .. '9' | '1' '0' .. '2' ) '/' ( '0' .. '2' '0' .. '9' | '3' ( '0' | '1' ) ) ( ' ' ( 'Mon' | 'Tue' | 'Wed' | 'Thr' | 'Fri' | 'Sat' | 'Sun' ) )? | ( 'Mon' | 'Tue' | 'Wed' | 'Thr' | 'Fri' | 'Sat' | 'Sun' ) )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2734:24: ( ( '0' .. '1' '0' .. '9' | '2' '0' .. '3' ) ':' '0' .. '5' '0' .. '9' ( ':' '0' .. '5' '0' .. '9' ( ':' '0' .. '9' '0' .. '9' )? )? ( ' ' '0' .. '9' '0' .. '9' '0' .. '9' '0' .. '9' '/' ( '0' '0' .. '9' | '1' '0' .. '2' ) '/' ( '0' .. '2' '0' .. '9' | '3' ( '0' | '1' ) ) )? ( ' ' ( 'Mon' | 'Tue' | 'Wed' | 'Thr' | 'Fri' | 'Sat' | 'Sun' ) )? | '0' .. '9' '0' .. '9' '0' .. '9' '0' .. '9' '/' ( '0' '0' .. '9' | '1' '0' .. '2' ) '/' ( '0' .. '2' '0' .. '9' | '3' ( '0' | '1' ) ) ( ' ' ( 'Mon' | 'Tue' | 'Wed' | 'Thr' | 'Fri' | 'Sat' | 'Sun' ) )? | ( 'Mon' | 'Tue' | 'Wed' | 'Thr' | 'Fri' | 'Sat' | 'Sun' ) )
+ int alt25=3;
+ switch ( input.LA(1) ) {
+ case '0':
+ case '1':
+ {
+ int LA25_1 = input.LA(2);
+
+ if ( ((LA25_1>='0' && LA25_1<='9')) ) {
+ int LA25_5 = input.LA(3);
+
+ if ( ((LA25_5>='0' && LA25_5<='9')) ) {
+ alt25=2;
+ }
+ else if ( (LA25_5==':') ) {
+ alt25=1;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("", 25, 5, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("", 25, 1, input);
+
+ throw nvae;
+ }
+ }
+ break;
+ case '2':
+ {
+ int LA25_2 = input.LA(2);
+
+ if ( ((LA25_2>='0' && LA25_2<='3')) ) {
+ int LA25_6 = input.LA(3);
+
+ if ( ((LA25_6>='0' && LA25_6<='9')) ) {
+ alt25=2;
+ }
+ else if ( (LA25_6==':') ) {
+ alt25=1;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("", 25, 6, input);
+
+ throw nvae;
+ }
+ }
+ else if ( ((LA25_2>='4' && LA25_2<='9')) ) {
+ alt25=2;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("", 25, 2, input);
+
+ throw nvae;
+ }
+ }
+ break;
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ {
+ alt25=2;
+ }
+ break;
+ case 'F':
+ case 'M':
+ case 'S':
+ case 'T':
+ case 'W':
+ {
+ alt25=3;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("", 25, 0, input);
+
+ throw nvae;
+ }
+
+ switch (alt25) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2734:25: ( '0' .. '1' '0' .. '9' | '2' '0' .. '3' ) ':' '0' .. '5' '0' .. '9' ( ':' '0' .. '5' '0' .. '9' ( ':' '0' .. '9' '0' .. '9' )? )? ( ' ' '0' .. '9' '0' .. '9' '0' .. '9' '0' .. '9' '/' ( '0' '0' .. '9' | '1' '0' .. '2' ) '/' ( '0' .. '2' '0' .. '9' | '3' ( '0' | '1' ) ) )? ( ' ' ( 'Mon' | 'Tue' | 'Wed' | 'Thr' | 'Fri' | 'Sat' | 'Sun' ) )?
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2734:25: ( '0' .. '1' '0' .. '9' | '2' '0' .. '3' )
+ int alt12=2;
+ int LA12_0 = input.LA(1);
+
+ if ( ((LA12_0>='0' && LA12_0<='1')) ) {
+ alt12=1;
+ }
+ else if ( (LA12_0=='2') ) {
+ alt12=2;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("", 12, 0, input);
+
+ throw nvae;
+ }
+ switch (alt12) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2734:26: '0' .. '1' '0' .. '9'
+ {
+ matchRange('0','1');
+ matchRange('0','9');
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2734:44: '2' '0' .. '3'
+ {
+ match('2');
+ matchRange('0','3');
+
+ }
+ break;
+
+ }
+
+ match(':');
+ matchRange('0','5');
+ matchRange('0','9');
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2734:80: ( ':' '0' .. '5' '0' .. '9' ( ':' '0' .. '9' '0' .. '9' )? )?
+ int alt14=2;
+ int LA14_0 = input.LA(1);
+
+ if ( (LA14_0==':') ) {
+ alt14=1;
+ }
+ switch (alt14) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2734:81: ':' '0' .. '5' '0' .. '9' ( ':' '0' .. '9' '0' .. '9' )?
+ {
+ match(':');
+ matchRange('0','5');
+ matchRange('0','9');
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2734:103: ( ':' '0' .. '9' '0' .. '9' )?
+ int alt13=2;
+ int LA13_0 = input.LA(1);
+
+ if ( (LA13_0==':') ) {
+ alt13=1;
+ }
+ switch (alt13) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2734:104: ':' '0' .. '9' '0' .. '9'
+ {
+ match(':');
+ matchRange('0','9');
+ matchRange('0','9');
+
+ }
+ break;
+
+ }
+
+
+ }
+ break;
+
+ }
+
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2734:130: ( ' ' '0' .. '9' '0' .. '9' '0' .. '9' '0' .. '9' '/' ( '0' '0' .. '9' | '1' '0' .. '2' ) '/' ( '0' .. '2' '0' .. '9' | '3' ( '0' | '1' ) ) )?
+ int alt17=2;
+ int LA17_0 = input.LA(1);
+
+ if ( (LA17_0==' ') ) {
+ int LA17_1 = input.LA(2);
+
+ if ( ((LA17_1>='0' && LA17_1<='9')) ) {
+ alt17=1;
+ }
+ }
+ switch (alt17) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2734:131: ' ' '0' .. '9' '0' .. '9' '0' .. '9' '0' .. '9' '/' ( '0' '0' .. '9' | '1' '0' .. '2' ) '/' ( '0' .. '2' '0' .. '9' | '3' ( '0' | '1' ) )
+ {
+ match(' ');
+ matchRange('0','9');
+ matchRange('0','9');
+ matchRange('0','9');
+ matchRange('0','9');
+ match('/');
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2734:175: ( '0' '0' .. '9' | '1' '0' .. '2' )
+ int alt15=2;
+ int LA15_0 = input.LA(1);
+
+ if ( (LA15_0=='0') ) {
+ alt15=1;
+ }
+ else if ( (LA15_0=='1') ) {
+ alt15=2;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("", 15, 0, input);
+
+ throw nvae;
+ }
+ switch (alt15) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2734:176: '0' '0' .. '9'
+ {
+ match('0');
+ matchRange('0','9');
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2734:189: '1' '0' .. '2'
+ {
+ match('1');
+ matchRange('0','2');
+
+ }
+ break;
+
+ }
+
+ match('/');
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2734:207: ( '0' .. '2' '0' .. '9' | '3' ( '0' | '1' ) )
+ int alt16=2;
+ int LA16_0 = input.LA(1);
+
+ if ( ((LA16_0>='0' && LA16_0<='2')) ) {
+ alt16=1;
+ }
+ else if ( (LA16_0=='3') ) {
+ alt16=2;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("", 16, 0, input);
+
+ throw nvae;
+ }
+ switch (alt16) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2734:208: '0' .. '2' '0' .. '9'
+ {
+ matchRange('0','2');
+ matchRange('0','9');
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2734:226: '3' ( '0' | '1' )
+ {
+ match('3');
+ if ( (input.LA(1)>='0' && input.LA(1)<='1') ) {
+ input.consume();
+
+ }
+ else {
+ MismatchedSetException mse = new MismatchedSetException(null,input);
+ recover(mse);
+ throw mse;}
+
+
+ }
+ break;
+
+ }
+
+
+ }
+ break;
+
+ }
+
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2734:243: ( ' ' ( 'Mon' | 'Tue' | 'Wed' | 'Thr' | 'Fri' | 'Sat' | 'Sun' ) )?
+ int alt19=2;
+ int LA19_0 = input.LA(1);
+
+ if ( (LA19_0==' ') ) {
+ alt19=1;
+ }
+ switch (alt19) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2734:244: ' ' ( 'Mon' | 'Tue' | 'Wed' | 'Thr' | 'Fri' | 'Sat' | 'Sun' )
+ {
+ match(' ');
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2734:248: ( 'Mon' | 'Tue' | 'Wed' | 'Thr' | 'Fri' | 'Sat' | 'Sun' )
+ int alt18=7;
+ alt18 = dfa18.predict(input);
+ switch (alt18) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2734:249: 'Mon'
+ {
+ match("Mon");
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2734:255: 'Tue'
+ {
+ match("Tue");
+
+
+ }
+ break;
+ case 3 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2734:261: 'Wed'
+ {
+ match("Wed");
+
+
+ }
+ break;
+ case 4 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2734:267: 'Thr'
+ {
+ match("Thr");
+
+
+ }
+ break;
+ case 5 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2734:273: 'Fri'
+ {
+ match("Fri");
+
+
+ }
+ break;
+ case 6 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2734:279: 'Sat'
+ {
+ match("Sat");
+
+
+ }
+ break;
+ case 7 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2734:285: 'Sun'
+ {
+ match("Sun");
+
+
+ }
+ break;
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2734:294: '0' .. '9' '0' .. '9' '0' .. '9' '0' .. '9' '/' ( '0' '0' .. '9' | '1' '0' .. '2' ) '/' ( '0' .. '2' '0' .. '9' | '3' ( '0' | '1' ) ) ( ' ' ( 'Mon' | 'Tue' | 'Wed' | 'Thr' | 'Fri' | 'Sat' | 'Sun' ) )?
+ {
+ matchRange('0','9');
+ matchRange('0','9');
+ matchRange('0','9');
+ matchRange('0','9');
+ match('/');
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2734:334: ( '0' '0' .. '9' | '1' '0' .. '2' )
+ int alt20=2;
+ int LA20_0 = input.LA(1);
+
+ if ( (LA20_0=='0') ) {
+ alt20=1;
+ }
+ else if ( (LA20_0=='1') ) {
+ alt20=2;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("", 20, 0, input);
+
+ throw nvae;
+ }
+ switch (alt20) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2734:335: '0' '0' .. '9'
+ {
+ match('0');
+ matchRange('0','9');
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2734:348: '1' '0' .. '2'
+ {
+ match('1');
+ matchRange('0','2');
+
+ }
+ break;
+
+ }
+
+ match('/');
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2734:366: ( '0' .. '2' '0' .. '9' | '3' ( '0' | '1' ) )
+ int alt21=2;
+ int LA21_0 = input.LA(1);
+
+ if ( ((LA21_0>='0' && LA21_0<='2')) ) {
+ alt21=1;
+ }
+ else if ( (LA21_0=='3') ) {
+ alt21=2;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("", 21, 0, input);
+
+ throw nvae;
+ }
+ switch (alt21) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2734:367: '0' .. '2' '0' .. '9'
+ {
+ matchRange('0','2');
+ matchRange('0','9');
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2734:385: '3' ( '0' | '1' )
+ {
+ match('3');
+ if ( (input.LA(1)>='0' && input.LA(1)<='1') ) {
+ input.consume();
+
+ }
+ else {
+ MismatchedSetException mse = new MismatchedSetException(null,input);
+ recover(mse);
+ throw mse;}
+
+
+ }
+ break;
+
+ }
+
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2734:400: ( ' ' ( 'Mon' | 'Tue' | 'Wed' | 'Thr' | 'Fri' | 'Sat' | 'Sun' ) )?
+ int alt23=2;
+ int LA23_0 = input.LA(1);
+
+ if ( (LA23_0==' ') ) {
+ alt23=1;
+ }
+ switch (alt23) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2734:401: ' ' ( 'Mon' | 'Tue' | 'Wed' | 'Thr' | 'Fri' | 'Sat' | 'Sun' )
+ {
+ match(' ');
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2734:405: ( 'Mon' | 'Tue' | 'Wed' | 'Thr' | 'Fri' | 'Sat' | 'Sun' )
+ int alt22=7;
+ alt22 = dfa22.predict(input);
+ switch (alt22) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2734:406: 'Mon'
+ {
+ match("Mon");
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2734:412: 'Tue'
+ {
+ match("Tue");
+
+
+ }
+ break;
+ case 3 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2734:418: 'Wed'
+ {
+ match("Wed");
+
+
+ }
+ break;
+ case 4 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2734:424: 'Thr'
+ {
+ match("Thr");
+
+
+ }
+ break;
+ case 5 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2734:430: 'Fri'
+ {
+ match("Fri");
+
+
+ }
+ break;
+ case 6 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2734:436: 'Sat'
+ {
+ match("Sat");
+
+
+ }
+ break;
+ case 7 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2734:442: 'Sun'
+ {
+ match("Sun");
+
+
+ }
+ break;
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ }
+ break;
+ case 3 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2734:451: ( 'Mon' | 'Tue' | 'Wed' | 'Thr' | 'Fri' | 'Sat' | 'Sun' )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2734:451: ( 'Mon' | 'Tue' | 'Wed' | 'Thr' | 'Fri' | 'Sat' | 'Sun' )
+ int alt24=7;
+ alt24 = dfa24.predict(input);
+ switch (alt24) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2734:452: 'Mon'
+ {
+ match("Mon");
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2734:458: 'Tue'
+ {
+ match("Tue");
+
+
+ }
+ break;
+ case 3 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2734:464: 'Wed'
+ {
+ match("Wed");
+
+
+ }
+ break;
+ case 4 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2734:470: 'Thr'
+ {
+ match("Thr");
+
+
+ }
+ break;
+ case 5 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2734:476: 'Fri'
+ {
+ match("Fri");
+
+
+ }
+ break;
+ case 6 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2734:482: 'Sat'
+ {
+ match("Sat");
+
+
+ }
+ break;
+ case 7 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2734:488: 'Sun'
+ {
+ match("Sun");
+
+
+ }
+ break;
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "RULE_DATETIMELITERAL"
+
+ // $ANTLR start "RULE_BOOLEANLITERAL"
+ public final void mRULE_BOOLEANLITERAL() throws RecognitionException {
+ try {
+ int _type = RULE_BOOLEANLITERAL;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2736:21: ( ( 'true' | 'false' ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2736:23: ( 'true' | 'false' )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2736:23: ( 'true' | 'false' )
+ int alt26=2;
+ int LA26_0 = input.LA(1);
+
+ if ( (LA26_0=='t') ) {
+ alt26=1;
+ }
+ else if ( (LA26_0=='f') ) {
+ alt26=2;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("", 26, 0, input);
+
+ throw nvae;
+ }
+ switch (alt26) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2736:24: 'true'
+ {
+ match("true");
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2736:31: 'false'
+ {
+ match("false");
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "RULE_BOOLEANLITERAL"
+
+ // $ANTLR start "RULE_NULLLITERAL"
+ public final void mRULE_NULLLITERAL() throws RecognitionException {
+ try {
+ int _type = RULE_NULLLITERAL;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2738:18: ( 'null' )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2738:20: 'null'
+ {
+ match("null");
+
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "RULE_NULLLITERAL"
+
+ // $ANTLR start "RULE_ID"
+ public final void mRULE_ID() throws RecognitionException {
+ try {
+ int _type = RULE_ID;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2740:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2740:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )*
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2740:11: ( '^' )?
+ int alt27=2;
+ int LA27_0 = input.LA(1);
+
+ if ( (LA27_0=='^') ) {
+ alt27=1;
+ }
+ switch (alt27) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2740:11: '^'
+ {
+ match('^');
+
+ }
+ break;
+
+ }
+
+ if ( (input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) {
+ input.consume();
+
+ }
+ else {
+ MismatchedSetException mse = new MismatchedSetException(null,input);
+ recover(mse);
+ throw mse;}
+
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2740:40: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )*
+ loop28:
+ do {
+ int alt28=2;
+ int LA28_0 = input.LA(1);
+
+ if ( ((LA28_0>='0' && LA28_0<='9')||(LA28_0>='A' && LA28_0<='Z')||LA28_0=='_'||(LA28_0>='a' && LA28_0<='z')) ) {
+ alt28=1;
+ }
+
+
+ switch (alt28) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:
+ {
+ if ( (input.LA(1)>='0' && input.LA(1)<='9')||(input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) {
+ input.consume();
+
+ }
+ else {
+ MismatchedSetException mse = new MismatchedSetException(null,input);
+ recover(mse);
+ throw mse;}
+
+
+ }
+ break;
+
+ default :
+ break loop28;
+ }
+ } while (true);
+
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "RULE_ID"
+
+ // $ANTLR start "RULE_INT"
+ public final void mRULE_INT() throws RecognitionException {
+ try {
+ int _type = RULE_INT;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2742:10: ( ( '0' .. '9' )+ )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2742:12: ( '0' .. '9' )+
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2742:12: ( '0' .. '9' )+
+ int cnt29=0;
+ loop29:
+ do {
+ int alt29=2;
+ int LA29_0 = input.LA(1);
+
+ if ( ((LA29_0>='0' && LA29_0<='9')) ) {
+ alt29=1;
+ }
+
+
+ switch (alt29) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2742:13: '0' .. '9'
+ {
+ matchRange('0','9');
+
+ }
+ break;
+
+ default :
+ if ( cnt29 >= 1 ) break loop29;
+ EarlyExitException eee =
+ new EarlyExitException(29, input);
+ throw eee;
+ }
+ cnt29++;
+ } while (true);
+
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "RULE_INT"
+
+ // $ANTLR start "RULE_STRING"
+ public final void mRULE_STRING() throws RecognitionException {
+ try {
+ int _type = RULE_STRING;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2744:13: ( ( '\"' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2744:15: ( '\"' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2744:15: ( '\"' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' )
+ int alt32=2;
+ int LA32_0 = input.LA(1);
+
+ if ( (LA32_0=='\"') ) {
+ alt32=1;
+ }
+ else if ( (LA32_0=='\'') ) {
+ alt32=2;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("", 32, 0, input);
+
+ throw nvae;
+ }
+ switch (alt32) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2744:16: '\"' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\"' ) ) )* '\"'
+ {
+ match('\"');
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2744:20: ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\"' ) ) )*
+ loop30:
+ do {
+ int alt30=3;
+ int LA30_0 = input.LA(1);
+
+ if ( (LA30_0=='\\') ) {
+ alt30=1;
+ }
+ else if ( ((LA30_0>='\u0000' && LA30_0<='!')||(LA30_0>='#' && LA30_0<='[')||(LA30_0>=']' && LA30_0<='\uFFFF')) ) {
+ alt30=2;
+ }
+
+
+ switch (alt30) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2744:21: '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' )
+ {
+ match('\\');
+ if ( input.LA(1)=='\"'||input.LA(1)=='\''||input.LA(1)=='\\'||input.LA(1)=='b'||input.LA(1)=='f'||input.LA(1)=='n'||input.LA(1)=='r'||(input.LA(1)>='t' && input.LA(1)<='u') ) {
+ input.consume();
+
+ }
+ else {
+ MismatchedSetException mse = new MismatchedSetException(null,input);
+ recover(mse);
+ throw mse;}
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2744:66: ~ ( ( '\\\\' | '\"' ) )
+ {
+ if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
+ input.consume();
+
+ }
+ else {
+ MismatchedSetException mse = new MismatchedSetException(null,input);
+ recover(mse);
+ throw mse;}
+
+
+ }
+ break;
+
+ default :
+ break loop30;
+ }
+ } while (true);
+
+ match('\"');
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2744:86: '\\'' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\\'' ) ) )* '\\''
+ {
+ match('\'');
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2744:91: ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\\'' ) ) )*
+ loop31:
+ do {
+ int alt31=3;
+ int LA31_0 = input.LA(1);
+
+ if ( (LA31_0=='\\') ) {
+ alt31=1;
+ }
+ else if ( ((LA31_0>='\u0000' && LA31_0<='&')||(LA31_0>='(' && LA31_0<='[')||(LA31_0>=']' && LA31_0<='\uFFFF')) ) {
+ alt31=2;
+ }
+
+
+ switch (alt31) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2744:92: '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' )
+ {
+ match('\\');
+ if ( input.LA(1)=='\"'||input.LA(1)=='\''||input.LA(1)=='\\'||input.LA(1)=='b'||input.LA(1)=='f'||input.LA(1)=='n'||input.LA(1)=='r'||(input.LA(1)>='t' && input.LA(1)<='u') ) {
+ input.consume();
+
+ }
+ else {
+ MismatchedSetException mse = new MismatchedSetException(null,input);
+ recover(mse);
+ throw mse;}
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2744:137: ~ ( ( '\\\\' | '\\'' ) )
+ {
+ if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
+ input.consume();
+
+ }
+ else {
+ MismatchedSetException mse = new MismatchedSetException(null,input);
+ recover(mse);
+ throw mse;}
+
+
+ }
+ break;
+
+ default :
+ break loop31;
+ }
+ } while (true);
+
+ match('\'');
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "RULE_STRING"
+
+ // $ANTLR start "RULE_ML_COMMENT"
+ public final void mRULE_ML_COMMENT() throws RecognitionException {
+ try {
+ int _type = RULE_ML_COMMENT;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2746:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2746:19: '/*' ( options {greedy=false; } : . )* '*/'
+ {
+ match("/*");
+
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2746:24: ( options {greedy=false; } : . )*
+ loop33:
+ do {
+ int alt33=2;
+ int LA33_0 = input.LA(1);
+
+ if ( (LA33_0=='*') ) {
+ int LA33_1 = input.LA(2);
+
+ if ( (LA33_1=='/') ) {
+ alt33=2;
+ }
+ else if ( ((LA33_1>='\u0000' && LA33_1<='.')||(LA33_1>='0' && LA33_1<='\uFFFF')) ) {
+ alt33=1;
+ }
+
+
+ }
+ else if ( ((LA33_0>='\u0000' && LA33_0<=')')||(LA33_0>='+' && LA33_0<='\uFFFF')) ) {
+ alt33=1;
+ }
+
+
+ switch (alt33) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2746:52: .
+ {
+ matchAny();
+
+ }
+ break;
+
+ default :
+ break loop33;
+ }
+ } while (true);
+
+ match("*/");
+
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "RULE_ML_COMMENT"
+
+ // $ANTLR start "RULE_SL_COMMENT"
+ public final void mRULE_SL_COMMENT() throws RecognitionException {
+ try {
+ int _type = RULE_SL_COMMENT;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2748:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2748:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
+ {
+ match("//");
+
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2748:24: (~ ( ( '\\n' | '\\r' ) ) )*
+ loop34:
+ do {
+ int alt34=2;
+ int LA34_0 = input.LA(1);
+
+ if ( ((LA34_0>='\u0000' && LA34_0<='\t')||(LA34_0>='\u000B' && LA34_0<='\f')||(LA34_0>='\u000E' && LA34_0<='\uFFFF')) ) {
+ alt34=1;
+ }
+
+
+ switch (alt34) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2748:24: ~ ( ( '\\n' | '\\r' ) )
+ {
+ if ( (input.LA(1)>='\u0000' && input.LA(1)<='\t')||(input.LA(1)>='\u000B' && input.LA(1)<='\f')||(input.LA(1)>='\u000E' && input.LA(1)<='\uFFFF') ) {
+ input.consume();
+
+ }
+ else {
+ MismatchedSetException mse = new MismatchedSetException(null,input);
+ recover(mse);
+ throw mse;}
+
+
+ }
+ break;
+
+ default :
+ break loop34;
+ }
+ } while (true);
+
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2748:40: ( ( '\\r' )? '\\n' )?
+ int alt36=2;
+ int LA36_0 = input.LA(1);
+
+ if ( (LA36_0=='\n'||LA36_0=='\r') ) {
+ alt36=1;
+ }
+ switch (alt36) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2748:41: ( '\\r' )? '\\n'
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2748:41: ( '\\r' )?
+ int alt35=2;
+ int LA35_0 = input.LA(1);
+
+ if ( (LA35_0=='\r') ) {
+ alt35=1;
+ }
+ switch (alt35) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2748:41: '\\r'
+ {
+ match('\r');
+
+ }
+ break;
+
+ }
+
+ match('\n');
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "RULE_SL_COMMENT"
+
+ // $ANTLR start "RULE_WS"
+ public final void mRULE_WS() throws RecognitionException {
+ try {
+ int _type = RULE_WS;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2750:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2750:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2750:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+ int cnt37=0;
+ loop37:
+ do {
+ int alt37=2;
+ int LA37_0 = input.LA(1);
+
+ if ( ((LA37_0>='\t' && LA37_0<='\n')||LA37_0=='\r'||LA37_0==' ') ) {
+ alt37=1;
+ }
+
+
+ switch (alt37) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:
+ {
+ if ( (input.LA(1)>='\t' && input.LA(1)<='\n')||input.LA(1)=='\r'||input.LA(1)==' ' ) {
+ input.consume();
+
+ }
+ else {
+ MismatchedSetException mse = new MismatchedSetException(null,input);
+ recover(mse);
+ throw mse;}
+
+
+ }
+ break;
+
+ default :
+ if ( cnt37 >= 1 ) break loop37;
+ EarlyExitException eee =
+ new EarlyExitException(37, input);
+ throw eee;
+ }
+ cnt37++;
+ } while (true);
+
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "RULE_WS"
+
+ // $ANTLR start "RULE_ANY_OTHER"
+ public final void mRULE_ANY_OTHER() throws RecognitionException {
+ try {
+ int _type = RULE_ANY_OTHER;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2752:16: ( . )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2752:18: .
+ {
+ matchAny();
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "RULE_ANY_OTHER"
+
+ public void mTokens() throws RecognitionException {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1:8: ( T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | RULE_INTEGERLITERAL | RULE_REALLITERAL | RULE_DATETIMELITERAL | RULE_BOOLEANLITERAL | RULE_NULLLITERAL | RULE_ID | RULE_INT | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
+ int alt38=48;
+ alt38 = dfa38.predict(input);
+ switch (alt38) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1:10: T__16
+ {
+ mT__16();
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1:16: T__17
+ {
+ mT__17();
+
+ }
+ break;
+ case 3 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1:22: T__18
+ {
+ mT__18();
+
+ }
+ break;
+ case 4 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1:28: T__19
+ {
+ mT__19();
+
+ }
+ break;
+ case 5 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1:34: T__20
+ {
+ mT__20();
+
+ }
+ break;
+ case 6 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1:40: T__21
+ {
+ mT__21();
+
+ }
+ break;
+ case 7 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1:46: T__22
+ {
+ mT__22();
+
+ }
+ break;
+ case 8 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1:52: T__23
+ {
+ mT__23();
+
+ }
+ break;
+ case 9 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1:58: T__24
+ {
+ mT__24();
+
+ }
+ break;
+ case 10 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1:64: T__25
+ {
+ mT__25();
+
+ }
+ break;
+ case 11 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1:70: T__26
+ {
+ mT__26();
+
+ }
+ break;
+ case 12 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1:76: T__27
+ {
+ mT__27();
+
+ }
+ break;
+ case 13 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1:82: T__28
+ {
+ mT__28();
+
+ }
+ break;
+ case 14 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1:88: T__29
+ {
+ mT__29();
+
+ }
+ break;
+ case 15 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1:94: T__30
+ {
+ mT__30();
+
+ }
+ break;
+ case 16 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1:100: T__31
+ {
+ mT__31();
+
+ }
+ break;
+ case 17 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1:106: T__32
+ {
+ mT__32();
+
+ }
+ break;
+ case 18 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1:112: T__33
+ {
+ mT__33();
+
+ }
+ break;
+ case 19 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1:118: T__34
+ {
+ mT__34();
+
+ }
+ break;
+ case 20 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1:124: T__35
+ {
+ mT__35();
+
+ }
+ break;
+ case 21 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1:130: T__36
+ {
+ mT__36();
+
+ }
+ break;
+ case 22 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1:136: T__37
+ {
+ mT__37();
+
+ }
+ break;
+ case 23 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1:142: T__38
+ {
+ mT__38();
+
+ }
+ break;
+ case 24 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1:148: T__39
+ {
+ mT__39();
+
+ }
+ break;
+ case 25 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1:154: T__40
+ {
+ mT__40();
+
+ }
+ break;
+ case 26 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1:160: T__41
+ {
+ mT__41();
+
+ }
+ break;
+ case 27 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1:166: T__42
+ {
+ mT__42();
+
+ }
+ break;
+ case 28 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1:172: T__43
+ {
+ mT__43();
+
+ }
+ break;
+ case 29 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1:178: T__44
+ {
+ mT__44();
+
+ }
+ break;
+ case 30 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1:184: T__45
+ {
+ mT__45();
+
+ }
+ break;
+ case 31 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1:190: T__46
+ {
+ mT__46();
+
+ }
+ break;
+ case 32 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1:196: T__47
+ {
+ mT__47();
+
+ }
+ break;
+ case 33 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1:202: T__48
+ {
+ mT__48();
+
+ }
+ break;
+ case 34 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1:208: T__49
+ {
+ mT__49();
+
+ }
+ break;
+ case 35 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1:214: T__50
+ {
+ mT__50();
+
+ }
+ break;
+ case 36 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1:220: T__51
+ {
+ mT__51();
+
+ }
+ break;
+ case 37 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1:226: RULE_INTEGERLITERAL
+ {
+ mRULE_INTEGERLITERAL();
+
+ }
+ break;
+ case 38 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1:246: RULE_REALLITERAL
+ {
+ mRULE_REALLITERAL();
+
+ }
+ break;
+ case 39 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1:263: RULE_DATETIMELITERAL
+ {
+ mRULE_DATETIMELITERAL();
+
+ }
+ break;
+ case 40 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1:284: RULE_BOOLEANLITERAL
+ {
+ mRULE_BOOLEANLITERAL();
+
+ }
+ break;
+ case 41 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1:304: RULE_NULLLITERAL
+ {
+ mRULE_NULLLITERAL();
+
+ }
+ break;
+ case 42 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1:321: RULE_ID
+ {
+ mRULE_ID();
+
+ }
+ break;
+ case 43 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1:329: RULE_INT
+ {
+ mRULE_INT();
+
+ }
+ break;
+ case 44 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1:338: RULE_STRING
+ {
+ mRULE_STRING();
+
+ }
+ break;
+ case 45 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1:350: RULE_ML_COMMENT
+ {
+ mRULE_ML_COMMENT();
+
+ }
+ break;
+ case 46 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1:366: RULE_SL_COMMENT
+ {
+ mRULE_SL_COMMENT();
+
+ }
+ break;
+ case 47 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1:382: RULE_WS
+ {
+ mRULE_WS();
+
+ }
+ break;
+ case 48 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1:390: RULE_ANY_OTHER
+ {
+ mRULE_ANY_OTHER();
+
+ }
+ break;
+
+ }
+
+ }
+
+
+ protected DFA18 dfa18 = new DFA18(this);
+ protected DFA22 dfa22 = new DFA22(this);
+ protected DFA24 dfa24 = new DFA24(this);
+ protected DFA38 dfa38 = new DFA38(this);
+ static final String DFA18_eotS =
+ "\12\uffff";
+ static final String DFA18_eofS =
+ "\12\uffff";
+ static final String DFA18_minS =
+ "\1\106\1\uffff\1\150\2\uffff\1\141\4\uffff";
+ static final String DFA18_maxS =
+ "\1\127\1\uffff\1\165\2\uffff\1\165\4\uffff";
+ static final String DFA18_acceptS =
+ "\1\uffff\1\1\1\uffff\1\3\1\5\1\uffff\1\2\1\4\1\6\1\7";
+ static final String DFA18_specialS =
+ "\12\uffff}>";
+ static final String[] DFA18_transitionS = {
+ "\1\4\6\uffff\1\1\5\uffff\1\5\1\2\2\uffff\1\3",
+ "",
+ "\1\7\14\uffff\1\6",
+ "",
+ "",
+ "\1\10\23\uffff\1\11",
+ "",
+ "",
+ "",
+ ""
+ };
+
+ static final short[] DFA18_eot = DFA.unpackEncodedString(DFA18_eotS);
+ static final short[] DFA18_eof = DFA.unpackEncodedString(DFA18_eofS);
+ static final char[] DFA18_min = DFA.unpackEncodedStringToUnsignedChars(DFA18_minS);
+ static final char[] DFA18_max = DFA.unpackEncodedStringToUnsignedChars(DFA18_maxS);
+ static final short[] DFA18_accept = DFA.unpackEncodedString(DFA18_acceptS);
+ static final short[] DFA18_special = DFA.unpackEncodedString(DFA18_specialS);
+ static final short[][] DFA18_transition;
+
+ static {
+ int numStates = DFA18_transitionS.length;
+ DFA18_transition = new short[numStates][];
+ for (int i=0; i<numStates; i++) {
+ DFA18_transition[i] = DFA.unpackEncodedString(DFA18_transitionS[i]);
+ }
+ }
+
+ class DFA18 extends DFA {
+
+ public DFA18(BaseRecognizer recognizer) {
+ this.recognizer = recognizer;
+ this.decisionNumber = 18;
+ this.eot = DFA18_eot;
+ this.eof = DFA18_eof;
+ this.min = DFA18_min;
+ this.max = DFA18_max;
+ this.accept = DFA18_accept;
+ this.special = DFA18_special;
+ this.transition = DFA18_transition;
+ }
+ public String getDescription() {
+ return "2734:248: ( 'Mon' | 'Tue' | 'Wed' | 'Thr' | 'Fri' | 'Sat' | 'Sun' )";
+ }
+ }
+ static final String DFA22_eotS =
+ "\12\uffff";
+ static final String DFA22_eofS =
+ "\12\uffff";
+ static final String DFA22_minS =
+ "\1\106\1\uffff\1\150\2\uffff\1\141\4\uffff";
+ static final String DFA22_maxS =
+ "\1\127\1\uffff\1\165\2\uffff\1\165\4\uffff";
+ static final String DFA22_acceptS =
+ "\1\uffff\1\1\1\uffff\1\3\1\5\1\uffff\1\2\1\4\1\6\1\7";
+ static final String DFA22_specialS =
+ "\12\uffff}>";
+ static final String[] DFA22_transitionS = {
+ "\1\4\6\uffff\1\1\5\uffff\1\5\1\2\2\uffff\1\3",
+ "",
+ "\1\7\14\uffff\1\6",
+ "",
+ "",
+ "\1\10\23\uffff\1\11",
+ "",
+ "",
+ "",
+ ""
+ };
+
+ static final short[] DFA22_eot = DFA.unpackEncodedString(DFA22_eotS);
+ static final short[] DFA22_eof = DFA.unpackEncodedString(DFA22_eofS);
+ static final char[] DFA22_min = DFA.unpackEncodedStringToUnsignedChars(DFA22_minS);
+ static final char[] DFA22_max = DFA.unpackEncodedStringToUnsignedChars(DFA22_maxS);
+ static final short[] DFA22_accept = DFA.unpackEncodedString(DFA22_acceptS);
+ static final short[] DFA22_special = DFA.unpackEncodedString(DFA22_specialS);
+ static final short[][] DFA22_transition;
+
+ static {
+ int numStates = DFA22_transitionS.length;
+ DFA22_transition = new short[numStates][];
+ for (int i=0; i<numStates; i++) {
+ DFA22_transition[i] = DFA.unpackEncodedString(DFA22_transitionS[i]);
+ }
+ }
+
+ class DFA22 extends DFA {
+
+ public DFA22(BaseRecognizer recognizer) {
+ this.recognizer = recognizer;
+ this.decisionNumber = 22;
+ this.eot = DFA22_eot;
+ this.eof = DFA22_eof;
+ this.min = DFA22_min;
+ this.max = DFA22_max;
+ this.accept = DFA22_accept;
+ this.special = DFA22_special;
+ this.transition = DFA22_transition;
+ }
+ public String getDescription() {
+ return "2734:405: ( 'Mon' | 'Tue' | 'Wed' | 'Thr' | 'Fri' | 'Sat' | 'Sun' )";
+ }
+ }
+ static final String DFA24_eotS =
+ "\12\uffff";
+ static final String DFA24_eofS =
+ "\12\uffff";
+ static final String DFA24_minS =
+ "\1\106\1\uffff\1\150\2\uffff\1\141\4\uffff";
+ static final String DFA24_maxS =
+ "\1\127\1\uffff\1\165\2\uffff\1\165\4\uffff";
+ static final String DFA24_acceptS =
+ "\1\uffff\1\1\1\uffff\1\3\1\5\1\uffff\1\2\1\4\1\6\1\7";
+ static final String DFA24_specialS =
+ "\12\uffff}>";
+ static final String[] DFA24_transitionS = {
+ "\1\4\6\uffff\1\1\5\uffff\1\5\1\2\2\uffff\1\3",
+ "",
+ "\1\7\14\uffff\1\6",
+ "",
+ "",
+ "\1\10\23\uffff\1\11",
+ "",
+ "",
+ "",
+ ""
+ };
+
+ static final short[] DFA24_eot = DFA.unpackEncodedString(DFA24_eotS);
+ static final short[] DFA24_eof = DFA.unpackEncodedString(DFA24_eofS);
+ static final char[] DFA24_min = DFA.unpackEncodedStringToUnsignedChars(DFA24_minS);
+ static final char[] DFA24_max = DFA.unpackEncodedStringToUnsignedChars(DFA24_maxS);
+ static final short[] DFA24_accept = DFA.unpackEncodedString(DFA24_acceptS);
+ static final short[] DFA24_special = DFA.unpackEncodedString(DFA24_specialS);
+ static final short[][] DFA24_transition;
+
+ static {
+ int numStates = DFA24_transitionS.length;
+ DFA24_transition = new short[numStates][];
+ for (int i=0; i<numStates; i++) {
+ DFA24_transition[i] = DFA.unpackEncodedString(DFA24_transitionS[i]);
+ }
+ }
+
+ class DFA24 extends DFA {
+
+ public DFA24(BaseRecognizer recognizer) {
+ this.recognizer = recognizer;
+ this.decisionNumber = 24;
+ this.eot = DFA24_eot;
+ this.eof = DFA24_eof;
+ this.min = DFA24_min;
+ this.max = DFA24_max;
+ this.accept = DFA24_accept;
+ this.special = DFA24_special;
+ this.transition = DFA24_transition;
+ }
+ public String getDescription() {
+ return "2734:451: ( 'Mon' | 'Tue' | 'Wed' | 'Thr' | 'Fri' | 'Sat' | 'Sun' )";
+ }
+ }
+ static final String DFA38_eotS =
+ "\1\uffff\3\57\1\64\1\67\1\71\1\uffff\1\74\1\75\1\100\1\uffff\1"+
+ "\104\2\57\1\111\10\uffff\1\57\1\uffff\1\57\1\uffff\1\57\4\127\7"+
+ "\57\1\55\1\uffff\2\55\2\uffff\1\57\1\uffff\1\150\2\57\13\uffff\2"+
+ "\127\5\uffff\3\57\12\uffff\1\57\1\uffff\1\57\1\uffff\1\161\1\uffff"+
+ "\1\127\1\uffff\2\127\11\57\2\uffff\1\175\1\uffff\1\176\1\177\1\u0080"+
+ "\1\u0081\4\57\1\uffff\1\127\1\uffff\7\163\2\57\5\uffff\1\u0089\1"+
+ "\u008a\2\57\1\127\1\u008e\1\57\2\uffff\1\57\1\u0091\1\127\1\uffff"+
+ "\1\u008e\1\57\2\uffff";
+ static final String DFA38_eofS =
+ "\u0093\uffff";
+ static final String DFA38_minS =
+ "\1\0\1\156\1\162\1\157\3\75\1\uffff\1\72\2\60\1\uffff\1\52\2\157"+
+ "\1\56\10\uffff\1\150\1\uffff\1\151\1\uffff\1\156\4\56\1\157\1\150"+
+ "\1\145\1\162\1\141\1\162\1\141\1\101\1\uffff\2\0\2\uffff\1\144\1"+
+ "\uffff\1\60\1\164\1\162\13\uffff\2\56\5\uffff\1\144\1\164\1\154"+
+ "\12\uffff\1\145\1\uffff\1\164\1\uffff\1\60\1\uffff\1\56\1\uffff"+
+ "\2\56\1\156\1\145\1\162\1\144\1\151\1\164\1\156\1\165\1\154\2\uffff"+
+ "\1\60\1\uffff\4\60\1\154\1\156\1\164\1\165\1\uffff\1\56\1\uffff"+
+ "\7\60\1\145\1\163\5\uffff\2\60\1\145\1\164\1\56\1\60\1\145\2\uffff"+
+ "\1\162\1\60\1\56\1\uffff\1\60\1\50\2\uffff";
+ static final String DFA38_maxS =
+ "\1\uffff\1\156\1\165\1\157\1\75\1\76\1\75\1\uffff\1\72\2\71\1\uffff"+
+ "\1\57\1\157\1\165\1\56\10\uffff\1\150\1\uffff\1\151\1\uffff\1\156"+
+ "\4\71\1\157\1\165\1\145\1\162\1\165\1\162\1\141\1\172\1\uffff\2"+
+ "\uffff\2\uffff\1\144\1\uffff\1\172\1\164\1\162\13\uffff\2\71\5\uffff"+
+ "\1\144\1\164\1\154\12\uffff\1\145\1\uffff\1\164\1\uffff\1\172\1"+
+ "\uffff\1\72\1\uffff\1\72\1\71\1\156\1\145\1\162\1\144\1\151\1\164"+
+ "\1\156\1\165\1\154\2\uffff\1\172\1\uffff\4\172\1\154\1\156\1\164"+
+ "\1\165\1\uffff\1\71\1\uffff\7\172\1\145\1\163\5\uffff\2\172\1\145"+
+ "\1\164\1\71\1\172\1\145\2\uffff\1\162\1\172\1\71\1\uffff\1\172\1"+
+ "\50\2\uffff";
+ static final String DFA38_acceptS =
+ "\7\uffff\1\12\3\uffff\1\16\4\uffff\1\23\1\24\1\26\1\27\1\31\1\32"+
+ "\1\33\1\35\1\uffff\1\37\1\uffff\1\41\15\uffff\1\52\2\uffff\1\57"+
+ "\1\60\1\uffff\1\52\3\uffff\1\4\1\34\1\5\1\10\1\6\1\11\1\7\1\12\1"+
+ "\25\1\13\1\14\2\uffff\1\15\1\16\1\55\1\56\1\17\3\uffff\1\30\1\22"+
+ "\1\23\1\24\1\26\1\27\1\31\1\32\1\33\1\35\1\uffff\1\37\1\uffff\1"+
+ "\41\1\uffff\1\45\1\uffff\1\46\13\uffff\1\54\1\57\1\uffff\1\2\10"+
+ "\uffff\1\42\1\uffff\1\47\11\uffff\1\1\1\43\1\3\1\20\1\21\7\uffff"+
+ "\1\51\1\36\3\uffff\1\50\2\uffff\1\44\1\40";
+ static final String DFA38_specialS =
+ "\1\2\51\uffff\1\0\1\1\147\uffff}>";
+ static final String[] DFA38_transitionS = {
+ "\11\55\2\54\2\55\1\54\22\55\1\54\1\55\1\52\1\55\1\33\1\55\1"+
+ "\31\1\53\1\20\1\21\1\13\1\11\1\26\1\12\1\17\1\14\1\35\1\36\1"+
+ "\37\7\40\1\10\1\55\1\5\1\4\1\6\1\7\1\27\5\51\1\44\6\51\1\41"+
+ "\5\51\1\45\1\42\2\51\1\43\3\51\1\23\1\55\1\22\1\50\1\51\1\55"+
+ "\1\1\4\51\1\47\2\51\1\34\1\32\2\51\1\15\1\16\1\2\4\51\1\46\2"+
+ "\51\1\30\1\3\2\51\1\24\1\55\1\25\uff82\55",
+ "\1\56",
+ "\1\60\2\uffff\1\61",
+ "\1\62",
+ "\1\63",
+ "\1\66\1\65",
+ "\1\70",
+ "",
+ "\1\73",
+ "\1\76\11\77",
+ "\1\76\11\77",
+ "",
+ "\1\102\4\uffff\1\103",
+ "\1\105",
+ "\1\106\5\uffff\1\107",
+ "\1\110",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "\1\122",
+ "",
+ "\1\124",
+ "",
+ "\1\126",
+ "\1\131\1\uffff\12\130",
+ "\1\131\1\uffff\12\130",
+ "\1\131\1\uffff\4\132\6\133",
+ "\1\131\1\uffff\12\133",
+ "\1\134",
+ "\1\136\14\uffff\1\135",
+ "\1\137",
+ "\1\140",
+ "\1\141\23\uffff\1\142",
+ "\1\143",
+ "\1\144",
+ "\32\57\4\uffff\1\57\1\uffff\32\57",
+ "",
+ "\0\145",
+ "\0\145",
+ "",
+ "",
+ "\1\147",
+ "",
+ "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
+ "\1\151",
+ "\1\152",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "\1\131\1\uffff\12\77",
+ "\1\131\1\uffff\12\77",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "\1\153",
+ "\1\154",
+ "\1\155",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "\1\156",
+ "",
+ "\1\157",
+ "",
+ "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\16\57\1\160\13\57",
+ "",
+ "\1\131\1\uffff\12\162\1\163",
+ "",
+ "\1\131\1\uffff\12\162\1\163",
+ "\1\131\1\uffff\12\162",
+ "\1\164",
+ "\1\165",
+ "\1\166",
+ "\1\167",
+ "\1\170",
+ "\1\171",
+ "\1\172",
+ "\1\173",
+ "\1\174",
+ "",
+ "",
+ "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
+ "",
+ "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
+ "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
+ "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
+ "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
+ "\1\u0082",
+ "\1\u0083",
+ "\1\u0084",
+ "\1\u0085",
+ "",
+ "\1\131\1\uffff\12\u0086",
+ "",
+ "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
+ "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
+ "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
+ "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
+ "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
+ "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
+ "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
+ "\1\u0087",
+ "\1\u0088",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
+ "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
+ "\1\u008b",
+ "\1\u008c",
+ "\1\131\1\163\12\u008d",
+ "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
+ "\1\u008f",
+ "",
+ "",
+ "\1\u0090",
+ "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
+ "\1\131\1\uffff\12\u008d",
+ "",
+ "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
+ "\1\u0092",
+ "",
+ ""
+ };
+
+ static final short[] DFA38_eot = DFA.unpackEncodedString(DFA38_eotS);
+ static final short[] DFA38_eof = DFA.unpackEncodedString(DFA38_eofS);
+ static final char[] DFA38_min = DFA.unpackEncodedStringToUnsignedChars(DFA38_minS);
+ static final char[] DFA38_max = DFA.unpackEncodedStringToUnsignedChars(DFA38_maxS);
+ static final short[] DFA38_accept = DFA.unpackEncodedString(DFA38_acceptS);
+ static final short[] DFA38_special = DFA.unpackEncodedString(DFA38_specialS);
+ static final short[][] DFA38_transition;
+
+ static {
+ int numStates = DFA38_transitionS.length;
+ DFA38_transition = new short[numStates][];
+ for (int i=0; i<numStates; i++) {
+ DFA38_transition[i] = DFA.unpackEncodedString(DFA38_transitionS[i]);
+ }
+ }
+
+ class DFA38 extends DFA {
+
+ public DFA38(BaseRecognizer recognizer) {
+ this.recognizer = recognizer;
+ this.decisionNumber = 38;
+ this.eot = DFA38_eot;
+ this.eof = DFA38_eof;
+ this.min = DFA38_min;
+ this.max = DFA38_max;
+ this.accept = DFA38_accept;
+ this.special = DFA38_special;
+ this.transition = DFA38_transition;
+ }
+ public String getDescription() {
+ return "1:1: Tokens : ( T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | RULE_INTEGERLITERAL | RULE_REALLITERAL | RULE_DATETIMELITERAL | RULE_BOOLEANLITERAL | RULE_NULLLITERAL | RULE_ID | RULE_INT | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER );";
+ }
+ public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+ IntStream input = _input;
+ int _s = s;
+ switch ( s ) {
+ case 0 :
+ int LA38_42 = input.LA(1);
+
+ s = -1;
+ if ( ((LA38_42>='\u0000' && LA38_42<='\uFFFF')) ) {s = 101;}
+
+ else s = 45;
+
+ if ( s>=0 ) return s;
+ break;
+ case 1 :
+ int LA38_43 = input.LA(1);
+
+ s = -1;
+ if ( ((LA38_43>='\u0000' && LA38_43<='\uFFFF')) ) {s = 101;}
+
+ else s = 45;
+
+ if ( s>=0 ) return s;
+ break;
+ case 2 :
+ int LA38_0 = input.LA(1);
+
+ s = -1;
+ if ( (LA38_0=='a') ) {s = 1;}
+
+ else if ( (LA38_0=='o') ) {s = 2;}
+
+ else if ( (LA38_0=='x') ) {s = 3;}
+
+ else if ( (LA38_0=='=') ) {s = 4;}
+
+ else if ( (LA38_0=='<') ) {s = 5;}
+
+ else if ( (LA38_0=='>') ) {s = 6;}
+
+ else if ( (LA38_0=='?') ) {s = 7;}
+
+ else if ( (LA38_0==':') ) {s = 8;}
+
+ else if ( (LA38_0=='+') ) {s = 9;}
+
+ else if ( (LA38_0=='-') ) {s = 10;}
+
+ else if ( (LA38_0=='*') ) {s = 11;}
+
+ else if ( (LA38_0=='/') ) {s = 12;}
+
+ else if ( (LA38_0=='m') ) {s = 13;}
+
+ else if ( (LA38_0=='n') ) {s = 14;}
+
+ else if ( (LA38_0=='.') ) {s = 15;}
+
+ else if ( (LA38_0=='(') ) {s = 16;}
+
+ else if ( (LA38_0==')') ) {s = 17;}
+
+ else if ( (LA38_0==']') ) {s = 18;}
+
+ else if ( (LA38_0=='[') ) {s = 19;}
+
+ else if ( (LA38_0=='{') ) {s = 20;}
+
+ else if ( (LA38_0=='}') ) {s = 21;}
+
+ else if ( (LA38_0==',') ) {s = 22;}
+
+ else if ( (LA38_0=='@') ) {s = 23;}
+
+ else if ( (LA38_0=='w') ) {s = 24;}
+
+ else if ( (LA38_0=='&') ) {s = 25;}
+
+ else if ( (LA38_0=='j') ) {s = 26;}
+
+ else if ( (LA38_0=='$') ) {s = 27;}
+
+ else if ( (LA38_0=='i') ) {s = 28;}
+
+ else if ( (LA38_0=='0') ) {s = 29;}
+
+ else if ( (LA38_0=='1') ) {s = 30;}
+
+ else if ( (LA38_0=='2') ) {s = 31;}
+
+ else if ( ((LA38_0>='3' && LA38_0<='9')) ) {s = 32;}
+
+ else if ( (LA38_0=='M') ) {s = 33;}
+
+ else if ( (LA38_0=='T') ) {s = 34;}
+
+ else if ( (LA38_0=='W') ) {s = 35;}
+
+ else if ( (LA38_0=='F') ) {s = 36;}
+
+ else if ( (LA38_0=='S') ) {s = 37;}
+
+ else if ( (LA38_0=='t') ) {s = 38;}
+
+ else if ( (LA38_0=='f') ) {s = 39;}
+
+ else if ( (LA38_0=='^') ) {s = 40;}
+
+ else if ( ((LA38_0>='A' && LA38_0<='E')||(LA38_0>='G' && LA38_0<='L')||(LA38_0>='N' && LA38_0<='R')||(LA38_0>='U' && LA38_0<='V')||(LA38_0>='X' && LA38_0<='Z')||LA38_0=='_'||(LA38_0>='b' && LA38_0<='e')||(LA38_0>='g' && LA38_0<='h')||(LA38_0>='k' && LA38_0<='l')||(LA38_0>='p' && LA38_0<='s')||(LA38_0>='u' && LA38_0<='v')||(LA38_0>='y' && LA38_0<='z')) ) {s = 41;}
+
+ else if ( (LA38_0=='\"') ) {s = 42;}
+
+ else if ( (LA38_0=='\'') ) {s = 43;}
+
+ else if ( ((LA38_0>='\t' && LA38_0<='\n')||LA38_0=='\r'||LA38_0==' ') ) {s = 44;}
+
+ else if ( ((LA38_0>='\u0000' && LA38_0<='\b')||(LA38_0>='\u000B' && LA38_0<='\f')||(LA38_0>='\u000E' && LA38_0<='\u001F')||LA38_0=='!'||LA38_0=='#'||LA38_0=='%'||LA38_0==';'||LA38_0=='\\'||LA38_0=='`'||LA38_0=='|'||(LA38_0>='~' && LA38_0<='\uFFFF')) ) {s = 45;}
+
+ if ( s>=0 ) return s;
+ break;
+ }
+ NoViableAltException nvae =
+ new NoViableAltException(getDescription(), 38, _s, input);
+ error(nvae);
+ throw nvae;
+ }
+ }
+
+
+} \ No newline at end of file
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSLParser.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSLParser.java
new file mode 100644
index 00000000000..bac11838c66
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSLParser.java
@@ -0,0 +1,7225 @@
+package org.eclipse.papyrus.marte.vsl.parser.antlr.internal;
+
+import org.eclipse.xtext.*;
+import org.eclipse.xtext.parser.*;
+import org.eclipse.xtext.parser.impl.*;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
+import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken;
+import org.eclipse.papyrus.marte.vsl.services.VSLGrammarAccess;
+
+
+
+import org.antlr.runtime.*;
+import java.util.Stack;
+import java.util.List;
+import java.util.ArrayList;
+
+@SuppressWarnings("all")
+public class InternalVSLParser extends AbstractInternalAntlrParser {
+ public static final String[] tokenNames = new String[] {
+ "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_ID", "RULE_INTEGERLITERAL", "RULE_REALLITERAL", "RULE_DATETIMELITERAL", "RULE_BOOLEANLITERAL", "RULE_NULLLITERAL", "RULE_STRING", "RULE_INT", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'and'", "'or'", "'xor'", "'=='", "'<>'", "'<'", "'>'", "'<='", "'>='", "'?'", "':'", "'+'", "'-'", "'*'", "'/'", "'mod'", "'not'", "'.'", "'('", "')'", "'::'", "']'", "'['", "'..'", "'{'", "'}'", "','", "'='", "'@'", "'when'", "'&'", "'jitter('", "'$'", "'in'", "'out'", "'inout'"
+ };
+ public static final int RULE_DATETIMELITERAL=7;
+ public static final int RULE_ID=4;
+ public static final int T__29=29;
+ public static final int T__28=28;
+ public static final int T__27=27;
+ public static final int T__26=26;
+ public static final int T__25=25;
+ public static final int T__24=24;
+ public static final int T__23=23;
+ public static final int T__22=22;
+ public static final int RULE_ANY_OTHER=15;
+ public static final int T__21=21;
+ public static final int T__20=20;
+ public static final int RULE_REALLITERAL=6;
+ public static final int EOF=-1;
+ public static final int RULE_BOOLEANLITERAL=8;
+ public static final int T__19=19;
+ public static final int T__16=16;
+ public static final int T__51=51;
+ public static final int T__18=18;
+ public static final int T__17=17;
+ public static final int RULE_INT=11;
+ public static final int T__50=50;
+ public static final int RULE_NULLLITERAL=9;
+ public static final int T__42=42;
+ public static final int T__43=43;
+ public static final int T__40=40;
+ public static final int T__41=41;
+ public static final int T__46=46;
+ public static final int T__47=47;
+ public static final int T__44=44;
+ public static final int T__45=45;
+ public static final int T__48=48;
+ public static final int T__49=49;
+ public static final int RULE_INTEGERLITERAL=5;
+ public static final int RULE_SL_COMMENT=13;
+ public static final int RULE_ML_COMMENT=12;
+ public static final int T__30=30;
+ public static final int T__31=31;
+ public static final int RULE_STRING=10;
+ public static final int T__32=32;
+ public static final int T__33=33;
+ public static final int T__34=34;
+ public static final int T__35=35;
+ public static final int T__36=36;
+ public static final int T__37=37;
+ public static final int T__38=38;
+ public static final int T__39=39;
+ public static final int RULE_WS=14;
+
+ // delegates
+ // delegators
+
+
+ public InternalVSLParser(TokenStream input) {
+ this(input, new RecognizerSharedState());
+ }
+ public InternalVSLParser(TokenStream input, RecognizerSharedState state) {
+ super(input, state);
+
+ }
+
+
+ public String[] getTokenNames() { return InternalVSLParser.tokenNames; }
+ public String getGrammarFileName() { return "../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g"; }
+
+
+
+ private VSLGrammarAccess grammarAccess;
+
+ public InternalVSLParser(TokenStream input, VSLGrammarAccess grammarAccess) {
+ this(input);
+ this.grammarAccess = grammarAccess;
+ registerRules(grammarAccess.getGrammar());
+ }
+
+ @Override
+ protected String getFirstRuleName() {
+ return "Expression";
+ }
+
+ @Override
+ protected VSLGrammarAccess getGrammarAccess() {
+ return grammarAccess;
+ }
+
+
+
+ // $ANTLR start "entryRuleExpression"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:67:1: entryRuleExpression returns [EObject current=null] : iv_ruleExpression= ruleExpression EOF ;
+ public final EObject entryRuleExpression() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleExpression = null;
+
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:68:2: (iv_ruleExpression= ruleExpression EOF )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:69:2: iv_ruleExpression= ruleExpression EOF
+ {
+ newCompositeNode(grammarAccess.getExpressionRule());
+ pushFollow(FOLLOW_ruleExpression_in_entryRuleExpression75);
+ iv_ruleExpression=ruleExpression();
+
+ state._fsp--;
+
+ current =iv_ruleExpression;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleExpression85);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "entryRuleExpression"
+
+
+ // $ANTLR start "ruleExpression"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:76:1: ruleExpression returns [EObject current=null] : ( (lv_exp_0_0= ruleAndOrXorExpression ) ) ;
+ public final EObject ruleExpression() throws RecognitionException {
+ EObject current = null;
+
+ EObject lv_exp_0_0 = null;
+
+
+ enterRule();
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:79:28: ( ( (lv_exp_0_0= ruleAndOrXorExpression ) ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:80:1: ( (lv_exp_0_0= ruleAndOrXorExpression ) )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:80:1: ( (lv_exp_0_0= ruleAndOrXorExpression ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:81:1: (lv_exp_0_0= ruleAndOrXorExpression )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:81:1: (lv_exp_0_0= ruleAndOrXorExpression )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:82:3: lv_exp_0_0= ruleAndOrXorExpression
+ {
+
+ newCompositeNode(grammarAccess.getExpressionAccess().getExpAndOrXorExpressionParserRuleCall_0());
+
+ pushFollow(FOLLOW_ruleAndOrXorExpression_in_ruleExpression130);
+ lv_exp_0_0=ruleAndOrXorExpression();
+
+ state._fsp--;
+
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getExpressionRule());
+ }
+ set(
+ current,
+ "exp",
+ lv_exp_0_0,
+ "AndOrXorExpression");
+ afterParserOrEnumRuleCall();
+
+
+ }
+
+
+ }
+
+
+ }
+
+ leaveRule();
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "ruleExpression"
+
+
+ // $ANTLR start "entryRuleAndOrXorExpression"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:106:1: entryRuleAndOrXorExpression returns [EObject current=null] : iv_ruleAndOrXorExpression= ruleAndOrXorExpression EOF ;
+ public final EObject entryRuleAndOrXorExpression() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleAndOrXorExpression = null;
+
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:107:2: (iv_ruleAndOrXorExpression= ruleAndOrXorExpression EOF )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:108:2: iv_ruleAndOrXorExpression= ruleAndOrXorExpression EOF
+ {
+ newCompositeNode(grammarAccess.getAndOrXorExpressionRule());
+ pushFollow(FOLLOW_ruleAndOrXorExpression_in_entryRuleAndOrXorExpression165);
+ iv_ruleAndOrXorExpression=ruleAndOrXorExpression();
+
+ state._fsp--;
+
+ current =iv_ruleAndOrXorExpression;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleAndOrXorExpression175);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "entryRuleAndOrXorExpression"
+
+
+ // $ANTLR start "ruleAndOrXorExpression"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:115:1: ruleAndOrXorExpression returns [EObject current=null] : ( ( (lv_exp_0_0= ruleEqualityExpression ) ) ( ( ( (lv_op_1_1= 'and' | lv_op_1_2= 'or' | lv_op_1_3= 'xor' ) ) ) ( (lv_exp_2_0= ruleEqualityExpression ) ) )* ) ;
+ public final EObject ruleAndOrXorExpression() throws RecognitionException {
+ EObject current = null;
+
+ Token lv_op_1_1=null;
+ Token lv_op_1_2=null;
+ Token lv_op_1_3=null;
+ EObject lv_exp_0_0 = null;
+
+ EObject lv_exp_2_0 = null;
+
+
+ enterRule();
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:118:28: ( ( ( (lv_exp_0_0= ruleEqualityExpression ) ) ( ( ( (lv_op_1_1= 'and' | lv_op_1_2= 'or' | lv_op_1_3= 'xor' ) ) ) ( (lv_exp_2_0= ruleEqualityExpression ) ) )* ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:119:1: ( ( (lv_exp_0_0= ruleEqualityExpression ) ) ( ( ( (lv_op_1_1= 'and' | lv_op_1_2= 'or' | lv_op_1_3= 'xor' ) ) ) ( (lv_exp_2_0= ruleEqualityExpression ) ) )* )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:119:1: ( ( (lv_exp_0_0= ruleEqualityExpression ) ) ( ( ( (lv_op_1_1= 'and' | lv_op_1_2= 'or' | lv_op_1_3= 'xor' ) ) ) ( (lv_exp_2_0= ruleEqualityExpression ) ) )* )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:119:2: ( (lv_exp_0_0= ruleEqualityExpression ) ) ( ( ( (lv_op_1_1= 'and' | lv_op_1_2= 'or' | lv_op_1_3= 'xor' ) ) ) ( (lv_exp_2_0= ruleEqualityExpression ) ) )*
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:119:2: ( (lv_exp_0_0= ruleEqualityExpression ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:120:1: (lv_exp_0_0= ruleEqualityExpression )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:120:1: (lv_exp_0_0= ruleEqualityExpression )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:121:3: lv_exp_0_0= ruleEqualityExpression
+ {
+
+ newCompositeNode(grammarAccess.getAndOrXorExpressionAccess().getExpEqualityExpressionParserRuleCall_0_0());
+
+ pushFollow(FOLLOW_ruleEqualityExpression_in_ruleAndOrXorExpression221);
+ lv_exp_0_0=ruleEqualityExpression();
+
+ state._fsp--;
+
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getAndOrXorExpressionRule());
+ }
+ add(
+ current,
+ "exp",
+ lv_exp_0_0,
+ "EqualityExpression");
+ afterParserOrEnumRuleCall();
+
+
+ }
+
+
+ }
+
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:137:2: ( ( ( (lv_op_1_1= 'and' | lv_op_1_2= 'or' | lv_op_1_3= 'xor' ) ) ) ( (lv_exp_2_0= ruleEqualityExpression ) ) )*
+ loop2:
+ do {
+ int alt2=2;
+ int LA2_0 = input.LA(1);
+
+ if ( ((LA2_0>=16 && LA2_0<=18)) ) {
+ alt2=1;
+ }
+
+
+ switch (alt2) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:137:3: ( ( (lv_op_1_1= 'and' | lv_op_1_2= 'or' | lv_op_1_3= 'xor' ) ) ) ( (lv_exp_2_0= ruleEqualityExpression ) )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:137:3: ( ( (lv_op_1_1= 'and' | lv_op_1_2= 'or' | lv_op_1_3= 'xor' ) ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:138:1: ( (lv_op_1_1= 'and' | lv_op_1_2= 'or' | lv_op_1_3= 'xor' ) )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:138:1: ( (lv_op_1_1= 'and' | lv_op_1_2= 'or' | lv_op_1_3= 'xor' ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:139:1: (lv_op_1_1= 'and' | lv_op_1_2= 'or' | lv_op_1_3= 'xor' )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:139:1: (lv_op_1_1= 'and' | lv_op_1_2= 'or' | lv_op_1_3= 'xor' )
+ int alt1=3;
+ switch ( input.LA(1) ) {
+ case 16:
+ {
+ alt1=1;
+ }
+ break;
+ case 17:
+ {
+ alt1=2;
+ }
+ break;
+ case 18:
+ {
+ alt1=3;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("", 1, 0, input);
+
+ throw nvae;
+ }
+
+ switch (alt1) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:140:3: lv_op_1_1= 'and'
+ {
+ lv_op_1_1=(Token)match(input,16,FOLLOW_16_in_ruleAndOrXorExpression242);
+
+ newLeafNode(lv_op_1_1, grammarAccess.getAndOrXorExpressionAccess().getOpAndKeyword_1_0_0_0());
+
+
+ if (current==null) {
+ current = createModelElement(grammarAccess.getAndOrXorExpressionRule());
+ }
+ addWithLastConsumed(current, "op", lv_op_1_1, null);
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:152:8: lv_op_1_2= 'or'
+ {
+ lv_op_1_2=(Token)match(input,17,FOLLOW_17_in_ruleAndOrXorExpression271);
+
+ newLeafNode(lv_op_1_2, grammarAccess.getAndOrXorExpressionAccess().getOpOrKeyword_1_0_0_1());
+
+
+ if (current==null) {
+ current = createModelElement(grammarAccess.getAndOrXorExpressionRule());
+ }
+ addWithLastConsumed(current, "op", lv_op_1_2, null);
+
+
+ }
+ break;
+ case 3 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:164:8: lv_op_1_3= 'xor'
+ {
+ lv_op_1_3=(Token)match(input,18,FOLLOW_18_in_ruleAndOrXorExpression300);
+
+ newLeafNode(lv_op_1_3, grammarAccess.getAndOrXorExpressionAccess().getOpXorKeyword_1_0_0_2());
+
+
+ if (current==null) {
+ current = createModelElement(grammarAccess.getAndOrXorExpressionRule());
+ }
+ addWithLastConsumed(current, "op", lv_op_1_3, null);
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+
+ }
+
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:179:2: ( (lv_exp_2_0= ruleEqualityExpression ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:180:1: (lv_exp_2_0= ruleEqualityExpression )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:180:1: (lv_exp_2_0= ruleEqualityExpression )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:181:3: lv_exp_2_0= ruleEqualityExpression
+ {
+
+ newCompositeNode(grammarAccess.getAndOrXorExpressionAccess().getExpEqualityExpressionParserRuleCall_1_1_0());
+
+ pushFollow(FOLLOW_ruleEqualityExpression_in_ruleAndOrXorExpression337);
+ lv_exp_2_0=ruleEqualityExpression();
+
+ state._fsp--;
+
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getAndOrXorExpressionRule());
+ }
+ add(
+ current,
+ "exp",
+ lv_exp_2_0,
+ "EqualityExpression");
+ afterParserOrEnumRuleCall();
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop2;
+ }
+ } while (true);
+
+
+ }
+
+
+ }
+
+ leaveRule();
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "ruleAndOrXorExpression"
+
+
+ // $ANTLR start "entryRuleEqualityExpression"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:205:1: entryRuleEqualityExpression returns [EObject current=null] : iv_ruleEqualityExpression= ruleEqualityExpression EOF ;
+ public final EObject entryRuleEqualityExpression() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleEqualityExpression = null;
+
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:206:2: (iv_ruleEqualityExpression= ruleEqualityExpression EOF )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:207:2: iv_ruleEqualityExpression= ruleEqualityExpression EOF
+ {
+ newCompositeNode(grammarAccess.getEqualityExpressionRule());
+ pushFollow(FOLLOW_ruleEqualityExpression_in_entryRuleEqualityExpression375);
+ iv_ruleEqualityExpression=ruleEqualityExpression();
+
+ state._fsp--;
+
+ current =iv_ruleEqualityExpression;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleEqualityExpression385);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "entryRuleEqualityExpression"
+
+
+ // $ANTLR start "ruleEqualityExpression"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:214:1: ruleEqualityExpression returns [EObject current=null] : ( ( (lv_exp_0_0= ruleRelationalExpression ) ) ( ( ( (lv_op_1_1= '==' | lv_op_1_2= '<>' ) ) ) ( (lv_exp_2_0= ruleRelationalExpression ) ) )* ) ;
+ public final EObject ruleEqualityExpression() throws RecognitionException {
+ EObject current = null;
+
+ Token lv_op_1_1=null;
+ Token lv_op_1_2=null;
+ EObject lv_exp_0_0 = null;
+
+ EObject lv_exp_2_0 = null;
+
+
+ enterRule();
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:217:28: ( ( ( (lv_exp_0_0= ruleRelationalExpression ) ) ( ( ( (lv_op_1_1= '==' | lv_op_1_2= '<>' ) ) ) ( (lv_exp_2_0= ruleRelationalExpression ) ) )* ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:218:1: ( ( (lv_exp_0_0= ruleRelationalExpression ) ) ( ( ( (lv_op_1_1= '==' | lv_op_1_2= '<>' ) ) ) ( (lv_exp_2_0= ruleRelationalExpression ) ) )* )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:218:1: ( ( (lv_exp_0_0= ruleRelationalExpression ) ) ( ( ( (lv_op_1_1= '==' | lv_op_1_2= '<>' ) ) ) ( (lv_exp_2_0= ruleRelationalExpression ) ) )* )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:218:2: ( (lv_exp_0_0= ruleRelationalExpression ) ) ( ( ( (lv_op_1_1= '==' | lv_op_1_2= '<>' ) ) ) ( (lv_exp_2_0= ruleRelationalExpression ) ) )*
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:218:2: ( (lv_exp_0_0= ruleRelationalExpression ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:219:1: (lv_exp_0_0= ruleRelationalExpression )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:219:1: (lv_exp_0_0= ruleRelationalExpression )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:220:3: lv_exp_0_0= ruleRelationalExpression
+ {
+
+ newCompositeNode(grammarAccess.getEqualityExpressionAccess().getExpRelationalExpressionParserRuleCall_0_0());
+
+ pushFollow(FOLLOW_ruleRelationalExpression_in_ruleEqualityExpression431);
+ lv_exp_0_0=ruleRelationalExpression();
+
+ state._fsp--;
+
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getEqualityExpressionRule());
+ }
+ add(
+ current,
+ "exp",
+ lv_exp_0_0,
+ "RelationalExpression");
+ afterParserOrEnumRuleCall();
+
+
+ }
+
+
+ }
+
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:236:2: ( ( ( (lv_op_1_1= '==' | lv_op_1_2= '<>' ) ) ) ( (lv_exp_2_0= ruleRelationalExpression ) ) )*
+ loop4:
+ do {
+ int alt4=2;
+ int LA4_0 = input.LA(1);
+
+ if ( ((LA4_0>=19 && LA4_0<=20)) ) {
+ alt4=1;
+ }
+
+
+ switch (alt4) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:236:3: ( ( (lv_op_1_1= '==' | lv_op_1_2= '<>' ) ) ) ( (lv_exp_2_0= ruleRelationalExpression ) )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:236:3: ( ( (lv_op_1_1= '==' | lv_op_1_2= '<>' ) ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:237:1: ( (lv_op_1_1= '==' | lv_op_1_2= '<>' ) )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:237:1: ( (lv_op_1_1= '==' | lv_op_1_2= '<>' ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:238:1: (lv_op_1_1= '==' | lv_op_1_2= '<>' )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:238:1: (lv_op_1_1= '==' | lv_op_1_2= '<>' )
+ int alt3=2;
+ int LA3_0 = input.LA(1);
+
+ if ( (LA3_0==19) ) {
+ alt3=1;
+ }
+ else if ( (LA3_0==20) ) {
+ alt3=2;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("", 3, 0, input);
+
+ throw nvae;
+ }
+ switch (alt3) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:239:3: lv_op_1_1= '=='
+ {
+ lv_op_1_1=(Token)match(input,19,FOLLOW_19_in_ruleEqualityExpression452);
+
+ newLeafNode(lv_op_1_1, grammarAccess.getEqualityExpressionAccess().getOpEqualsSignEqualsSignKeyword_1_0_0_0());
+
+
+ if (current==null) {
+ current = createModelElement(grammarAccess.getEqualityExpressionRule());
+ }
+ addWithLastConsumed(current, "op", lv_op_1_1, null);
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:251:8: lv_op_1_2= '<>'
+ {
+ lv_op_1_2=(Token)match(input,20,FOLLOW_20_in_ruleEqualityExpression481);
+
+ newLeafNode(lv_op_1_2, grammarAccess.getEqualityExpressionAccess().getOpLessThanSignGreaterThanSignKeyword_1_0_0_1());
+
+
+ if (current==null) {
+ current = createModelElement(grammarAccess.getEqualityExpressionRule());
+ }
+ addWithLastConsumed(current, "op", lv_op_1_2, null);
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+
+ }
+
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:266:2: ( (lv_exp_2_0= ruleRelationalExpression ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:267:1: (lv_exp_2_0= ruleRelationalExpression )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:267:1: (lv_exp_2_0= ruleRelationalExpression )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:268:3: lv_exp_2_0= ruleRelationalExpression
+ {
+
+ newCompositeNode(grammarAccess.getEqualityExpressionAccess().getExpRelationalExpressionParserRuleCall_1_1_0());
+
+ pushFollow(FOLLOW_ruleRelationalExpression_in_ruleEqualityExpression518);
+ lv_exp_2_0=ruleRelationalExpression();
+
+ state._fsp--;
+
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getEqualityExpressionRule());
+ }
+ add(
+ current,
+ "exp",
+ lv_exp_2_0,
+ "RelationalExpression");
+ afterParserOrEnumRuleCall();
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop4;
+ }
+ } while (true);
+
+
+ }
+
+
+ }
+
+ leaveRule();
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "ruleEqualityExpression"
+
+
+ // $ANTLR start "entryRuleRelationalExpression"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:292:1: entryRuleRelationalExpression returns [EObject current=null] : iv_ruleRelationalExpression= ruleRelationalExpression EOF ;
+ public final EObject entryRuleRelationalExpression() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleRelationalExpression = null;
+
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:293:2: (iv_ruleRelationalExpression= ruleRelationalExpression EOF )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:294:2: iv_ruleRelationalExpression= ruleRelationalExpression EOF
+ {
+ newCompositeNode(grammarAccess.getRelationalExpressionRule());
+ pushFollow(FOLLOW_ruleRelationalExpression_in_entryRuleRelationalExpression556);
+ iv_ruleRelationalExpression=ruleRelationalExpression();
+
+ state._fsp--;
+
+ current =iv_ruleRelationalExpression;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleRelationalExpression566);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "entryRuleRelationalExpression"
+
+
+ // $ANTLR start "ruleRelationalExpression"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:301:1: ruleRelationalExpression returns [EObject current=null] : ( ( (lv_exp_0_0= ruleConditionalExpression ) ) ( ( ( (lv_op_1_1= '<' | lv_op_1_2= '>' | lv_op_1_3= '<=' | lv_op_1_4= '>=' ) ) ) ( (lv_exp_2_0= ruleConditionalExpression ) ) )* ) ;
+ public final EObject ruleRelationalExpression() throws RecognitionException {
+ EObject current = null;
+
+ Token lv_op_1_1=null;
+ Token lv_op_1_2=null;
+ Token lv_op_1_3=null;
+ Token lv_op_1_4=null;
+ EObject lv_exp_0_0 = null;
+
+ EObject lv_exp_2_0 = null;
+
+
+ enterRule();
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:304:28: ( ( ( (lv_exp_0_0= ruleConditionalExpression ) ) ( ( ( (lv_op_1_1= '<' | lv_op_1_2= '>' | lv_op_1_3= '<=' | lv_op_1_4= '>=' ) ) ) ( (lv_exp_2_0= ruleConditionalExpression ) ) )* ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:305:1: ( ( (lv_exp_0_0= ruleConditionalExpression ) ) ( ( ( (lv_op_1_1= '<' | lv_op_1_2= '>' | lv_op_1_3= '<=' | lv_op_1_4= '>=' ) ) ) ( (lv_exp_2_0= ruleConditionalExpression ) ) )* )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:305:1: ( ( (lv_exp_0_0= ruleConditionalExpression ) ) ( ( ( (lv_op_1_1= '<' | lv_op_1_2= '>' | lv_op_1_3= '<=' | lv_op_1_4= '>=' ) ) ) ( (lv_exp_2_0= ruleConditionalExpression ) ) )* )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:305:2: ( (lv_exp_0_0= ruleConditionalExpression ) ) ( ( ( (lv_op_1_1= '<' | lv_op_1_2= '>' | lv_op_1_3= '<=' | lv_op_1_4= '>=' ) ) ) ( (lv_exp_2_0= ruleConditionalExpression ) ) )*
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:305:2: ( (lv_exp_0_0= ruleConditionalExpression ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:306:1: (lv_exp_0_0= ruleConditionalExpression )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:306:1: (lv_exp_0_0= ruleConditionalExpression )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:307:3: lv_exp_0_0= ruleConditionalExpression
+ {
+
+ newCompositeNode(grammarAccess.getRelationalExpressionAccess().getExpConditionalExpressionParserRuleCall_0_0());
+
+ pushFollow(FOLLOW_ruleConditionalExpression_in_ruleRelationalExpression612);
+ lv_exp_0_0=ruleConditionalExpression();
+
+ state._fsp--;
+
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getRelationalExpressionRule());
+ }
+ add(
+ current,
+ "exp",
+ lv_exp_0_0,
+ "ConditionalExpression");
+ afterParserOrEnumRuleCall();
+
+
+ }
+
+
+ }
+
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:323:2: ( ( ( (lv_op_1_1= '<' | lv_op_1_2= '>' | lv_op_1_3= '<=' | lv_op_1_4= '>=' ) ) ) ( (lv_exp_2_0= ruleConditionalExpression ) ) )*
+ loop6:
+ do {
+ int alt6=2;
+ int LA6_0 = input.LA(1);
+
+ if ( ((LA6_0>=21 && LA6_0<=24)) ) {
+ alt6=1;
+ }
+
+
+ switch (alt6) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:323:3: ( ( (lv_op_1_1= '<' | lv_op_1_2= '>' | lv_op_1_3= '<=' | lv_op_1_4= '>=' ) ) ) ( (lv_exp_2_0= ruleConditionalExpression ) )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:323:3: ( ( (lv_op_1_1= '<' | lv_op_1_2= '>' | lv_op_1_3= '<=' | lv_op_1_4= '>=' ) ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:324:1: ( (lv_op_1_1= '<' | lv_op_1_2= '>' | lv_op_1_3= '<=' | lv_op_1_4= '>=' ) )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:324:1: ( (lv_op_1_1= '<' | lv_op_1_2= '>' | lv_op_1_3= '<=' | lv_op_1_4= '>=' ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:325:1: (lv_op_1_1= '<' | lv_op_1_2= '>' | lv_op_1_3= '<=' | lv_op_1_4= '>=' )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:325:1: (lv_op_1_1= '<' | lv_op_1_2= '>' | lv_op_1_3= '<=' | lv_op_1_4= '>=' )
+ int alt5=4;
+ switch ( input.LA(1) ) {
+ case 21:
+ {
+ alt5=1;
+ }
+ break;
+ case 22:
+ {
+ alt5=2;
+ }
+ break;
+ case 23:
+ {
+ alt5=3;
+ }
+ break;
+ case 24:
+ {
+ alt5=4;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("", 5, 0, input);
+
+ throw nvae;
+ }
+
+ switch (alt5) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:326:3: lv_op_1_1= '<'
+ {
+ lv_op_1_1=(Token)match(input,21,FOLLOW_21_in_ruleRelationalExpression633);
+
+ newLeafNode(lv_op_1_1, grammarAccess.getRelationalExpressionAccess().getOpLessThanSignKeyword_1_0_0_0());
+
+
+ if (current==null) {
+ current = createModelElement(grammarAccess.getRelationalExpressionRule());
+ }
+ addWithLastConsumed(current, "op", lv_op_1_1, null);
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:338:8: lv_op_1_2= '>'
+ {
+ lv_op_1_2=(Token)match(input,22,FOLLOW_22_in_ruleRelationalExpression662);
+
+ newLeafNode(lv_op_1_2, grammarAccess.getRelationalExpressionAccess().getOpGreaterThanSignKeyword_1_0_0_1());
+
+
+ if (current==null) {
+ current = createModelElement(grammarAccess.getRelationalExpressionRule());
+ }
+ addWithLastConsumed(current, "op", lv_op_1_2, null);
+
+
+ }
+ break;
+ case 3 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:350:8: lv_op_1_3= '<='
+ {
+ lv_op_1_3=(Token)match(input,23,FOLLOW_23_in_ruleRelationalExpression691);
+
+ newLeafNode(lv_op_1_3, grammarAccess.getRelationalExpressionAccess().getOpLessThanSignEqualsSignKeyword_1_0_0_2());
+
+
+ if (current==null) {
+ current = createModelElement(grammarAccess.getRelationalExpressionRule());
+ }
+ addWithLastConsumed(current, "op", lv_op_1_3, null);
+
+
+ }
+ break;
+ case 4 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:362:8: lv_op_1_4= '>='
+ {
+ lv_op_1_4=(Token)match(input,24,FOLLOW_24_in_ruleRelationalExpression720);
+
+ newLeafNode(lv_op_1_4, grammarAccess.getRelationalExpressionAccess().getOpGreaterThanSignEqualsSignKeyword_1_0_0_3());
+
+
+ if (current==null) {
+ current = createModelElement(grammarAccess.getRelationalExpressionRule());
+ }
+ addWithLastConsumed(current, "op", lv_op_1_4, null);
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+
+ }
+
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:377:2: ( (lv_exp_2_0= ruleConditionalExpression ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:378:1: (lv_exp_2_0= ruleConditionalExpression )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:378:1: (lv_exp_2_0= ruleConditionalExpression )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:379:3: lv_exp_2_0= ruleConditionalExpression
+ {
+
+ newCompositeNode(grammarAccess.getRelationalExpressionAccess().getExpConditionalExpressionParserRuleCall_1_1_0());
+
+ pushFollow(FOLLOW_ruleConditionalExpression_in_ruleRelationalExpression757);
+ lv_exp_2_0=ruleConditionalExpression();
+
+ state._fsp--;
+
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getRelationalExpressionRule());
+ }
+ add(
+ current,
+ "exp",
+ lv_exp_2_0,
+ "ConditionalExpression");
+ afterParserOrEnumRuleCall();
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop6;
+ }
+ } while (true);
+
+
+ }
+
+
+ }
+
+ leaveRule();
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "ruleRelationalExpression"
+
+
+ // $ANTLR start "entryRuleConditionalExpression"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:403:1: entryRuleConditionalExpression returns [EObject current=null] : iv_ruleConditionalExpression= ruleConditionalExpression EOF ;
+ public final EObject entryRuleConditionalExpression() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleConditionalExpression = null;
+
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:404:2: (iv_ruleConditionalExpression= ruleConditionalExpression EOF )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:405:2: iv_ruleConditionalExpression= ruleConditionalExpression EOF
+ {
+ newCompositeNode(grammarAccess.getConditionalExpressionRule());
+ pushFollow(FOLLOW_ruleConditionalExpression_in_entryRuleConditionalExpression795);
+ iv_ruleConditionalExpression=ruleConditionalExpression();
+
+ state._fsp--;
+
+ current =iv_ruleConditionalExpression;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleConditionalExpression805);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "entryRuleConditionalExpression"
+
+
+ // $ANTLR start "ruleConditionalExpression"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:412:1: ruleConditionalExpression returns [EObject current=null] : ( ( (lv_exp_0_0= ruleAdditiveExpression ) ) ( ( (lv_op_1_0= '?' ) ) ( (lv_exp_2_0= ruleAdditiveExpression ) ) otherlv_3= ':' ( (lv_exp_4_0= ruleAdditiveExpression ) ) )? ) ;
+ public final EObject ruleConditionalExpression() throws RecognitionException {
+ EObject current = null;
+
+ Token lv_op_1_0=null;
+ Token otherlv_3=null;
+ EObject lv_exp_0_0 = null;
+
+ EObject lv_exp_2_0 = null;
+
+ EObject lv_exp_4_0 = null;
+
+
+ enterRule();
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:415:28: ( ( ( (lv_exp_0_0= ruleAdditiveExpression ) ) ( ( (lv_op_1_0= '?' ) ) ( (lv_exp_2_0= ruleAdditiveExpression ) ) otherlv_3= ':' ( (lv_exp_4_0= ruleAdditiveExpression ) ) )? ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:416:1: ( ( (lv_exp_0_0= ruleAdditiveExpression ) ) ( ( (lv_op_1_0= '?' ) ) ( (lv_exp_2_0= ruleAdditiveExpression ) ) otherlv_3= ':' ( (lv_exp_4_0= ruleAdditiveExpression ) ) )? )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:416:1: ( ( (lv_exp_0_0= ruleAdditiveExpression ) ) ( ( (lv_op_1_0= '?' ) ) ( (lv_exp_2_0= ruleAdditiveExpression ) ) otherlv_3= ':' ( (lv_exp_4_0= ruleAdditiveExpression ) ) )? )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:416:2: ( (lv_exp_0_0= ruleAdditiveExpression ) ) ( ( (lv_op_1_0= '?' ) ) ( (lv_exp_2_0= ruleAdditiveExpression ) ) otherlv_3= ':' ( (lv_exp_4_0= ruleAdditiveExpression ) ) )?
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:416:2: ( (lv_exp_0_0= ruleAdditiveExpression ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:417:1: (lv_exp_0_0= ruleAdditiveExpression )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:417:1: (lv_exp_0_0= ruleAdditiveExpression )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:418:3: lv_exp_0_0= ruleAdditiveExpression
+ {
+
+ newCompositeNode(grammarAccess.getConditionalExpressionAccess().getExpAdditiveExpressionParserRuleCall_0_0());
+
+ pushFollow(FOLLOW_ruleAdditiveExpression_in_ruleConditionalExpression851);
+ lv_exp_0_0=ruleAdditiveExpression();
+
+ state._fsp--;
+
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getConditionalExpressionRule());
+ }
+ add(
+ current,
+ "exp",
+ lv_exp_0_0,
+ "AdditiveExpression");
+ afterParserOrEnumRuleCall();
+
+
+ }
+
+
+ }
+
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:434:2: ( ( (lv_op_1_0= '?' ) ) ( (lv_exp_2_0= ruleAdditiveExpression ) ) otherlv_3= ':' ( (lv_exp_4_0= ruleAdditiveExpression ) ) )?
+ int alt7=2;
+ int LA7_0 = input.LA(1);
+
+ if ( (LA7_0==25) ) {
+ alt7=1;
+ }
+ switch (alt7) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:434:3: ( (lv_op_1_0= '?' ) ) ( (lv_exp_2_0= ruleAdditiveExpression ) ) otherlv_3= ':' ( (lv_exp_4_0= ruleAdditiveExpression ) )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:434:3: ( (lv_op_1_0= '?' ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:435:1: (lv_op_1_0= '?' )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:435:1: (lv_op_1_0= '?' )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:436:3: lv_op_1_0= '?'
+ {
+ lv_op_1_0=(Token)match(input,25,FOLLOW_25_in_ruleConditionalExpression870);
+
+ newLeafNode(lv_op_1_0, grammarAccess.getConditionalExpressionAccess().getOpQuestionMarkKeyword_1_0_0());
+
+
+ if (current==null) {
+ current = createModelElement(grammarAccess.getConditionalExpressionRule());
+ }
+ addWithLastConsumed(current, "op", lv_op_1_0, "?");
+
+
+ }
+
+
+ }
+
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:449:2: ( (lv_exp_2_0= ruleAdditiveExpression ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:450:1: (lv_exp_2_0= ruleAdditiveExpression )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:450:1: (lv_exp_2_0= ruleAdditiveExpression )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:451:3: lv_exp_2_0= ruleAdditiveExpression
+ {
+
+ newCompositeNode(grammarAccess.getConditionalExpressionAccess().getExpAdditiveExpressionParserRuleCall_1_1_0());
+
+ pushFollow(FOLLOW_ruleAdditiveExpression_in_ruleConditionalExpression904);
+ lv_exp_2_0=ruleAdditiveExpression();
+
+ state._fsp--;
+
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getConditionalExpressionRule());
+ }
+ add(
+ current,
+ "exp",
+ lv_exp_2_0,
+ "AdditiveExpression");
+ afterParserOrEnumRuleCall();
+
+
+ }
+
+
+ }
+
+ otherlv_3=(Token)match(input,26,FOLLOW_26_in_ruleConditionalExpression916);
+
+ newLeafNode(otherlv_3, grammarAccess.getConditionalExpressionAccess().getColonKeyword_1_2());
+
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:471:1: ( (lv_exp_4_0= ruleAdditiveExpression ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:472:1: (lv_exp_4_0= ruleAdditiveExpression )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:472:1: (lv_exp_4_0= ruleAdditiveExpression )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:473:3: lv_exp_4_0= ruleAdditiveExpression
+ {
+
+ newCompositeNode(grammarAccess.getConditionalExpressionAccess().getExpAdditiveExpressionParserRuleCall_1_3_0());
+
+ pushFollow(FOLLOW_ruleAdditiveExpression_in_ruleConditionalExpression937);
+ lv_exp_4_0=ruleAdditiveExpression();
+
+ state._fsp--;
+
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getConditionalExpressionRule());
+ }
+ add(
+ current,
+ "exp",
+ lv_exp_4_0,
+ "AdditiveExpression");
+ afterParserOrEnumRuleCall();
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+
+ }
+
+ leaveRule();
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "ruleConditionalExpression"
+
+
+ // $ANTLR start "entryRuleAdditiveExpression"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:497:1: entryRuleAdditiveExpression returns [EObject current=null] : iv_ruleAdditiveExpression= ruleAdditiveExpression EOF ;
+ public final EObject entryRuleAdditiveExpression() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleAdditiveExpression = null;
+
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:498:2: (iv_ruleAdditiveExpression= ruleAdditiveExpression EOF )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:499:2: iv_ruleAdditiveExpression= ruleAdditiveExpression EOF
+ {
+ newCompositeNode(grammarAccess.getAdditiveExpressionRule());
+ pushFollow(FOLLOW_ruleAdditiveExpression_in_entryRuleAdditiveExpression975);
+ iv_ruleAdditiveExpression=ruleAdditiveExpression();
+
+ state._fsp--;
+
+ current =iv_ruleAdditiveExpression;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleAdditiveExpression985);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "entryRuleAdditiveExpression"
+
+
+ // $ANTLR start "ruleAdditiveExpression"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:506:1: ruleAdditiveExpression returns [EObject current=null] : ( ( (lv_exp_0_0= ruleMultiplicativeExpression ) ) ( ( ( (lv_op_1_1= '+' | lv_op_1_2= '-' ) ) ) ( (lv_exp_2_0= ruleMultiplicativeExpression ) ) )* ) ;
+ public final EObject ruleAdditiveExpression() throws RecognitionException {
+ EObject current = null;
+
+ Token lv_op_1_1=null;
+ Token lv_op_1_2=null;
+ EObject lv_exp_0_0 = null;
+
+ EObject lv_exp_2_0 = null;
+
+
+ enterRule();
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:509:28: ( ( ( (lv_exp_0_0= ruleMultiplicativeExpression ) ) ( ( ( (lv_op_1_1= '+' | lv_op_1_2= '-' ) ) ) ( (lv_exp_2_0= ruleMultiplicativeExpression ) ) )* ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:510:1: ( ( (lv_exp_0_0= ruleMultiplicativeExpression ) ) ( ( ( (lv_op_1_1= '+' | lv_op_1_2= '-' ) ) ) ( (lv_exp_2_0= ruleMultiplicativeExpression ) ) )* )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:510:1: ( ( (lv_exp_0_0= ruleMultiplicativeExpression ) ) ( ( ( (lv_op_1_1= '+' | lv_op_1_2= '-' ) ) ) ( (lv_exp_2_0= ruleMultiplicativeExpression ) ) )* )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:510:2: ( (lv_exp_0_0= ruleMultiplicativeExpression ) ) ( ( ( (lv_op_1_1= '+' | lv_op_1_2= '-' ) ) ) ( (lv_exp_2_0= ruleMultiplicativeExpression ) ) )*
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:510:2: ( (lv_exp_0_0= ruleMultiplicativeExpression ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:511:1: (lv_exp_0_0= ruleMultiplicativeExpression )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:511:1: (lv_exp_0_0= ruleMultiplicativeExpression )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:512:3: lv_exp_0_0= ruleMultiplicativeExpression
+ {
+
+ newCompositeNode(grammarAccess.getAdditiveExpressionAccess().getExpMultiplicativeExpressionParserRuleCall_0_0());
+
+ pushFollow(FOLLOW_ruleMultiplicativeExpression_in_ruleAdditiveExpression1031);
+ lv_exp_0_0=ruleMultiplicativeExpression();
+
+ state._fsp--;
+
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getAdditiveExpressionRule());
+ }
+ add(
+ current,
+ "exp",
+ lv_exp_0_0,
+ "MultiplicativeExpression");
+ afterParserOrEnumRuleCall();
+
+
+ }
+
+
+ }
+
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:528:2: ( ( ( (lv_op_1_1= '+' | lv_op_1_2= '-' ) ) ) ( (lv_exp_2_0= ruleMultiplicativeExpression ) ) )*
+ loop9:
+ do {
+ int alt9=2;
+ int LA9_0 = input.LA(1);
+
+ if ( ((LA9_0>=27 && LA9_0<=28)) ) {
+ alt9=1;
+ }
+
+
+ switch (alt9) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:528:3: ( ( (lv_op_1_1= '+' | lv_op_1_2= '-' ) ) ) ( (lv_exp_2_0= ruleMultiplicativeExpression ) )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:528:3: ( ( (lv_op_1_1= '+' | lv_op_1_2= '-' ) ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:529:1: ( (lv_op_1_1= '+' | lv_op_1_2= '-' ) )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:529:1: ( (lv_op_1_1= '+' | lv_op_1_2= '-' ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:530:1: (lv_op_1_1= '+' | lv_op_1_2= '-' )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:530:1: (lv_op_1_1= '+' | lv_op_1_2= '-' )
+ int alt8=2;
+ int LA8_0 = input.LA(1);
+
+ if ( (LA8_0==27) ) {
+ alt8=1;
+ }
+ else if ( (LA8_0==28) ) {
+ alt8=2;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("", 8, 0, input);
+
+ throw nvae;
+ }
+ switch (alt8) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:531:3: lv_op_1_1= '+'
+ {
+ lv_op_1_1=(Token)match(input,27,FOLLOW_27_in_ruleAdditiveExpression1052);
+
+ newLeafNode(lv_op_1_1, grammarAccess.getAdditiveExpressionAccess().getOpPlusSignKeyword_1_0_0_0());
+
+
+ if (current==null) {
+ current = createModelElement(grammarAccess.getAdditiveExpressionRule());
+ }
+ addWithLastConsumed(current, "op", lv_op_1_1, null);
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:543:8: lv_op_1_2= '-'
+ {
+ lv_op_1_2=(Token)match(input,28,FOLLOW_28_in_ruleAdditiveExpression1081);
+
+ newLeafNode(lv_op_1_2, grammarAccess.getAdditiveExpressionAccess().getOpHyphenMinusKeyword_1_0_0_1());
+
+
+ if (current==null) {
+ current = createModelElement(grammarAccess.getAdditiveExpressionRule());
+ }
+ addWithLastConsumed(current, "op", lv_op_1_2, null);
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+
+ }
+
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:558:2: ( (lv_exp_2_0= ruleMultiplicativeExpression ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:559:1: (lv_exp_2_0= ruleMultiplicativeExpression )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:559:1: (lv_exp_2_0= ruleMultiplicativeExpression )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:560:3: lv_exp_2_0= ruleMultiplicativeExpression
+ {
+
+ newCompositeNode(grammarAccess.getAdditiveExpressionAccess().getExpMultiplicativeExpressionParserRuleCall_1_1_0());
+
+ pushFollow(FOLLOW_ruleMultiplicativeExpression_in_ruleAdditiveExpression1118);
+ lv_exp_2_0=ruleMultiplicativeExpression();
+
+ state._fsp--;
+
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getAdditiveExpressionRule());
+ }
+ add(
+ current,
+ "exp",
+ lv_exp_2_0,
+ "MultiplicativeExpression");
+ afterParserOrEnumRuleCall();
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop9;
+ }
+ } while (true);
+
+
+ }
+
+
+ }
+
+ leaveRule();
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "ruleAdditiveExpression"
+
+
+ // $ANTLR start "entryRuleMultiplicativeExpression"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:584:1: entryRuleMultiplicativeExpression returns [EObject current=null] : iv_ruleMultiplicativeExpression= ruleMultiplicativeExpression EOF ;
+ public final EObject entryRuleMultiplicativeExpression() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleMultiplicativeExpression = null;
+
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:585:2: (iv_ruleMultiplicativeExpression= ruleMultiplicativeExpression EOF )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:586:2: iv_ruleMultiplicativeExpression= ruleMultiplicativeExpression EOF
+ {
+ newCompositeNode(grammarAccess.getMultiplicativeExpressionRule());
+ pushFollow(FOLLOW_ruleMultiplicativeExpression_in_entryRuleMultiplicativeExpression1156);
+ iv_ruleMultiplicativeExpression=ruleMultiplicativeExpression();
+
+ state._fsp--;
+
+ current =iv_ruleMultiplicativeExpression;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleMultiplicativeExpression1166);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "entryRuleMultiplicativeExpression"
+
+
+ // $ANTLR start "ruleMultiplicativeExpression"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:593:1: ruleMultiplicativeExpression returns [EObject current=null] : ( ( (lv_exp_0_0= ruleUnaryExpression ) ) ( ( ( (lv_op_1_1= '*' | lv_op_1_2= '/' | lv_op_1_3= 'mod' ) ) ) ( (lv_exp_2_0= ruleUnaryExpression ) ) )* ) ;
+ public final EObject ruleMultiplicativeExpression() throws RecognitionException {
+ EObject current = null;
+
+ Token lv_op_1_1=null;
+ Token lv_op_1_2=null;
+ Token lv_op_1_3=null;
+ EObject lv_exp_0_0 = null;
+
+ EObject lv_exp_2_0 = null;
+
+
+ enterRule();
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:596:28: ( ( ( (lv_exp_0_0= ruleUnaryExpression ) ) ( ( ( (lv_op_1_1= '*' | lv_op_1_2= '/' | lv_op_1_3= 'mod' ) ) ) ( (lv_exp_2_0= ruleUnaryExpression ) ) )* ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:597:1: ( ( (lv_exp_0_0= ruleUnaryExpression ) ) ( ( ( (lv_op_1_1= '*' | lv_op_1_2= '/' | lv_op_1_3= 'mod' ) ) ) ( (lv_exp_2_0= ruleUnaryExpression ) ) )* )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:597:1: ( ( (lv_exp_0_0= ruleUnaryExpression ) ) ( ( ( (lv_op_1_1= '*' | lv_op_1_2= '/' | lv_op_1_3= 'mod' ) ) ) ( (lv_exp_2_0= ruleUnaryExpression ) ) )* )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:597:2: ( (lv_exp_0_0= ruleUnaryExpression ) ) ( ( ( (lv_op_1_1= '*' | lv_op_1_2= '/' | lv_op_1_3= 'mod' ) ) ) ( (lv_exp_2_0= ruleUnaryExpression ) ) )*
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:597:2: ( (lv_exp_0_0= ruleUnaryExpression ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:598:1: (lv_exp_0_0= ruleUnaryExpression )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:598:1: (lv_exp_0_0= ruleUnaryExpression )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:599:3: lv_exp_0_0= ruleUnaryExpression
+ {
+
+ newCompositeNode(grammarAccess.getMultiplicativeExpressionAccess().getExpUnaryExpressionParserRuleCall_0_0());
+
+ pushFollow(FOLLOW_ruleUnaryExpression_in_ruleMultiplicativeExpression1212);
+ lv_exp_0_0=ruleUnaryExpression();
+
+ state._fsp--;
+
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getMultiplicativeExpressionRule());
+ }
+ add(
+ current,
+ "exp",
+ lv_exp_0_0,
+ "UnaryExpression");
+ afterParserOrEnumRuleCall();
+
+
+ }
+
+
+ }
+
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:615:2: ( ( ( (lv_op_1_1= '*' | lv_op_1_2= '/' | lv_op_1_3= 'mod' ) ) ) ( (lv_exp_2_0= ruleUnaryExpression ) ) )*
+ loop11:
+ do {
+ int alt11=2;
+ int LA11_0 = input.LA(1);
+
+ if ( ((LA11_0>=29 && LA11_0<=31)) ) {
+ alt11=1;
+ }
+
+
+ switch (alt11) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:615:3: ( ( (lv_op_1_1= '*' | lv_op_1_2= '/' | lv_op_1_3= 'mod' ) ) ) ( (lv_exp_2_0= ruleUnaryExpression ) )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:615:3: ( ( (lv_op_1_1= '*' | lv_op_1_2= '/' | lv_op_1_3= 'mod' ) ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:616:1: ( (lv_op_1_1= '*' | lv_op_1_2= '/' | lv_op_1_3= 'mod' ) )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:616:1: ( (lv_op_1_1= '*' | lv_op_1_2= '/' | lv_op_1_3= 'mod' ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:617:1: (lv_op_1_1= '*' | lv_op_1_2= '/' | lv_op_1_3= 'mod' )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:617:1: (lv_op_1_1= '*' | lv_op_1_2= '/' | lv_op_1_3= 'mod' )
+ int alt10=3;
+ switch ( input.LA(1) ) {
+ case 29:
+ {
+ alt10=1;
+ }
+ break;
+ case 30:
+ {
+ alt10=2;
+ }
+ break;
+ case 31:
+ {
+ alt10=3;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("", 10, 0, input);
+
+ throw nvae;
+ }
+
+ switch (alt10) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:618:3: lv_op_1_1= '*'
+ {
+ lv_op_1_1=(Token)match(input,29,FOLLOW_29_in_ruleMultiplicativeExpression1233);
+
+ newLeafNode(lv_op_1_1, grammarAccess.getMultiplicativeExpressionAccess().getOpAsteriskKeyword_1_0_0_0());
+
+
+ if (current==null) {
+ current = createModelElement(grammarAccess.getMultiplicativeExpressionRule());
+ }
+ addWithLastConsumed(current, "op", lv_op_1_1, null);
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:630:8: lv_op_1_2= '/'
+ {
+ lv_op_1_2=(Token)match(input,30,FOLLOW_30_in_ruleMultiplicativeExpression1262);
+
+ newLeafNode(lv_op_1_2, grammarAccess.getMultiplicativeExpressionAccess().getOpSolidusKeyword_1_0_0_1());
+
+
+ if (current==null) {
+ current = createModelElement(grammarAccess.getMultiplicativeExpressionRule());
+ }
+ addWithLastConsumed(current, "op", lv_op_1_2, null);
+
+
+ }
+ break;
+ case 3 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:642:8: lv_op_1_3= 'mod'
+ {
+ lv_op_1_3=(Token)match(input,31,FOLLOW_31_in_ruleMultiplicativeExpression1291);
+
+ newLeafNode(lv_op_1_3, grammarAccess.getMultiplicativeExpressionAccess().getOpModKeyword_1_0_0_2());
+
+
+ if (current==null) {
+ current = createModelElement(grammarAccess.getMultiplicativeExpressionRule());
+ }
+ addWithLastConsumed(current, "op", lv_op_1_3, null);
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+
+ }
+
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:657:2: ( (lv_exp_2_0= ruleUnaryExpression ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:658:1: (lv_exp_2_0= ruleUnaryExpression )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:658:1: (lv_exp_2_0= ruleUnaryExpression )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:659:3: lv_exp_2_0= ruleUnaryExpression
+ {
+
+ newCompositeNode(grammarAccess.getMultiplicativeExpressionAccess().getExpUnaryExpressionParserRuleCall_1_1_0());
+
+ pushFollow(FOLLOW_ruleUnaryExpression_in_ruleMultiplicativeExpression1328);
+ lv_exp_2_0=ruleUnaryExpression();
+
+ state._fsp--;
+
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getMultiplicativeExpressionRule());
+ }
+ add(
+ current,
+ "exp",
+ lv_exp_2_0,
+ "UnaryExpression");
+ afterParserOrEnumRuleCall();
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop11;
+ }
+ } while (true);
+
+
+ }
+
+
+ }
+
+ leaveRule();
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "ruleMultiplicativeExpression"
+
+
+ // $ANTLR start "entryRuleUnaryExpression"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:683:1: entryRuleUnaryExpression returns [EObject current=null] : iv_ruleUnaryExpression= ruleUnaryExpression EOF ;
+ public final EObject entryRuleUnaryExpression() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleUnaryExpression = null;
+
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:684:2: (iv_ruleUnaryExpression= ruleUnaryExpression EOF )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:685:2: iv_ruleUnaryExpression= ruleUnaryExpression EOF
+ {
+ newCompositeNode(grammarAccess.getUnaryExpressionRule());
+ pushFollow(FOLLOW_ruleUnaryExpression_in_entryRuleUnaryExpression1366);
+ iv_ruleUnaryExpression=ruleUnaryExpression();
+
+ state._fsp--;
+
+ current =iv_ruleUnaryExpression;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleUnaryExpression1376);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "entryRuleUnaryExpression"
+
+
+ // $ANTLR start "ruleUnaryExpression"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:692:1: ruleUnaryExpression returns [EObject current=null] : ( ( ( ( (lv_op_0_1= 'not' | lv_op_0_2= '-' | lv_op_0_3= '+' ) ) ) ( (lv_unary_1_0= ruleUnaryExpression ) ) ) | ( (lv_exp_2_0= rulePrimaryExpression ) ) ) ;
+ public final EObject ruleUnaryExpression() throws RecognitionException {
+ EObject current = null;
+
+ Token lv_op_0_1=null;
+ Token lv_op_0_2=null;
+ Token lv_op_0_3=null;
+ EObject lv_unary_1_0 = null;
+
+ EObject lv_exp_2_0 = null;
+
+
+ enterRule();
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:695:28: ( ( ( ( ( (lv_op_0_1= 'not' | lv_op_0_2= '-' | lv_op_0_3= '+' ) ) ) ( (lv_unary_1_0= ruleUnaryExpression ) ) ) | ( (lv_exp_2_0= rulePrimaryExpression ) ) ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:696:1: ( ( ( ( (lv_op_0_1= 'not' | lv_op_0_2= '-' | lv_op_0_3= '+' ) ) ) ( (lv_unary_1_0= ruleUnaryExpression ) ) ) | ( (lv_exp_2_0= rulePrimaryExpression ) ) )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:696:1: ( ( ( ( (lv_op_0_1= 'not' | lv_op_0_2= '-' | lv_op_0_3= '+' ) ) ) ( (lv_unary_1_0= ruleUnaryExpression ) ) ) | ( (lv_exp_2_0= rulePrimaryExpression ) ) )
+ int alt13=2;
+ int LA13_0 = input.LA(1);
+
+ if ( ((LA13_0>=27 && LA13_0<=28)||LA13_0==32) ) {
+ alt13=1;
+ }
+ else if ( ((LA13_0>=RULE_ID && LA13_0<=RULE_STRING)||(LA13_0>=29 && LA13_0<=30)||LA13_0==34||(LA13_0>=37 && LA13_0<=38)||LA13_0==40||LA13_0==44||(LA13_0>=46 && LA13_0<=51)) ) {
+ alt13=2;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("", 13, 0, input);
+
+ throw nvae;
+ }
+ switch (alt13) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:696:2: ( ( ( (lv_op_0_1= 'not' | lv_op_0_2= '-' | lv_op_0_3= '+' ) ) ) ( (lv_unary_1_0= ruleUnaryExpression ) ) )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:696:2: ( ( ( (lv_op_0_1= 'not' | lv_op_0_2= '-' | lv_op_0_3= '+' ) ) ) ( (lv_unary_1_0= ruleUnaryExpression ) ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:696:3: ( ( (lv_op_0_1= 'not' | lv_op_0_2= '-' | lv_op_0_3= '+' ) ) ) ( (lv_unary_1_0= ruleUnaryExpression ) )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:696:3: ( ( (lv_op_0_1= 'not' | lv_op_0_2= '-' | lv_op_0_3= '+' ) ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:697:1: ( (lv_op_0_1= 'not' | lv_op_0_2= '-' | lv_op_0_3= '+' ) )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:697:1: ( (lv_op_0_1= 'not' | lv_op_0_2= '-' | lv_op_0_3= '+' ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:698:1: (lv_op_0_1= 'not' | lv_op_0_2= '-' | lv_op_0_3= '+' )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:698:1: (lv_op_0_1= 'not' | lv_op_0_2= '-' | lv_op_0_3= '+' )
+ int alt12=3;
+ switch ( input.LA(1) ) {
+ case 32:
+ {
+ alt12=1;
+ }
+ break;
+ case 28:
+ {
+ alt12=2;
+ }
+ break;
+ case 27:
+ {
+ alt12=3;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("", 12, 0, input);
+
+ throw nvae;
+ }
+
+ switch (alt12) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:699:3: lv_op_0_1= 'not'
+ {
+ lv_op_0_1=(Token)match(input,32,FOLLOW_32_in_ruleUnaryExpression1422);
+
+ newLeafNode(lv_op_0_1, grammarAccess.getUnaryExpressionAccess().getOpNotKeyword_0_0_0_0());
+
+
+ if (current==null) {
+ current = createModelElement(grammarAccess.getUnaryExpressionRule());
+ }
+ setWithLastConsumed(current, "op", lv_op_0_1, null);
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:711:8: lv_op_0_2= '-'
+ {
+ lv_op_0_2=(Token)match(input,28,FOLLOW_28_in_ruleUnaryExpression1451);
+
+ newLeafNode(lv_op_0_2, grammarAccess.getUnaryExpressionAccess().getOpHyphenMinusKeyword_0_0_0_1());
+
+
+ if (current==null) {
+ current = createModelElement(grammarAccess.getUnaryExpressionRule());
+ }
+ setWithLastConsumed(current, "op", lv_op_0_2, null);
+
+
+ }
+ break;
+ case 3 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:723:8: lv_op_0_3= '+'
+ {
+ lv_op_0_3=(Token)match(input,27,FOLLOW_27_in_ruleUnaryExpression1480);
+
+ newLeafNode(lv_op_0_3, grammarAccess.getUnaryExpressionAccess().getOpPlusSignKeyword_0_0_0_2());
+
+
+ if (current==null) {
+ current = createModelElement(grammarAccess.getUnaryExpressionRule());
+ }
+ setWithLastConsumed(current, "op", lv_op_0_3, null);
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+
+ }
+
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:738:2: ( (lv_unary_1_0= ruleUnaryExpression ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:739:1: (lv_unary_1_0= ruleUnaryExpression )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:739:1: (lv_unary_1_0= ruleUnaryExpression )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:740:3: lv_unary_1_0= ruleUnaryExpression
+ {
+
+ newCompositeNode(grammarAccess.getUnaryExpressionAccess().getUnaryUnaryExpressionParserRuleCall_0_1_0());
+
+ pushFollow(FOLLOW_ruleUnaryExpression_in_ruleUnaryExpression1517);
+ lv_unary_1_0=ruleUnaryExpression();
+
+ state._fsp--;
+
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getUnaryExpressionRule());
+ }
+ set(
+ current,
+ "unary",
+ lv_unary_1_0,
+ "UnaryExpression");
+ afterParserOrEnumRuleCall();
+
+
+ }
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:757:6: ( (lv_exp_2_0= rulePrimaryExpression ) )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:757:6: ( (lv_exp_2_0= rulePrimaryExpression ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:758:1: (lv_exp_2_0= rulePrimaryExpression )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:758:1: (lv_exp_2_0= rulePrimaryExpression )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:759:3: lv_exp_2_0= rulePrimaryExpression
+ {
+
+ newCompositeNode(grammarAccess.getUnaryExpressionAccess().getExpPrimaryExpressionParserRuleCall_1_0());
+
+ pushFollow(FOLLOW_rulePrimaryExpression_in_ruleUnaryExpression1545);
+ lv_exp_2_0=rulePrimaryExpression();
+
+ state._fsp--;
+
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getUnaryExpressionRule());
+ }
+ set(
+ current,
+ "exp",
+ lv_exp_2_0,
+ "PrimaryExpression");
+ afterParserOrEnumRuleCall();
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ leaveRule();
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "ruleUnaryExpression"
+
+
+ // $ANTLR start "entryRulePrimaryExpression"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:783:1: entryRulePrimaryExpression returns [EObject current=null] : iv_rulePrimaryExpression= rulePrimaryExpression EOF ;
+ public final EObject entryRulePrimaryExpression() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_rulePrimaryExpression = null;
+
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:784:2: (iv_rulePrimaryExpression= rulePrimaryExpression EOF )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:785:2: iv_rulePrimaryExpression= rulePrimaryExpression EOF
+ {
+ newCompositeNode(grammarAccess.getPrimaryExpressionRule());
+ pushFollow(FOLLOW_rulePrimaryExpression_in_entryRulePrimaryExpression1581);
+ iv_rulePrimaryExpression=rulePrimaryExpression();
+
+ state._fsp--;
+
+ current =iv_rulePrimaryExpression;
+ match(input,EOF,FOLLOW_EOF_in_entryRulePrimaryExpression1591);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "entryRulePrimaryExpression"
+
+
+ // $ANTLR start "rulePrimaryExpression"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:792:1: rulePrimaryExpression returns [EObject current=null] : ( ( (lv_prefix_0_0= ruleValueSpecification ) ) (otherlv_1= '.' ( (lv_suffix_2_0= ruleSuffixExpression ) ) )? ) ;
+ public final EObject rulePrimaryExpression() throws RecognitionException {
+ EObject current = null;
+
+ Token otherlv_1=null;
+ EObject lv_prefix_0_0 = null;
+
+ EObject lv_suffix_2_0 = null;
+
+
+ enterRule();
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:795:28: ( ( ( (lv_prefix_0_0= ruleValueSpecification ) ) (otherlv_1= '.' ( (lv_suffix_2_0= ruleSuffixExpression ) ) )? ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:796:1: ( ( (lv_prefix_0_0= ruleValueSpecification ) ) (otherlv_1= '.' ( (lv_suffix_2_0= ruleSuffixExpression ) ) )? )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:796:1: ( ( (lv_prefix_0_0= ruleValueSpecification ) ) (otherlv_1= '.' ( (lv_suffix_2_0= ruleSuffixExpression ) ) )? )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:796:2: ( (lv_prefix_0_0= ruleValueSpecification ) ) (otherlv_1= '.' ( (lv_suffix_2_0= ruleSuffixExpression ) ) )?
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:796:2: ( (lv_prefix_0_0= ruleValueSpecification ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:797:1: (lv_prefix_0_0= ruleValueSpecification )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:797:1: (lv_prefix_0_0= ruleValueSpecification )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:798:3: lv_prefix_0_0= ruleValueSpecification
+ {
+
+ newCompositeNode(grammarAccess.getPrimaryExpressionAccess().getPrefixValueSpecificationParserRuleCall_0_0());
+
+ pushFollow(FOLLOW_ruleValueSpecification_in_rulePrimaryExpression1637);
+ lv_prefix_0_0=ruleValueSpecification();
+
+ state._fsp--;
+
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getPrimaryExpressionRule());
+ }
+ set(
+ current,
+ "prefix",
+ lv_prefix_0_0,
+ "ValueSpecification");
+ afterParserOrEnumRuleCall();
+
+
+ }
+
+
+ }
+
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:814:2: (otherlv_1= '.' ( (lv_suffix_2_0= ruleSuffixExpression ) ) )?
+ int alt14=2;
+ int LA14_0 = input.LA(1);
+
+ if ( (LA14_0==33) ) {
+ alt14=1;
+ }
+ switch (alt14) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:814:4: otherlv_1= '.' ( (lv_suffix_2_0= ruleSuffixExpression ) )
+ {
+ otherlv_1=(Token)match(input,33,FOLLOW_33_in_rulePrimaryExpression1650);
+
+ newLeafNode(otherlv_1, grammarAccess.getPrimaryExpressionAccess().getFullStopKeyword_1_0());
+
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:818:1: ( (lv_suffix_2_0= ruleSuffixExpression ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:819:1: (lv_suffix_2_0= ruleSuffixExpression )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:819:1: (lv_suffix_2_0= ruleSuffixExpression )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:820:3: lv_suffix_2_0= ruleSuffixExpression
+ {
+
+ newCompositeNode(grammarAccess.getPrimaryExpressionAccess().getSuffixSuffixExpressionParserRuleCall_1_1_0());
+
+ pushFollow(FOLLOW_ruleSuffixExpression_in_rulePrimaryExpression1671);
+ lv_suffix_2_0=ruleSuffixExpression();
+
+ state._fsp--;
+
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getPrimaryExpressionRule());
+ }
+ set(
+ current,
+ "suffix",
+ lv_suffix_2_0,
+ "SuffixExpression");
+ afterParserOrEnumRuleCall();
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+
+ }
+
+ leaveRule();
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "rulePrimaryExpression"
+
+
+ // $ANTLR start "entryRuleValueSpecification"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:844:1: entryRuleValueSpecification returns [EObject current=null] : iv_ruleValueSpecification= ruleValueSpecification EOF ;
+ public final EObject entryRuleValueSpecification() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleValueSpecification = null;
+
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:845:2: (iv_ruleValueSpecification= ruleValueSpecification EOF )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:846:2: iv_ruleValueSpecification= ruleValueSpecification EOF
+ {
+ newCompositeNode(grammarAccess.getValueSpecificationRule());
+ pushFollow(FOLLOW_ruleValueSpecification_in_entryRuleValueSpecification1709);
+ iv_ruleValueSpecification=ruleValueSpecification();
+
+ state._fsp--;
+
+ current =iv_ruleValueSpecification;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleValueSpecification1719);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "entryRuleValueSpecification"
+
+
+ // $ANTLR start "ruleValueSpecification"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:853:1: ruleValueSpecification returns [EObject current=null] : (this_Literal_0= ruleLiteral | this_NameOrChoiceOrBehaviorCall_1= ruleNameOrChoiceOrBehaviorCall | this_Interval_2= ruleInterval | this_CollectionOrTuple_3= ruleCollectionOrTuple | this_Tuple_4= ruleTuple | this_TimeExpression_5= ruleTimeExpression | this_VariableDeclaration_6= ruleVariableDeclaration | (otherlv_7= '(' this_Expression_8= ruleExpression otherlv_9= ')' ) ) ;
+ public final EObject ruleValueSpecification() throws RecognitionException {
+ EObject current = null;
+
+ Token otherlv_7=null;
+ Token otherlv_9=null;
+ EObject this_Literal_0 = null;
+
+ EObject this_NameOrChoiceOrBehaviorCall_1 = null;
+
+ EObject this_Interval_2 = null;
+
+ EObject this_CollectionOrTuple_3 = null;
+
+ EObject this_Tuple_4 = null;
+
+ EObject this_TimeExpression_5 = null;
+
+ EObject this_VariableDeclaration_6 = null;
+
+ EObject this_Expression_8 = null;
+
+
+ enterRule();
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:856:28: ( (this_Literal_0= ruleLiteral | this_NameOrChoiceOrBehaviorCall_1= ruleNameOrChoiceOrBehaviorCall | this_Interval_2= ruleInterval | this_CollectionOrTuple_3= ruleCollectionOrTuple | this_Tuple_4= ruleTuple | this_TimeExpression_5= ruleTimeExpression | this_VariableDeclaration_6= ruleVariableDeclaration | (otherlv_7= '(' this_Expression_8= ruleExpression otherlv_9= ')' ) ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:857:1: (this_Literal_0= ruleLiteral | this_NameOrChoiceOrBehaviorCall_1= ruleNameOrChoiceOrBehaviorCall | this_Interval_2= ruleInterval | this_CollectionOrTuple_3= ruleCollectionOrTuple | this_Tuple_4= ruleTuple | this_TimeExpression_5= ruleTimeExpression | this_VariableDeclaration_6= ruleVariableDeclaration | (otherlv_7= '(' this_Expression_8= ruleExpression otherlv_9= ')' ) )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:857:1: (this_Literal_0= ruleLiteral | this_NameOrChoiceOrBehaviorCall_1= ruleNameOrChoiceOrBehaviorCall | this_Interval_2= ruleInterval | this_CollectionOrTuple_3= ruleCollectionOrTuple | this_Tuple_4= ruleTuple | this_TimeExpression_5= ruleTimeExpression | this_VariableDeclaration_6= ruleVariableDeclaration | (otherlv_7= '(' this_Expression_8= ruleExpression otherlv_9= ')' ) )
+ int alt15=8;
+ alt15 = dfa15.predict(input);
+ switch (alt15) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:858:5: this_Literal_0= ruleLiteral
+ {
+
+ newCompositeNode(grammarAccess.getValueSpecificationAccess().getLiteralParserRuleCall_0());
+
+ pushFollow(FOLLOW_ruleLiteral_in_ruleValueSpecification1766);
+ this_Literal_0=ruleLiteral();
+
+ state._fsp--;
+
+
+ current = this_Literal_0;
+ afterParserOrEnumRuleCall();
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:868:5: this_NameOrChoiceOrBehaviorCall_1= ruleNameOrChoiceOrBehaviorCall
+ {
+
+ newCompositeNode(grammarAccess.getValueSpecificationAccess().getNameOrChoiceOrBehaviorCallParserRuleCall_1());
+
+ pushFollow(FOLLOW_ruleNameOrChoiceOrBehaviorCall_in_ruleValueSpecification1793);
+ this_NameOrChoiceOrBehaviorCall_1=ruleNameOrChoiceOrBehaviorCall();
+
+ state._fsp--;
+
+
+ current = this_NameOrChoiceOrBehaviorCall_1;
+ afterParserOrEnumRuleCall();
+
+
+ }
+ break;
+ case 3 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:878:5: this_Interval_2= ruleInterval
+ {
+
+ newCompositeNode(grammarAccess.getValueSpecificationAccess().getIntervalParserRuleCall_2());
+
+ pushFollow(FOLLOW_ruleInterval_in_ruleValueSpecification1820);
+ this_Interval_2=ruleInterval();
+
+ state._fsp--;
+
+
+ current = this_Interval_2;
+ afterParserOrEnumRuleCall();
+
+
+ }
+ break;
+ case 4 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:888:5: this_CollectionOrTuple_3= ruleCollectionOrTuple
+ {
+
+ newCompositeNode(grammarAccess.getValueSpecificationAccess().getCollectionOrTupleParserRuleCall_3());
+
+ pushFollow(FOLLOW_ruleCollectionOrTuple_in_ruleValueSpecification1847);
+ this_CollectionOrTuple_3=ruleCollectionOrTuple();
+
+ state._fsp--;
+
+
+ current = this_CollectionOrTuple_3;
+ afterParserOrEnumRuleCall();
+
+
+ }
+ break;
+ case 5 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:898:5: this_Tuple_4= ruleTuple
+ {
+
+ newCompositeNode(grammarAccess.getValueSpecificationAccess().getTupleParserRuleCall_4());
+
+ pushFollow(FOLLOW_ruleTuple_in_ruleValueSpecification1874);
+ this_Tuple_4=ruleTuple();
+
+ state._fsp--;
+
+
+ current = this_Tuple_4;
+ afterParserOrEnumRuleCall();
+
+
+ }
+ break;
+ case 6 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:908:5: this_TimeExpression_5= ruleTimeExpression
+ {
+
+ newCompositeNode(grammarAccess.getValueSpecificationAccess().getTimeExpressionParserRuleCall_5());
+
+ pushFollow(FOLLOW_ruleTimeExpression_in_ruleValueSpecification1901);
+ this_TimeExpression_5=ruleTimeExpression();
+
+ state._fsp--;
+
+
+ current = this_TimeExpression_5;
+ afterParserOrEnumRuleCall();
+
+
+ }
+ break;
+ case 7 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:918:5: this_VariableDeclaration_6= ruleVariableDeclaration
+ {
+
+ newCompositeNode(grammarAccess.getValueSpecificationAccess().getVariableDeclarationParserRuleCall_6());
+
+ pushFollow(FOLLOW_ruleVariableDeclaration_in_ruleValueSpecification1928);
+ this_VariableDeclaration_6=ruleVariableDeclaration();
+
+ state._fsp--;
+
+
+ current = this_VariableDeclaration_6;
+ afterParserOrEnumRuleCall();
+
+
+ }
+ break;
+ case 8 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:927:6: (otherlv_7= '(' this_Expression_8= ruleExpression otherlv_9= ')' )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:927:6: (otherlv_7= '(' this_Expression_8= ruleExpression otherlv_9= ')' )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:927:8: otherlv_7= '(' this_Expression_8= ruleExpression otherlv_9= ')'
+ {
+ otherlv_7=(Token)match(input,34,FOLLOW_34_in_ruleValueSpecification1946);
+
+ newLeafNode(otherlv_7, grammarAccess.getValueSpecificationAccess().getLeftParenthesisKeyword_7_0());
+
+
+ newCompositeNode(grammarAccess.getValueSpecificationAccess().getExpressionParserRuleCall_7_1());
+
+ pushFollow(FOLLOW_ruleExpression_in_ruleValueSpecification1968);
+ this_Expression_8=ruleExpression();
+
+ state._fsp--;
+
+
+ current = this_Expression_8;
+ afterParserOrEnumRuleCall();
+
+ otherlv_9=(Token)match(input,35,FOLLOW_35_in_ruleValueSpecification1979);
+
+ newLeafNode(otherlv_9, grammarAccess.getValueSpecificationAccess().getRightParenthesisKeyword_7_2());
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ leaveRule();
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "ruleValueSpecification"
+
+
+ // $ANTLR start "entryRuleSuffixExpression"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:952:1: entryRuleSuffixExpression returns [EObject current=null] : iv_ruleSuffixExpression= ruleSuffixExpression EOF ;
+ public final EObject entryRuleSuffixExpression() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleSuffixExpression = null;
+
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:953:2: (iv_ruleSuffixExpression= ruleSuffixExpression EOF )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:954:2: iv_ruleSuffixExpression= ruleSuffixExpression EOF
+ {
+ newCompositeNode(grammarAccess.getSuffixExpressionRule());
+ pushFollow(FOLLOW_ruleSuffixExpression_in_entryRuleSuffixExpression2016);
+ iv_ruleSuffixExpression=ruleSuffixExpression();
+
+ state._fsp--;
+
+ current =iv_ruleSuffixExpression;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleSuffixExpression2026);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "entryRuleSuffixExpression"
+
+
+ // $ANTLR start "ruleSuffixExpression"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:961:1: ruleSuffixExpression returns [EObject current=null] : (this_PropertyCallExpression_0= rulePropertyCallExpression | this_OperationCallExpression_1= ruleOperationCallExpression ) ;
+ public final EObject ruleSuffixExpression() throws RecognitionException {
+ EObject current = null;
+
+ EObject this_PropertyCallExpression_0 = null;
+
+ EObject this_OperationCallExpression_1 = null;
+
+
+ enterRule();
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:964:28: ( (this_PropertyCallExpression_0= rulePropertyCallExpression | this_OperationCallExpression_1= ruleOperationCallExpression ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:965:1: (this_PropertyCallExpression_0= rulePropertyCallExpression | this_OperationCallExpression_1= ruleOperationCallExpression )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:965:1: (this_PropertyCallExpression_0= rulePropertyCallExpression | this_OperationCallExpression_1= ruleOperationCallExpression )
+ int alt16=2;
+ int LA16_0 = input.LA(1);
+
+ if ( (LA16_0==RULE_ID) ) {
+ int LA16_1 = input.LA(2);
+
+ if ( (LA16_1==EOF||(LA16_1>=16 && LA16_1<=31)||LA16_1==33||LA16_1==35||(LA16_1>=37 && LA16_1<=39)||(LA16_1>=41 && LA16_1<=42)) ) {
+ alt16=1;
+ }
+ else if ( (LA16_1==34) ) {
+ alt16=2;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("", 16, 1, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("", 16, 0, input);
+
+ throw nvae;
+ }
+ switch (alt16) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:966:5: this_PropertyCallExpression_0= rulePropertyCallExpression
+ {
+
+ newCompositeNode(grammarAccess.getSuffixExpressionAccess().getPropertyCallExpressionParserRuleCall_0());
+
+ pushFollow(FOLLOW_rulePropertyCallExpression_in_ruleSuffixExpression2073);
+ this_PropertyCallExpression_0=rulePropertyCallExpression();
+
+ state._fsp--;
+
+
+ current = this_PropertyCallExpression_0;
+ afterParserOrEnumRuleCall();
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:976:5: this_OperationCallExpression_1= ruleOperationCallExpression
+ {
+
+ newCompositeNode(grammarAccess.getSuffixExpressionAccess().getOperationCallExpressionParserRuleCall_1());
+
+ pushFollow(FOLLOW_ruleOperationCallExpression_in_ruleSuffixExpression2100);
+ this_OperationCallExpression_1=ruleOperationCallExpression();
+
+ state._fsp--;
+
+
+ current = this_OperationCallExpression_1;
+ afterParserOrEnumRuleCall();
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ leaveRule();
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "ruleSuffixExpression"
+
+
+ // $ANTLR start "entryRulePropertyCallExpression"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:992:1: entryRulePropertyCallExpression returns [EObject current=null] : iv_rulePropertyCallExpression= rulePropertyCallExpression EOF ;
+ public final EObject entryRulePropertyCallExpression() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_rulePropertyCallExpression = null;
+
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:993:2: (iv_rulePropertyCallExpression= rulePropertyCallExpression EOF )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:994:2: iv_rulePropertyCallExpression= rulePropertyCallExpression EOF
+ {
+ newCompositeNode(grammarAccess.getPropertyCallExpressionRule());
+ pushFollow(FOLLOW_rulePropertyCallExpression_in_entryRulePropertyCallExpression2135);
+ iv_rulePropertyCallExpression=rulePropertyCallExpression();
+
+ state._fsp--;
+
+ current =iv_rulePropertyCallExpression;
+ match(input,EOF,FOLLOW_EOF_in_entryRulePropertyCallExpression2145);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "entryRulePropertyCallExpression"
+
+
+ // $ANTLR start "rulePropertyCallExpression"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1001:1: rulePropertyCallExpression returns [EObject current=null] : ( ( (otherlv_0= RULE_ID ) ) (otherlv_1= '.' ( (lv_suffix_2_0= ruleSuffixExpression ) ) )? ) ;
+ public final EObject rulePropertyCallExpression() throws RecognitionException {
+ EObject current = null;
+
+ Token otherlv_0=null;
+ Token otherlv_1=null;
+ EObject lv_suffix_2_0 = null;
+
+
+ enterRule();
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1004:28: ( ( ( (otherlv_0= RULE_ID ) ) (otherlv_1= '.' ( (lv_suffix_2_0= ruleSuffixExpression ) ) )? ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1005:1: ( ( (otherlv_0= RULE_ID ) ) (otherlv_1= '.' ( (lv_suffix_2_0= ruleSuffixExpression ) ) )? )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1005:1: ( ( (otherlv_0= RULE_ID ) ) (otherlv_1= '.' ( (lv_suffix_2_0= ruleSuffixExpression ) ) )? )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1005:2: ( (otherlv_0= RULE_ID ) ) (otherlv_1= '.' ( (lv_suffix_2_0= ruleSuffixExpression ) ) )?
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1005:2: ( (otherlv_0= RULE_ID ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1006:1: (otherlv_0= RULE_ID )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1006:1: (otherlv_0= RULE_ID )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1007:3: otherlv_0= RULE_ID
+ {
+
+ if (current==null) {
+ current = createModelElement(grammarAccess.getPropertyCallExpressionRule());
+ }
+
+ otherlv_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_rulePropertyCallExpression2190);
+
+ newLeafNode(otherlv_0, grammarAccess.getPropertyCallExpressionAccess().getPropertyPropertyCrossReference_0_0());
+
+
+ }
+
+
+ }
+
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1018:2: (otherlv_1= '.' ( (lv_suffix_2_0= ruleSuffixExpression ) ) )?
+ int alt17=2;
+ int LA17_0 = input.LA(1);
+
+ if ( (LA17_0==33) ) {
+ alt17=1;
+ }
+ switch (alt17) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1018:4: otherlv_1= '.' ( (lv_suffix_2_0= ruleSuffixExpression ) )
+ {
+ otherlv_1=(Token)match(input,33,FOLLOW_33_in_rulePropertyCallExpression2203);
+
+ newLeafNode(otherlv_1, grammarAccess.getPropertyCallExpressionAccess().getFullStopKeyword_1_0());
+
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1022:1: ( (lv_suffix_2_0= ruleSuffixExpression ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1023:1: (lv_suffix_2_0= ruleSuffixExpression )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1023:1: (lv_suffix_2_0= ruleSuffixExpression )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1024:3: lv_suffix_2_0= ruleSuffixExpression
+ {
+
+ newCompositeNode(grammarAccess.getPropertyCallExpressionAccess().getSuffixSuffixExpressionParserRuleCall_1_1_0());
+
+ pushFollow(FOLLOW_ruleSuffixExpression_in_rulePropertyCallExpression2224);
+ lv_suffix_2_0=ruleSuffixExpression();
+
+ state._fsp--;
+
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getPropertyCallExpressionRule());
+ }
+ set(
+ current,
+ "suffix",
+ lv_suffix_2_0,
+ "SuffixExpression");
+ afterParserOrEnumRuleCall();
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+
+ }
+
+ leaveRule();
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "rulePropertyCallExpression"
+
+
+ // $ANTLR start "entryRuleOperationCallExpression"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1048:1: entryRuleOperationCallExpression returns [EObject current=null] : iv_ruleOperationCallExpression= ruleOperationCallExpression EOF ;
+ public final EObject entryRuleOperationCallExpression() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleOperationCallExpression = null;
+
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1049:2: (iv_ruleOperationCallExpression= ruleOperationCallExpression EOF )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1050:2: iv_ruleOperationCallExpression= ruleOperationCallExpression EOF
+ {
+ newCompositeNode(grammarAccess.getOperationCallExpressionRule());
+ pushFollow(FOLLOW_ruleOperationCallExpression_in_entryRuleOperationCallExpression2262);
+ iv_ruleOperationCallExpression=ruleOperationCallExpression();
+
+ state._fsp--;
+
+ current =iv_ruleOperationCallExpression;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleOperationCallExpression2272);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "entryRuleOperationCallExpression"
+
+
+ // $ANTLR start "ruleOperationCallExpression"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1057:1: ruleOperationCallExpression returns [EObject current=null] : ( ( (otherlv_0= RULE_ID ) ) otherlv_1= '(' ( (lv_arguments_2_0= ruleListOfValues ) )? otherlv_3= ')' (otherlv_4= '.' ( (lv_suffix_5_0= ruleSuffixExpression ) ) )? ) ;
+ public final EObject ruleOperationCallExpression() throws RecognitionException {
+ EObject current = null;
+
+ Token otherlv_0=null;
+ Token otherlv_1=null;
+ Token otherlv_3=null;
+ Token otherlv_4=null;
+ EObject lv_arguments_2_0 = null;
+
+ EObject lv_suffix_5_0 = null;
+
+
+ enterRule();
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1060:28: ( ( ( (otherlv_0= RULE_ID ) ) otherlv_1= '(' ( (lv_arguments_2_0= ruleListOfValues ) )? otherlv_3= ')' (otherlv_4= '.' ( (lv_suffix_5_0= ruleSuffixExpression ) ) )? ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1061:1: ( ( (otherlv_0= RULE_ID ) ) otherlv_1= '(' ( (lv_arguments_2_0= ruleListOfValues ) )? otherlv_3= ')' (otherlv_4= '.' ( (lv_suffix_5_0= ruleSuffixExpression ) ) )? )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1061:1: ( ( (otherlv_0= RULE_ID ) ) otherlv_1= '(' ( (lv_arguments_2_0= ruleListOfValues ) )? otherlv_3= ')' (otherlv_4= '.' ( (lv_suffix_5_0= ruleSuffixExpression ) ) )? )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1061:2: ( (otherlv_0= RULE_ID ) ) otherlv_1= '(' ( (lv_arguments_2_0= ruleListOfValues ) )? otherlv_3= ')' (otherlv_4= '.' ( (lv_suffix_5_0= ruleSuffixExpression ) ) )?
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1061:2: ( (otherlv_0= RULE_ID ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1062:1: (otherlv_0= RULE_ID )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1062:1: (otherlv_0= RULE_ID )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1063:3: otherlv_0= RULE_ID
+ {
+
+ if (current==null) {
+ current = createModelElement(grammarAccess.getOperationCallExpressionRule());
+ }
+
+ otherlv_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleOperationCallExpression2317);
+
+ newLeafNode(otherlv_0, grammarAccess.getOperationCallExpressionAccess().getOperationOperationCrossReference_0_0());
+
+
+ }
+
+
+ }
+
+ otherlv_1=(Token)match(input,34,FOLLOW_34_in_ruleOperationCallExpression2329);
+
+ newLeafNode(otherlv_1, grammarAccess.getOperationCallExpressionAccess().getLeftParenthesisKeyword_1());
+
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1078:1: ( (lv_arguments_2_0= ruleListOfValues ) )?
+ int alt18=2;
+ int LA18_0 = input.LA(1);
+
+ if ( ((LA18_0>=RULE_ID && LA18_0<=RULE_STRING)||(LA18_0>=27 && LA18_0<=30)||LA18_0==32||LA18_0==34||(LA18_0>=37 && LA18_0<=38)||LA18_0==40||LA18_0==44||(LA18_0>=46 && LA18_0<=51)) ) {
+ alt18=1;
+ }
+ switch (alt18) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1079:1: (lv_arguments_2_0= ruleListOfValues )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1079:1: (lv_arguments_2_0= ruleListOfValues )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1080:3: lv_arguments_2_0= ruleListOfValues
+ {
+
+ newCompositeNode(grammarAccess.getOperationCallExpressionAccess().getArgumentsListOfValuesParserRuleCall_2_0());
+
+ pushFollow(FOLLOW_ruleListOfValues_in_ruleOperationCallExpression2350);
+ lv_arguments_2_0=ruleListOfValues();
+
+ state._fsp--;
+
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getOperationCallExpressionRule());
+ }
+ set(
+ current,
+ "arguments",
+ lv_arguments_2_0,
+ "ListOfValues");
+ afterParserOrEnumRuleCall();
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+ otherlv_3=(Token)match(input,35,FOLLOW_35_in_ruleOperationCallExpression2363);
+
+ newLeafNode(otherlv_3, grammarAccess.getOperationCallExpressionAccess().getRightParenthesisKeyword_3());
+
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1100:1: (otherlv_4= '.' ( (lv_suffix_5_0= ruleSuffixExpression ) ) )?
+ int alt19=2;
+ int LA19_0 = input.LA(1);
+
+ if ( (LA19_0==33) ) {
+ alt19=1;
+ }
+ switch (alt19) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1100:3: otherlv_4= '.' ( (lv_suffix_5_0= ruleSuffixExpression ) )
+ {
+ otherlv_4=(Token)match(input,33,FOLLOW_33_in_ruleOperationCallExpression2376);
+
+ newLeafNode(otherlv_4, grammarAccess.getOperationCallExpressionAccess().getFullStopKeyword_4_0());
+
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1104:1: ( (lv_suffix_5_0= ruleSuffixExpression ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1105:1: (lv_suffix_5_0= ruleSuffixExpression )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1105:1: (lv_suffix_5_0= ruleSuffixExpression )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1106:3: lv_suffix_5_0= ruleSuffixExpression
+ {
+
+ newCompositeNode(grammarAccess.getOperationCallExpressionAccess().getSuffixSuffixExpressionParserRuleCall_4_1_0());
+
+ pushFollow(FOLLOW_ruleSuffixExpression_in_ruleOperationCallExpression2397);
+ lv_suffix_5_0=ruleSuffixExpression();
+
+ state._fsp--;
+
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getOperationCallExpressionRule());
+ }
+ set(
+ current,
+ "suffix",
+ lv_suffix_5_0,
+ "SuffixExpression");
+ afterParserOrEnumRuleCall();
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+
+ }
+
+ leaveRule();
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "ruleOperationCallExpression"
+
+
+ // $ANTLR start "entryRuleLiteral"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1130:1: entryRuleLiteral returns [EObject current=null] : iv_ruleLiteral= ruleLiteral EOF ;
+ public final EObject entryRuleLiteral() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleLiteral = null;
+
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1131:2: (iv_ruleLiteral= ruleLiteral EOF )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1132:2: iv_ruleLiteral= ruleLiteral EOF
+ {
+ newCompositeNode(grammarAccess.getLiteralRule());
+ pushFollow(FOLLOW_ruleLiteral_in_entryRuleLiteral2435);
+ iv_ruleLiteral=ruleLiteral();
+
+ state._fsp--;
+
+ current =iv_ruleLiteral;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleLiteral2445);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "entryRuleLiteral"
+
+
+ // $ANTLR start "ruleLiteral"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1139:1: ruleLiteral returns [EObject current=null] : (this_NumberLiteralRule_0= ruleNumberLiteralRule | this_DateTimeLiteralRule_1= ruleDateTimeLiteralRule | this_BooleanLiteralRule_2= ruleBooleanLiteralRule | this_NullLiteralRule_3= ruleNullLiteralRule | this_DefaultLiteralRule_4= ruleDefaultLiteralRule | this_StringLiteralRule_5= ruleStringLiteralRule ) ;
+ public final EObject ruleLiteral() throws RecognitionException {
+ EObject current = null;
+
+ EObject this_NumberLiteralRule_0 = null;
+
+ EObject this_DateTimeLiteralRule_1 = null;
+
+ EObject this_BooleanLiteralRule_2 = null;
+
+ EObject this_NullLiteralRule_3 = null;
+
+ EObject this_DefaultLiteralRule_4 = null;
+
+ EObject this_StringLiteralRule_5 = null;
+
+
+ enterRule();
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1142:28: ( (this_NumberLiteralRule_0= ruleNumberLiteralRule | this_DateTimeLiteralRule_1= ruleDateTimeLiteralRule | this_BooleanLiteralRule_2= ruleBooleanLiteralRule | this_NullLiteralRule_3= ruleNullLiteralRule | this_DefaultLiteralRule_4= ruleDefaultLiteralRule | this_StringLiteralRule_5= ruleStringLiteralRule ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1143:1: (this_NumberLiteralRule_0= ruleNumberLiteralRule | this_DateTimeLiteralRule_1= ruleDateTimeLiteralRule | this_BooleanLiteralRule_2= ruleBooleanLiteralRule | this_NullLiteralRule_3= ruleNullLiteralRule | this_DefaultLiteralRule_4= ruleDefaultLiteralRule | this_StringLiteralRule_5= ruleStringLiteralRule )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1143:1: (this_NumberLiteralRule_0= ruleNumberLiteralRule | this_DateTimeLiteralRule_1= ruleDateTimeLiteralRule | this_BooleanLiteralRule_2= ruleBooleanLiteralRule | this_NullLiteralRule_3= ruleNullLiteralRule | this_DefaultLiteralRule_4= ruleDefaultLiteralRule | this_StringLiteralRule_5= ruleStringLiteralRule )
+ int alt20=6;
+ switch ( input.LA(1) ) {
+ case RULE_INTEGERLITERAL:
+ case RULE_REALLITERAL:
+ case 29:
+ {
+ alt20=1;
+ }
+ break;
+ case RULE_DATETIMELITERAL:
+ {
+ alt20=2;
+ }
+ break;
+ case RULE_BOOLEANLITERAL:
+ {
+ alt20=3;
+ }
+ break;
+ case RULE_NULLLITERAL:
+ {
+ alt20=4;
+ }
+ break;
+ case 30:
+ {
+ alt20=5;
+ }
+ break;
+ case RULE_STRING:
+ {
+ alt20=6;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("", 20, 0, input);
+
+ throw nvae;
+ }
+
+ switch (alt20) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1144:5: this_NumberLiteralRule_0= ruleNumberLiteralRule
+ {
+
+ newCompositeNode(grammarAccess.getLiteralAccess().getNumberLiteralRuleParserRuleCall_0());
+
+ pushFollow(FOLLOW_ruleNumberLiteralRule_in_ruleLiteral2492);
+ this_NumberLiteralRule_0=ruleNumberLiteralRule();
+
+ state._fsp--;
+
+
+ current = this_NumberLiteralRule_0;
+ afterParserOrEnumRuleCall();
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1154:5: this_DateTimeLiteralRule_1= ruleDateTimeLiteralRule
+ {
+
+ newCompositeNode(grammarAccess.getLiteralAccess().getDateTimeLiteralRuleParserRuleCall_1());
+
+ pushFollow(FOLLOW_ruleDateTimeLiteralRule_in_ruleLiteral2519);
+ this_DateTimeLiteralRule_1=ruleDateTimeLiteralRule();
+
+ state._fsp--;
+
+
+ current = this_DateTimeLiteralRule_1;
+ afterParserOrEnumRuleCall();
+
+
+ }
+ break;
+ case 3 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1164:5: this_BooleanLiteralRule_2= ruleBooleanLiteralRule
+ {
+
+ newCompositeNode(grammarAccess.getLiteralAccess().getBooleanLiteralRuleParserRuleCall_2());
+
+ pushFollow(FOLLOW_ruleBooleanLiteralRule_in_ruleLiteral2546);
+ this_BooleanLiteralRule_2=ruleBooleanLiteralRule();
+
+ state._fsp--;
+
+
+ current = this_BooleanLiteralRule_2;
+ afterParserOrEnumRuleCall();
+
+
+ }
+ break;
+ case 4 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1174:5: this_NullLiteralRule_3= ruleNullLiteralRule
+ {
+
+ newCompositeNode(grammarAccess.getLiteralAccess().getNullLiteralRuleParserRuleCall_3());
+
+ pushFollow(FOLLOW_ruleNullLiteralRule_in_ruleLiteral2573);
+ this_NullLiteralRule_3=ruleNullLiteralRule();
+
+ state._fsp--;
+
+
+ current = this_NullLiteralRule_3;
+ afterParserOrEnumRuleCall();
+
+
+ }
+ break;
+ case 5 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1184:5: this_DefaultLiteralRule_4= ruleDefaultLiteralRule
+ {
+
+ newCompositeNode(grammarAccess.getLiteralAccess().getDefaultLiteralRuleParserRuleCall_4());
+
+ pushFollow(FOLLOW_ruleDefaultLiteralRule_in_ruleLiteral2600);
+ this_DefaultLiteralRule_4=ruleDefaultLiteralRule();
+
+ state._fsp--;
+
+
+ current = this_DefaultLiteralRule_4;
+ afterParserOrEnumRuleCall();
+
+
+ }
+ break;
+ case 6 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1194:5: this_StringLiteralRule_5= ruleStringLiteralRule
+ {
+
+ newCompositeNode(grammarAccess.getLiteralAccess().getStringLiteralRuleParserRuleCall_5());
+
+ pushFollow(FOLLOW_ruleStringLiteralRule_in_ruleLiteral2627);
+ this_StringLiteralRule_5=ruleStringLiteralRule();
+
+ state._fsp--;
+
+
+ current = this_StringLiteralRule_5;
+ afterParserOrEnumRuleCall();
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ leaveRule();
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "ruleLiteral"
+
+
+ // $ANTLR start "entryRuleNameOrChoiceOrBehaviorCall"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1210:1: entryRuleNameOrChoiceOrBehaviorCall returns [EObject current=null] : iv_ruleNameOrChoiceOrBehaviorCall= ruleNameOrChoiceOrBehaviorCall EOF ;
+ public final EObject entryRuleNameOrChoiceOrBehaviorCall() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleNameOrChoiceOrBehaviorCall = null;
+
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1211:2: (iv_ruleNameOrChoiceOrBehaviorCall= ruleNameOrChoiceOrBehaviorCall EOF )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1212:2: iv_ruleNameOrChoiceOrBehaviorCall= ruleNameOrChoiceOrBehaviorCall EOF
+ {
+ newCompositeNode(grammarAccess.getNameOrChoiceOrBehaviorCallRule());
+ pushFollow(FOLLOW_ruleNameOrChoiceOrBehaviorCall_in_entryRuleNameOrChoiceOrBehaviorCall2662);
+ iv_ruleNameOrChoiceOrBehaviorCall=ruleNameOrChoiceOrBehaviorCall();
+
+ state._fsp--;
+
+ current =iv_ruleNameOrChoiceOrBehaviorCall;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleNameOrChoiceOrBehaviorCall2672);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "entryRuleNameOrChoiceOrBehaviorCall"
+
+
+ // $ANTLR start "ruleNameOrChoiceOrBehaviorCall"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1219:1: ruleNameOrChoiceOrBehaviorCall returns [EObject current=null] : ( ( (lv_path_0_0= ruleQualifiedName ) )? ( (otherlv_1= RULE_ID ) ) (otherlv_2= '(' ( (lv_arguments_3_0= ruleListOfValues ) )? otherlv_4= ')' )? ) ;
+ public final EObject ruleNameOrChoiceOrBehaviorCall() throws RecognitionException {
+ EObject current = null;
+
+ Token otherlv_1=null;
+ Token otherlv_2=null;
+ Token otherlv_4=null;
+ EObject lv_path_0_0 = null;
+
+ EObject lv_arguments_3_0 = null;
+
+
+ enterRule();
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1222:28: ( ( ( (lv_path_0_0= ruleQualifiedName ) )? ( (otherlv_1= RULE_ID ) ) (otherlv_2= '(' ( (lv_arguments_3_0= ruleListOfValues ) )? otherlv_4= ')' )? ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1223:1: ( ( (lv_path_0_0= ruleQualifiedName ) )? ( (otherlv_1= RULE_ID ) ) (otherlv_2= '(' ( (lv_arguments_3_0= ruleListOfValues ) )? otherlv_4= ')' )? )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1223:1: ( ( (lv_path_0_0= ruleQualifiedName ) )? ( (otherlv_1= RULE_ID ) ) (otherlv_2= '(' ( (lv_arguments_3_0= ruleListOfValues ) )? otherlv_4= ')' )? )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1223:2: ( (lv_path_0_0= ruleQualifiedName ) )? ( (otherlv_1= RULE_ID ) ) (otherlv_2= '(' ( (lv_arguments_3_0= ruleListOfValues ) )? otherlv_4= ')' )?
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1223:2: ( (lv_path_0_0= ruleQualifiedName ) )?
+ int alt21=2;
+ int LA21_0 = input.LA(1);
+
+ if ( (LA21_0==RULE_ID) ) {
+ int LA21_1 = input.LA(2);
+
+ if ( (LA21_1==36) ) {
+ alt21=1;
+ }
+ }
+ switch (alt21) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1224:1: (lv_path_0_0= ruleQualifiedName )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1224:1: (lv_path_0_0= ruleQualifiedName )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1225:3: lv_path_0_0= ruleQualifiedName
+ {
+
+ newCompositeNode(grammarAccess.getNameOrChoiceOrBehaviorCallAccess().getPathQualifiedNameParserRuleCall_0_0());
+
+ pushFollow(FOLLOW_ruleQualifiedName_in_ruleNameOrChoiceOrBehaviorCall2718);
+ lv_path_0_0=ruleQualifiedName();
+
+ state._fsp--;
+
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getNameOrChoiceOrBehaviorCallRule());
+ }
+ set(
+ current,
+ "path",
+ lv_path_0_0,
+ "QualifiedName");
+ afterParserOrEnumRuleCall();
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1241:3: ( (otherlv_1= RULE_ID ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1242:1: (otherlv_1= RULE_ID )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1242:1: (otherlv_1= RULE_ID )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1243:3: otherlv_1= RULE_ID
+ {
+
+ if (current==null) {
+ current = createModelElement(grammarAccess.getNameOrChoiceOrBehaviorCallRule());
+ }
+
+ otherlv_1=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleNameOrChoiceOrBehaviorCall2739);
+
+ newLeafNode(otherlv_1, grammarAccess.getNameOrChoiceOrBehaviorCallAccess().getIdNamedElementCrossReference_1_0());
+
+
+ }
+
+
+ }
+
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1254:2: (otherlv_2= '(' ( (lv_arguments_3_0= ruleListOfValues ) )? otherlv_4= ')' )?
+ int alt23=2;
+ int LA23_0 = input.LA(1);
+
+ if ( (LA23_0==34) ) {
+ alt23=1;
+ }
+ switch (alt23) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1254:4: otherlv_2= '(' ( (lv_arguments_3_0= ruleListOfValues ) )? otherlv_4= ')'
+ {
+ otherlv_2=(Token)match(input,34,FOLLOW_34_in_ruleNameOrChoiceOrBehaviorCall2752);
+
+ newLeafNode(otherlv_2, grammarAccess.getNameOrChoiceOrBehaviorCallAccess().getLeftParenthesisKeyword_2_0());
+
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1258:1: ( (lv_arguments_3_0= ruleListOfValues ) )?
+ int alt22=2;
+ int LA22_0 = input.LA(1);
+
+ if ( ((LA22_0>=RULE_ID && LA22_0<=RULE_STRING)||(LA22_0>=27 && LA22_0<=30)||LA22_0==32||LA22_0==34||(LA22_0>=37 && LA22_0<=38)||LA22_0==40||LA22_0==44||(LA22_0>=46 && LA22_0<=51)) ) {
+ alt22=1;
+ }
+ switch (alt22) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1259:1: (lv_arguments_3_0= ruleListOfValues )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1259:1: (lv_arguments_3_0= ruleListOfValues )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1260:3: lv_arguments_3_0= ruleListOfValues
+ {
+
+ newCompositeNode(grammarAccess.getNameOrChoiceOrBehaviorCallAccess().getArgumentsListOfValuesParserRuleCall_2_1_0());
+
+ pushFollow(FOLLOW_ruleListOfValues_in_ruleNameOrChoiceOrBehaviorCall2773);
+ lv_arguments_3_0=ruleListOfValues();
+
+ state._fsp--;
+
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getNameOrChoiceOrBehaviorCallRule());
+ }
+ set(
+ current,
+ "arguments",
+ lv_arguments_3_0,
+ "ListOfValues");
+ afterParserOrEnumRuleCall();
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+ otherlv_4=(Token)match(input,35,FOLLOW_35_in_ruleNameOrChoiceOrBehaviorCall2786);
+
+ newLeafNode(otherlv_4, grammarAccess.getNameOrChoiceOrBehaviorCallAccess().getRightParenthesisKeyword_2_2());
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+
+ }
+
+ leaveRule();
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "ruleNameOrChoiceOrBehaviorCall"
+
+
+ // $ANTLR start "entryRuleQualifiedName"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1288:1: entryRuleQualifiedName returns [EObject current=null] : iv_ruleQualifiedName= ruleQualifiedName EOF ;
+ public final EObject entryRuleQualifiedName() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleQualifiedName = null;
+
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1289:2: (iv_ruleQualifiedName= ruleQualifiedName EOF )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1290:2: iv_ruleQualifiedName= ruleQualifiedName EOF
+ {
+ newCompositeNode(grammarAccess.getQualifiedNameRule());
+ pushFollow(FOLLOW_ruleQualifiedName_in_entryRuleQualifiedName2824);
+ iv_ruleQualifiedName=ruleQualifiedName();
+
+ state._fsp--;
+
+ current =iv_ruleQualifiedName;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleQualifiedName2834);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "entryRuleQualifiedName"
+
+
+ // $ANTLR start "ruleQualifiedName"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1297:1: ruleQualifiedName returns [EObject current=null] : ( ( (otherlv_0= RULE_ID ) ) otherlv_1= '::' ( (lv_remaining_2_0= ruleQualifiedName ) )? ) ;
+ public final EObject ruleQualifiedName() throws RecognitionException {
+ EObject current = null;
+
+ Token otherlv_0=null;
+ Token otherlv_1=null;
+ EObject lv_remaining_2_0 = null;
+
+
+ enterRule();
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1300:28: ( ( ( (otherlv_0= RULE_ID ) ) otherlv_1= '::' ( (lv_remaining_2_0= ruleQualifiedName ) )? ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1301:1: ( ( (otherlv_0= RULE_ID ) ) otherlv_1= '::' ( (lv_remaining_2_0= ruleQualifiedName ) )? )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1301:1: ( ( (otherlv_0= RULE_ID ) ) otherlv_1= '::' ( (lv_remaining_2_0= ruleQualifiedName ) )? )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1301:2: ( (otherlv_0= RULE_ID ) ) otherlv_1= '::' ( (lv_remaining_2_0= ruleQualifiedName ) )?
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1301:2: ( (otherlv_0= RULE_ID ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1302:1: (otherlv_0= RULE_ID )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1302:1: (otherlv_0= RULE_ID )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1303:3: otherlv_0= RULE_ID
+ {
+
+ if (current==null) {
+ current = createModelElement(grammarAccess.getQualifiedNameRule());
+ }
+
+ otherlv_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleQualifiedName2879);
+
+ newLeafNode(otherlv_0, grammarAccess.getQualifiedNameAccess().getPathNamespaceCrossReference_0_0());
+
+
+ }
+
+
+ }
+
+ otherlv_1=(Token)match(input,36,FOLLOW_36_in_ruleQualifiedName2891);
+
+ newLeafNode(otherlv_1, grammarAccess.getQualifiedNameAccess().getColonColonKeyword_1());
+
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1318:1: ( (lv_remaining_2_0= ruleQualifiedName ) )?
+ int alt24=2;
+ int LA24_0 = input.LA(1);
+
+ if ( (LA24_0==RULE_ID) ) {
+ int LA24_1 = input.LA(2);
+
+ if ( (LA24_1==36) ) {
+ alt24=1;
+ }
+ }
+ switch (alt24) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1319:1: (lv_remaining_2_0= ruleQualifiedName )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1319:1: (lv_remaining_2_0= ruleQualifiedName )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1320:3: lv_remaining_2_0= ruleQualifiedName
+ {
+
+ newCompositeNode(grammarAccess.getQualifiedNameAccess().getRemainingQualifiedNameParserRuleCall_2_0());
+
+ pushFollow(FOLLOW_ruleQualifiedName_in_ruleQualifiedName2912);
+ lv_remaining_2_0=ruleQualifiedName();
+
+ state._fsp--;
+
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getQualifiedNameRule());
+ }
+ set(
+ current,
+ "remaining",
+ lv_remaining_2_0,
+ "QualifiedName");
+ afterParserOrEnumRuleCall();
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+
+ }
+
+ leaveRule();
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "ruleQualifiedName"
+
+
+ // $ANTLR start "entryRuleInterval"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1344:1: entryRuleInterval returns [EObject current=null] : iv_ruleInterval= ruleInterval EOF ;
+ public final EObject entryRuleInterval() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleInterval = null;
+
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1345:2: (iv_ruleInterval= ruleInterval EOF )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1346:2: iv_ruleInterval= ruleInterval EOF
+ {
+ newCompositeNode(grammarAccess.getIntervalRule());
+ pushFollow(FOLLOW_ruleInterval_in_entryRuleInterval2949);
+ iv_ruleInterval=ruleInterval();
+
+ state._fsp--;
+
+ current =iv_ruleInterval;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleInterval2959);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "entryRuleInterval"
+
+
+ // $ANTLR start "ruleInterval"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1353:1: ruleInterval returns [EObject current=null] : ( (otherlv_0= ']' | ( (lv_isLowerIncluded_1_0= '[' ) ) ) ( (lv_lower_2_0= ruleExpression ) ) otherlv_3= '..' ( (lv_upper_4_0= ruleExpression ) ) ( ( (lv_isUpperIncluded_5_0= ']' ) ) | otherlv_6= '[' ) ) ;
+ public final EObject ruleInterval() throws RecognitionException {
+ EObject current = null;
+
+ Token otherlv_0=null;
+ Token lv_isLowerIncluded_1_0=null;
+ Token otherlv_3=null;
+ Token lv_isUpperIncluded_5_0=null;
+ Token otherlv_6=null;
+ EObject lv_lower_2_0 = null;
+
+ EObject lv_upper_4_0 = null;
+
+
+ enterRule();
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1356:28: ( ( (otherlv_0= ']' | ( (lv_isLowerIncluded_1_0= '[' ) ) ) ( (lv_lower_2_0= ruleExpression ) ) otherlv_3= '..' ( (lv_upper_4_0= ruleExpression ) ) ( ( (lv_isUpperIncluded_5_0= ']' ) ) | otherlv_6= '[' ) ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1357:1: ( (otherlv_0= ']' | ( (lv_isLowerIncluded_1_0= '[' ) ) ) ( (lv_lower_2_0= ruleExpression ) ) otherlv_3= '..' ( (lv_upper_4_0= ruleExpression ) ) ( ( (lv_isUpperIncluded_5_0= ']' ) ) | otherlv_6= '[' ) )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1357:1: ( (otherlv_0= ']' | ( (lv_isLowerIncluded_1_0= '[' ) ) ) ( (lv_lower_2_0= ruleExpression ) ) otherlv_3= '..' ( (lv_upper_4_0= ruleExpression ) ) ( ( (lv_isUpperIncluded_5_0= ']' ) ) | otherlv_6= '[' ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1357:2: (otherlv_0= ']' | ( (lv_isLowerIncluded_1_0= '[' ) ) ) ( (lv_lower_2_0= ruleExpression ) ) otherlv_3= '..' ( (lv_upper_4_0= ruleExpression ) ) ( ( (lv_isUpperIncluded_5_0= ']' ) ) | otherlv_6= '[' )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1357:2: (otherlv_0= ']' | ( (lv_isLowerIncluded_1_0= '[' ) ) )
+ int alt25=2;
+ int LA25_0 = input.LA(1);
+
+ if ( (LA25_0==37) ) {
+ alt25=1;
+ }
+ else if ( (LA25_0==38) ) {
+ alt25=2;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("", 25, 0, input);
+
+ throw nvae;
+ }
+ switch (alt25) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1357:4: otherlv_0= ']'
+ {
+ otherlv_0=(Token)match(input,37,FOLLOW_37_in_ruleInterval2997);
+
+ newLeafNode(otherlv_0, grammarAccess.getIntervalAccess().getRightSquareBracketKeyword_0_0());
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1362:6: ( (lv_isLowerIncluded_1_0= '[' ) )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1362:6: ( (lv_isLowerIncluded_1_0= '[' ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1363:1: (lv_isLowerIncluded_1_0= '[' )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1363:1: (lv_isLowerIncluded_1_0= '[' )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1364:3: lv_isLowerIncluded_1_0= '['
+ {
+ lv_isLowerIncluded_1_0=(Token)match(input,38,FOLLOW_38_in_ruleInterval3021);
+
+ newLeafNode(lv_isLowerIncluded_1_0, grammarAccess.getIntervalAccess().getIsLowerIncludedLeftSquareBracketKeyword_0_1_0());
+
+
+ if (current==null) {
+ current = createModelElement(grammarAccess.getIntervalRule());
+ }
+ setWithLastConsumed(current, "isLowerIncluded", lv_isLowerIncluded_1_0, "[");
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1377:3: ( (lv_lower_2_0= ruleExpression ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1378:1: (lv_lower_2_0= ruleExpression )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1378:1: (lv_lower_2_0= ruleExpression )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1379:3: lv_lower_2_0= ruleExpression
+ {
+
+ newCompositeNode(grammarAccess.getIntervalAccess().getLowerExpressionParserRuleCall_1_0());
+
+ pushFollow(FOLLOW_ruleExpression_in_ruleInterval3056);
+ lv_lower_2_0=ruleExpression();
+
+ state._fsp--;
+
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getIntervalRule());
+ }
+ set(
+ current,
+ "lower",
+ lv_lower_2_0,
+ "Expression");
+ afterParserOrEnumRuleCall();
+
+
+ }
+
+
+ }
+
+ otherlv_3=(Token)match(input,39,FOLLOW_39_in_ruleInterval3068);
+
+ newLeafNode(otherlv_3, grammarAccess.getIntervalAccess().getFullStopFullStopKeyword_2());
+
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1399:1: ( (lv_upper_4_0= ruleExpression ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1400:1: (lv_upper_4_0= ruleExpression )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1400:1: (lv_upper_4_0= ruleExpression )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1401:3: lv_upper_4_0= ruleExpression
+ {
+
+ newCompositeNode(grammarAccess.getIntervalAccess().getUpperExpressionParserRuleCall_3_0());
+
+ pushFollow(FOLLOW_ruleExpression_in_ruleInterval3089);
+ lv_upper_4_0=ruleExpression();
+
+ state._fsp--;
+
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getIntervalRule());
+ }
+ set(
+ current,
+ "upper",
+ lv_upper_4_0,
+ "Expression");
+ afterParserOrEnumRuleCall();
+
+
+ }
+
+
+ }
+
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1417:2: ( ( (lv_isUpperIncluded_5_0= ']' ) ) | otherlv_6= '[' )
+ int alt26=2;
+ int LA26_0 = input.LA(1);
+
+ if ( (LA26_0==37) ) {
+ alt26=1;
+ }
+ else if ( (LA26_0==38) ) {
+ alt26=2;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("", 26, 0, input);
+
+ throw nvae;
+ }
+ switch (alt26) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1417:3: ( (lv_isUpperIncluded_5_0= ']' ) )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1417:3: ( (lv_isUpperIncluded_5_0= ']' ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1418:1: (lv_isUpperIncluded_5_0= ']' )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1418:1: (lv_isUpperIncluded_5_0= ']' )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1419:3: lv_isUpperIncluded_5_0= ']'
+ {
+ lv_isUpperIncluded_5_0=(Token)match(input,37,FOLLOW_37_in_ruleInterval3108);
+
+ newLeafNode(lv_isUpperIncluded_5_0, grammarAccess.getIntervalAccess().getIsUpperIncludedRightSquareBracketKeyword_4_0_0());
+
+
+ if (current==null) {
+ current = createModelElement(grammarAccess.getIntervalRule());
+ }
+ setWithLastConsumed(current, "isUpperIncluded", lv_isUpperIncluded_5_0, "]");
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1433:7: otherlv_6= '['
+ {
+ otherlv_6=(Token)match(input,38,FOLLOW_38_in_ruleInterval3139);
+
+ newLeafNode(otherlv_6, grammarAccess.getIntervalAccess().getLeftSquareBracketKeyword_4_1());
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+
+ }
+
+ leaveRule();
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "ruleInterval"
+
+
+ // $ANTLR start "entryRuleCollectionOrTuple"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1445:1: entryRuleCollectionOrTuple returns [EObject current=null] : iv_ruleCollectionOrTuple= ruleCollectionOrTuple EOF ;
+ public final EObject entryRuleCollectionOrTuple() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleCollectionOrTuple = null;
+
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1446:2: (iv_ruleCollectionOrTuple= ruleCollectionOrTuple EOF )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1447:2: iv_ruleCollectionOrTuple= ruleCollectionOrTuple EOF
+ {
+ newCompositeNode(grammarAccess.getCollectionOrTupleRule());
+ pushFollow(FOLLOW_ruleCollectionOrTuple_in_entryRuleCollectionOrTuple3176);
+ iv_ruleCollectionOrTuple=ruleCollectionOrTuple();
+
+ state._fsp--;
+
+ current =iv_ruleCollectionOrTuple;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleCollectionOrTuple3186);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "entryRuleCollectionOrTuple"
+
+
+ // $ANTLR start "ruleCollectionOrTuple"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1454:1: ruleCollectionOrTuple returns [EObject current=null] : (otherlv_0= '{' ( (lv_listOfValues_1_0= ruleListOfValues ) ) otherlv_2= '}' ) ;
+ public final EObject ruleCollectionOrTuple() throws RecognitionException {
+ EObject current = null;
+
+ Token otherlv_0=null;
+ Token otherlv_2=null;
+ EObject lv_listOfValues_1_0 = null;
+
+
+ enterRule();
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1457:28: ( (otherlv_0= '{' ( (lv_listOfValues_1_0= ruleListOfValues ) ) otherlv_2= '}' ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1458:1: (otherlv_0= '{' ( (lv_listOfValues_1_0= ruleListOfValues ) ) otherlv_2= '}' )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1458:1: (otherlv_0= '{' ( (lv_listOfValues_1_0= ruleListOfValues ) ) otherlv_2= '}' )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1458:3: otherlv_0= '{' ( (lv_listOfValues_1_0= ruleListOfValues ) ) otherlv_2= '}'
+ {
+ otherlv_0=(Token)match(input,40,FOLLOW_40_in_ruleCollectionOrTuple3223);
+
+ newLeafNode(otherlv_0, grammarAccess.getCollectionOrTupleAccess().getLeftCurlyBracketKeyword_0());
+
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1462:1: ( (lv_listOfValues_1_0= ruleListOfValues ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1463:1: (lv_listOfValues_1_0= ruleListOfValues )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1463:1: (lv_listOfValues_1_0= ruleListOfValues )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1464:3: lv_listOfValues_1_0= ruleListOfValues
+ {
+
+ newCompositeNode(grammarAccess.getCollectionOrTupleAccess().getListOfValuesListOfValuesParserRuleCall_1_0());
+
+ pushFollow(FOLLOW_ruleListOfValues_in_ruleCollectionOrTuple3244);
+ lv_listOfValues_1_0=ruleListOfValues();
+
+ state._fsp--;
+
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getCollectionOrTupleRule());
+ }
+ set(
+ current,
+ "listOfValues",
+ lv_listOfValues_1_0,
+ "ListOfValues");
+ afterParserOrEnumRuleCall();
+
+
+ }
+
+
+ }
+
+ otherlv_2=(Token)match(input,41,FOLLOW_41_in_ruleCollectionOrTuple3256);
+
+ newLeafNode(otherlv_2, grammarAccess.getCollectionOrTupleAccess().getRightCurlyBracketKeyword_2());
+
+
+ }
+
+
+ }
+
+ leaveRule();
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "ruleCollectionOrTuple"
+
+
+ // $ANTLR start "entryRuleTuple"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1492:1: entryRuleTuple returns [EObject current=null] : iv_ruleTuple= ruleTuple EOF ;
+ public final EObject entryRuleTuple() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleTuple = null;
+
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1493:2: (iv_ruleTuple= ruleTuple EOF )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1494:2: iv_ruleTuple= ruleTuple EOF
+ {
+ newCompositeNode(grammarAccess.getTupleRule());
+ pushFollow(FOLLOW_ruleTuple_in_entryRuleTuple3292);
+ iv_ruleTuple=ruleTuple();
+
+ state._fsp--;
+
+ current =iv_ruleTuple;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleTuple3302);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "entryRuleTuple"
+
+
+ // $ANTLR start "ruleTuple"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1501:1: ruleTuple returns [EObject current=null] : (otherlv_0= '{' ( (lv_listOfValueNamePairs_1_0= ruleListOfValueNamePairs ) ) otherlv_2= '}' ) ;
+ public final EObject ruleTuple() throws RecognitionException {
+ EObject current = null;
+
+ Token otherlv_0=null;
+ Token otherlv_2=null;
+ EObject lv_listOfValueNamePairs_1_0 = null;
+
+
+ enterRule();
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1504:28: ( (otherlv_0= '{' ( (lv_listOfValueNamePairs_1_0= ruleListOfValueNamePairs ) ) otherlv_2= '}' ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1505:1: (otherlv_0= '{' ( (lv_listOfValueNamePairs_1_0= ruleListOfValueNamePairs ) ) otherlv_2= '}' )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1505:1: (otherlv_0= '{' ( (lv_listOfValueNamePairs_1_0= ruleListOfValueNamePairs ) ) otherlv_2= '}' )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1505:3: otherlv_0= '{' ( (lv_listOfValueNamePairs_1_0= ruleListOfValueNamePairs ) ) otherlv_2= '}'
+ {
+ otherlv_0=(Token)match(input,40,FOLLOW_40_in_ruleTuple3339);
+
+ newLeafNode(otherlv_0, grammarAccess.getTupleAccess().getLeftCurlyBracketKeyword_0());
+
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1509:1: ( (lv_listOfValueNamePairs_1_0= ruleListOfValueNamePairs ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1510:1: (lv_listOfValueNamePairs_1_0= ruleListOfValueNamePairs )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1510:1: (lv_listOfValueNamePairs_1_0= ruleListOfValueNamePairs )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1511:3: lv_listOfValueNamePairs_1_0= ruleListOfValueNamePairs
+ {
+
+ newCompositeNode(grammarAccess.getTupleAccess().getListOfValueNamePairsListOfValueNamePairsParserRuleCall_1_0());
+
+ pushFollow(FOLLOW_ruleListOfValueNamePairs_in_ruleTuple3360);
+ lv_listOfValueNamePairs_1_0=ruleListOfValueNamePairs();
+
+ state._fsp--;
+
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getTupleRule());
+ }
+ set(
+ current,
+ "listOfValueNamePairs",
+ lv_listOfValueNamePairs_1_0,
+ "ListOfValueNamePairs");
+ afterParserOrEnumRuleCall();
+
+
+ }
+
+
+ }
+
+ otherlv_2=(Token)match(input,41,FOLLOW_41_in_ruleTuple3372);
+
+ newLeafNode(otherlv_2, grammarAccess.getTupleAccess().getRightCurlyBracketKeyword_2());
+
+
+ }
+
+
+ }
+
+ leaveRule();
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "ruleTuple"
+
+
+ // $ANTLR start "entryRuleListOfValues"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1539:1: entryRuleListOfValues returns [EObject current=null] : iv_ruleListOfValues= ruleListOfValues EOF ;
+ public final EObject entryRuleListOfValues() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleListOfValues = null;
+
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1540:2: (iv_ruleListOfValues= ruleListOfValues EOF )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1541:2: iv_ruleListOfValues= ruleListOfValues EOF
+ {
+ newCompositeNode(grammarAccess.getListOfValuesRule());
+ pushFollow(FOLLOW_ruleListOfValues_in_entryRuleListOfValues3408);
+ iv_ruleListOfValues=ruleListOfValues();
+
+ state._fsp--;
+
+ current =iv_ruleListOfValues;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleListOfValues3418);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "entryRuleListOfValues"
+
+
+ // $ANTLR start "ruleListOfValues"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1548:1: ruleListOfValues returns [EObject current=null] : ( ( (lv_values_0_0= ruleExpression ) ) (otherlv_1= ',' ( (lv_values_2_0= ruleExpression ) ) )* ) ;
+ public final EObject ruleListOfValues() throws RecognitionException {
+ EObject current = null;
+
+ Token otherlv_1=null;
+ EObject lv_values_0_0 = null;
+
+ EObject lv_values_2_0 = null;
+
+
+ enterRule();
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1551:28: ( ( ( (lv_values_0_0= ruleExpression ) ) (otherlv_1= ',' ( (lv_values_2_0= ruleExpression ) ) )* ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1552:1: ( ( (lv_values_0_0= ruleExpression ) ) (otherlv_1= ',' ( (lv_values_2_0= ruleExpression ) ) )* )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1552:1: ( ( (lv_values_0_0= ruleExpression ) ) (otherlv_1= ',' ( (lv_values_2_0= ruleExpression ) ) )* )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1552:2: ( (lv_values_0_0= ruleExpression ) ) (otherlv_1= ',' ( (lv_values_2_0= ruleExpression ) ) )*
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1552:2: ( (lv_values_0_0= ruleExpression ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1553:1: (lv_values_0_0= ruleExpression )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1553:1: (lv_values_0_0= ruleExpression )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1554:3: lv_values_0_0= ruleExpression
+ {
+
+ newCompositeNode(grammarAccess.getListOfValuesAccess().getValuesExpressionParserRuleCall_0_0());
+
+ pushFollow(FOLLOW_ruleExpression_in_ruleListOfValues3464);
+ lv_values_0_0=ruleExpression();
+
+ state._fsp--;
+
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getListOfValuesRule());
+ }
+ add(
+ current,
+ "values",
+ lv_values_0_0,
+ "Expression");
+ afterParserOrEnumRuleCall();
+
+
+ }
+
+
+ }
+
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1570:2: (otherlv_1= ',' ( (lv_values_2_0= ruleExpression ) ) )*
+ loop27:
+ do {
+ int alt27=2;
+ int LA27_0 = input.LA(1);
+
+ if ( (LA27_0==42) ) {
+ alt27=1;
+ }
+
+
+ switch (alt27) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1570:4: otherlv_1= ',' ( (lv_values_2_0= ruleExpression ) )
+ {
+ otherlv_1=(Token)match(input,42,FOLLOW_42_in_ruleListOfValues3477);
+
+ newLeafNode(otherlv_1, grammarAccess.getListOfValuesAccess().getCommaKeyword_1_0());
+
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1574:1: ( (lv_values_2_0= ruleExpression ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1575:1: (lv_values_2_0= ruleExpression )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1575:1: (lv_values_2_0= ruleExpression )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1576:3: lv_values_2_0= ruleExpression
+ {
+
+ newCompositeNode(grammarAccess.getListOfValuesAccess().getValuesExpressionParserRuleCall_1_1_0());
+
+ pushFollow(FOLLOW_ruleExpression_in_ruleListOfValues3498);
+ lv_values_2_0=ruleExpression();
+
+ state._fsp--;
+
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getListOfValuesRule());
+ }
+ add(
+ current,
+ "values",
+ lv_values_2_0,
+ "Expression");
+ afterParserOrEnumRuleCall();
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop27;
+ }
+ } while (true);
+
+
+ }
+
+
+ }
+
+ leaveRule();
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "ruleListOfValues"
+
+
+ // $ANTLR start "entryRuleListOfValueNamePairs"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1600:1: entryRuleListOfValueNamePairs returns [EObject current=null] : iv_ruleListOfValueNamePairs= ruleListOfValueNamePairs EOF ;
+ public final EObject entryRuleListOfValueNamePairs() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleListOfValueNamePairs = null;
+
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1601:2: (iv_ruleListOfValueNamePairs= ruleListOfValueNamePairs EOF )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1602:2: iv_ruleListOfValueNamePairs= ruleListOfValueNamePairs EOF
+ {
+ newCompositeNode(grammarAccess.getListOfValueNamePairsRule());
+ pushFollow(FOLLOW_ruleListOfValueNamePairs_in_entryRuleListOfValueNamePairs3536);
+ iv_ruleListOfValueNamePairs=ruleListOfValueNamePairs();
+
+ state._fsp--;
+
+ current =iv_ruleListOfValueNamePairs;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleListOfValueNamePairs3546);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "entryRuleListOfValueNamePairs"
+
+
+ // $ANTLR start "ruleListOfValueNamePairs"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1609:1: ruleListOfValueNamePairs returns [EObject current=null] : ( ( (lv_valueNamePairs_0_0= ruleValueNamePair ) ) (otherlv_1= ',' ( (lv_valueNamePairs_2_0= ruleValueNamePair ) ) )* ) ;
+ public final EObject ruleListOfValueNamePairs() throws RecognitionException {
+ EObject current = null;
+
+ Token otherlv_1=null;
+ EObject lv_valueNamePairs_0_0 = null;
+
+ EObject lv_valueNamePairs_2_0 = null;
+
+
+ enterRule();
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1612:28: ( ( ( (lv_valueNamePairs_0_0= ruleValueNamePair ) ) (otherlv_1= ',' ( (lv_valueNamePairs_2_0= ruleValueNamePair ) ) )* ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1613:1: ( ( (lv_valueNamePairs_0_0= ruleValueNamePair ) ) (otherlv_1= ',' ( (lv_valueNamePairs_2_0= ruleValueNamePair ) ) )* )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1613:1: ( ( (lv_valueNamePairs_0_0= ruleValueNamePair ) ) (otherlv_1= ',' ( (lv_valueNamePairs_2_0= ruleValueNamePair ) ) )* )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1613:2: ( (lv_valueNamePairs_0_0= ruleValueNamePair ) ) (otherlv_1= ',' ( (lv_valueNamePairs_2_0= ruleValueNamePair ) ) )*
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1613:2: ( (lv_valueNamePairs_0_0= ruleValueNamePair ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1614:1: (lv_valueNamePairs_0_0= ruleValueNamePair )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1614:1: (lv_valueNamePairs_0_0= ruleValueNamePair )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1615:3: lv_valueNamePairs_0_0= ruleValueNamePair
+ {
+
+ newCompositeNode(grammarAccess.getListOfValueNamePairsAccess().getValueNamePairsValueNamePairParserRuleCall_0_0());
+
+ pushFollow(FOLLOW_ruleValueNamePair_in_ruleListOfValueNamePairs3592);
+ lv_valueNamePairs_0_0=ruleValueNamePair();
+
+ state._fsp--;
+
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getListOfValueNamePairsRule());
+ }
+ add(
+ current,
+ "valueNamePairs",
+ lv_valueNamePairs_0_0,
+ "ValueNamePair");
+ afterParserOrEnumRuleCall();
+
+
+ }
+
+
+ }
+
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1631:2: (otherlv_1= ',' ( (lv_valueNamePairs_2_0= ruleValueNamePair ) ) )*
+ loop28:
+ do {
+ int alt28=2;
+ int LA28_0 = input.LA(1);
+
+ if ( (LA28_0==42) ) {
+ alt28=1;
+ }
+
+
+ switch (alt28) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1631:4: otherlv_1= ',' ( (lv_valueNamePairs_2_0= ruleValueNamePair ) )
+ {
+ otherlv_1=(Token)match(input,42,FOLLOW_42_in_ruleListOfValueNamePairs3605);
+
+ newLeafNode(otherlv_1, grammarAccess.getListOfValueNamePairsAccess().getCommaKeyword_1_0());
+
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1635:1: ( (lv_valueNamePairs_2_0= ruleValueNamePair ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1636:1: (lv_valueNamePairs_2_0= ruleValueNamePair )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1636:1: (lv_valueNamePairs_2_0= ruleValueNamePair )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1637:3: lv_valueNamePairs_2_0= ruleValueNamePair
+ {
+
+ newCompositeNode(grammarAccess.getListOfValueNamePairsAccess().getValueNamePairsValueNamePairParserRuleCall_1_1_0());
+
+ pushFollow(FOLLOW_ruleValueNamePair_in_ruleListOfValueNamePairs3626);
+ lv_valueNamePairs_2_0=ruleValueNamePair();
+
+ state._fsp--;
+
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getListOfValueNamePairsRule());
+ }
+ add(
+ current,
+ "valueNamePairs",
+ lv_valueNamePairs_2_0,
+ "ValueNamePair");
+ afterParserOrEnumRuleCall();
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop28;
+ }
+ } while (true);
+
+
+ }
+
+
+ }
+
+ leaveRule();
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "ruleListOfValueNamePairs"
+
+
+ // $ANTLR start "entryRuleValueNamePair"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1661:1: entryRuleValueNamePair returns [EObject current=null] : iv_ruleValueNamePair= ruleValueNamePair EOF ;
+ public final EObject entryRuleValueNamePair() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleValueNamePair = null;
+
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1662:2: (iv_ruleValueNamePair= ruleValueNamePair EOF )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1663:2: iv_ruleValueNamePair= ruleValueNamePair EOF
+ {
+ newCompositeNode(grammarAccess.getValueNamePairRule());
+ pushFollow(FOLLOW_ruleValueNamePair_in_entryRuleValueNamePair3664);
+ iv_ruleValueNamePair=ruleValueNamePair();
+
+ state._fsp--;
+
+ current =iv_ruleValueNamePair;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleValueNamePair3674);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "entryRuleValueNamePair"
+
+
+ // $ANTLR start "ruleValueNamePair"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1670:1: ruleValueNamePair returns [EObject current=null] : ( ( (otherlv_0= RULE_ID ) ) otherlv_1= '=' ( (lv_value_2_0= ruleExpression ) ) ) ;
+ public final EObject ruleValueNamePair() throws RecognitionException {
+ EObject current = null;
+
+ Token otherlv_0=null;
+ Token otherlv_1=null;
+ EObject lv_value_2_0 = null;
+
+
+ enterRule();
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1673:28: ( ( ( (otherlv_0= RULE_ID ) ) otherlv_1= '=' ( (lv_value_2_0= ruleExpression ) ) ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1674:1: ( ( (otherlv_0= RULE_ID ) ) otherlv_1= '=' ( (lv_value_2_0= ruleExpression ) ) )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1674:1: ( ( (otherlv_0= RULE_ID ) ) otherlv_1= '=' ( (lv_value_2_0= ruleExpression ) ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1674:2: ( (otherlv_0= RULE_ID ) ) otherlv_1= '=' ( (lv_value_2_0= ruleExpression ) )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1674:2: ( (otherlv_0= RULE_ID ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1675:1: (otherlv_0= RULE_ID )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1675:1: (otherlv_0= RULE_ID )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1676:3: otherlv_0= RULE_ID
+ {
+
+ if (current==null) {
+ current = createModelElement(grammarAccess.getValueNamePairRule());
+ }
+
+ otherlv_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleValueNamePair3719);
+
+ newLeafNode(otherlv_0, grammarAccess.getValueNamePairAccess().getPropertyPropertyCrossReference_0_0());
+
+
+ }
+
+
+ }
+
+ otherlv_1=(Token)match(input,43,FOLLOW_43_in_ruleValueNamePair3731);
+
+ newLeafNode(otherlv_1, grammarAccess.getValueNamePairAccess().getEqualsSignKeyword_1());
+
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1691:1: ( (lv_value_2_0= ruleExpression ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1692:1: (lv_value_2_0= ruleExpression )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1692:1: (lv_value_2_0= ruleExpression )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1693:3: lv_value_2_0= ruleExpression
+ {
+
+ newCompositeNode(grammarAccess.getValueNamePairAccess().getValueExpressionParserRuleCall_2_0());
+
+ pushFollow(FOLLOW_ruleExpression_in_ruleValueNamePair3752);
+ lv_value_2_0=ruleExpression();
+
+ state._fsp--;
+
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getValueNamePairRule());
+ }
+ set(
+ current,
+ "value",
+ lv_value_2_0,
+ "Expression");
+ afterParserOrEnumRuleCall();
+
+
+ }
+
+
+ }
+
+
+ }
+
+
+ }
+
+ leaveRule();
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "ruleValueNamePair"
+
+
+ // $ANTLR start "entryRuleTimeExpression"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1717:1: entryRuleTimeExpression returns [EObject current=null] : iv_ruleTimeExpression= ruleTimeExpression EOF ;
+ public final EObject entryRuleTimeExpression() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleTimeExpression = null;
+
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1718:2: (iv_ruleTimeExpression= ruleTimeExpression EOF )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1719:2: iv_ruleTimeExpression= ruleTimeExpression EOF
+ {
+ newCompositeNode(grammarAccess.getTimeExpressionRule());
+ pushFollow(FOLLOW_ruleTimeExpression_in_entryRuleTimeExpression3788);
+ iv_ruleTimeExpression=ruleTimeExpression();
+
+ state._fsp--;
+
+ current =iv_ruleTimeExpression;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleTimeExpression3798);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "entryRuleTimeExpression"
+
+
+ // $ANTLR start "ruleTimeExpression"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1726:1: ruleTimeExpression returns [EObject current=null] : (this_InstantObsExpression_0= ruleInstantObsExpression | this_DurationObsExpression_1= ruleDurationObsExpression | this_JitterExp_2= ruleJitterExp ) ;
+ public final EObject ruleTimeExpression() throws RecognitionException {
+ EObject current = null;
+
+ EObject this_InstantObsExpression_0 = null;
+
+ EObject this_DurationObsExpression_1 = null;
+
+ EObject this_JitterExp_2 = null;
+
+
+ enterRule();
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1729:28: ( (this_InstantObsExpression_0= ruleInstantObsExpression | this_DurationObsExpression_1= ruleDurationObsExpression | this_JitterExp_2= ruleJitterExp ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1730:1: (this_InstantObsExpression_0= ruleInstantObsExpression | this_DurationObsExpression_1= ruleDurationObsExpression | this_JitterExp_2= ruleJitterExp )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1730:1: (this_InstantObsExpression_0= ruleInstantObsExpression | this_DurationObsExpression_1= ruleDurationObsExpression | this_JitterExp_2= ruleJitterExp )
+ int alt29=3;
+ switch ( input.LA(1) ) {
+ case 44:
+ {
+ alt29=1;
+ }
+ break;
+ case 46:
+ {
+ alt29=2;
+ }
+ break;
+ case 47:
+ {
+ alt29=3;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("", 29, 0, input);
+
+ throw nvae;
+ }
+
+ switch (alt29) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1731:5: this_InstantObsExpression_0= ruleInstantObsExpression
+ {
+
+ newCompositeNode(grammarAccess.getTimeExpressionAccess().getInstantObsExpressionParserRuleCall_0());
+
+ pushFollow(FOLLOW_ruleInstantObsExpression_in_ruleTimeExpression3845);
+ this_InstantObsExpression_0=ruleInstantObsExpression();
+
+ state._fsp--;
+
+
+ current = this_InstantObsExpression_0;
+ afterParserOrEnumRuleCall();
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1741:5: this_DurationObsExpression_1= ruleDurationObsExpression
+ {
+
+ newCompositeNode(grammarAccess.getTimeExpressionAccess().getDurationObsExpressionParserRuleCall_1());
+
+ pushFollow(FOLLOW_ruleDurationObsExpression_in_ruleTimeExpression3872);
+ this_DurationObsExpression_1=ruleDurationObsExpression();
+
+ state._fsp--;
+
+
+ current = this_DurationObsExpression_1;
+ afterParserOrEnumRuleCall();
+
+
+ }
+ break;
+ case 3 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1751:5: this_JitterExp_2= ruleJitterExp
+ {
+
+ newCompositeNode(grammarAccess.getTimeExpressionAccess().getJitterExpParserRuleCall_2());
+
+ pushFollow(FOLLOW_ruleJitterExp_in_ruleTimeExpression3899);
+ this_JitterExp_2=ruleJitterExp();
+
+ state._fsp--;
+
+
+ current = this_JitterExp_2;
+ afterParserOrEnumRuleCall();
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ leaveRule();
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "ruleTimeExpression"
+
+
+ // $ANTLR start "entryRuleInstantObsExpression"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1767:1: entryRuleInstantObsExpression returns [EObject current=null] : iv_ruleInstantObsExpression= ruleInstantObsExpression EOF ;
+ public final EObject entryRuleInstantObsExpression() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleInstantObsExpression = null;
+
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1768:2: (iv_ruleInstantObsExpression= ruleInstantObsExpression EOF )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1769:2: iv_ruleInstantObsExpression= ruleInstantObsExpression EOF
+ {
+ newCompositeNode(grammarAccess.getInstantObsExpressionRule());
+ pushFollow(FOLLOW_ruleInstantObsExpression_in_entryRuleInstantObsExpression3934);
+ iv_ruleInstantObsExpression=ruleInstantObsExpression();
+
+ state._fsp--;
+
+ current =iv_ruleInstantObsExpression;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleInstantObsExpression3944);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "entryRuleInstantObsExpression"
+
+
+ // $ANTLR start "ruleInstantObsExpression"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1776:1: ruleInstantObsExpression returns [EObject current=null] : (otherlv_0= '@' ( (lv_id_1_0= ruleInstantObsName ) ) (otherlv_2= '(' ( (lv_index_3_0= ruleExpression ) ) otherlv_4= ')' )? (otherlv_5= 'when' otherlv_6= '(' ( (lv_condition_7_0= ruleExpression ) ) otherlv_8= ')' )? ) ;
+ public final EObject ruleInstantObsExpression() throws RecognitionException {
+ EObject current = null;
+
+ Token otherlv_0=null;
+ Token otherlv_2=null;
+ Token otherlv_4=null;
+ Token otherlv_5=null;
+ Token otherlv_6=null;
+ Token otherlv_8=null;
+ EObject lv_id_1_0 = null;
+
+ EObject lv_index_3_0 = null;
+
+ EObject lv_condition_7_0 = null;
+
+
+ enterRule();
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1779:28: ( (otherlv_0= '@' ( (lv_id_1_0= ruleInstantObsName ) ) (otherlv_2= '(' ( (lv_index_3_0= ruleExpression ) ) otherlv_4= ')' )? (otherlv_5= 'when' otherlv_6= '(' ( (lv_condition_7_0= ruleExpression ) ) otherlv_8= ')' )? ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1780:1: (otherlv_0= '@' ( (lv_id_1_0= ruleInstantObsName ) ) (otherlv_2= '(' ( (lv_index_3_0= ruleExpression ) ) otherlv_4= ')' )? (otherlv_5= 'when' otherlv_6= '(' ( (lv_condition_7_0= ruleExpression ) ) otherlv_8= ')' )? )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1780:1: (otherlv_0= '@' ( (lv_id_1_0= ruleInstantObsName ) ) (otherlv_2= '(' ( (lv_index_3_0= ruleExpression ) ) otherlv_4= ')' )? (otherlv_5= 'when' otherlv_6= '(' ( (lv_condition_7_0= ruleExpression ) ) otherlv_8= ')' )? )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1780:3: otherlv_0= '@' ( (lv_id_1_0= ruleInstantObsName ) ) (otherlv_2= '(' ( (lv_index_3_0= ruleExpression ) ) otherlv_4= ')' )? (otherlv_5= 'when' otherlv_6= '(' ( (lv_condition_7_0= ruleExpression ) ) otherlv_8= ')' )?
+ {
+ otherlv_0=(Token)match(input,44,FOLLOW_44_in_ruleInstantObsExpression3981);
+
+ newLeafNode(otherlv_0, grammarAccess.getInstantObsExpressionAccess().getCommercialAtKeyword_0());
+
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1784:1: ( (lv_id_1_0= ruleInstantObsName ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1785:1: (lv_id_1_0= ruleInstantObsName )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1785:1: (lv_id_1_0= ruleInstantObsName )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1786:3: lv_id_1_0= ruleInstantObsName
+ {
+
+ newCompositeNode(grammarAccess.getInstantObsExpressionAccess().getIdInstantObsNameParserRuleCall_1_0());
+
+ pushFollow(FOLLOW_ruleInstantObsName_in_ruleInstantObsExpression4002);
+ lv_id_1_0=ruleInstantObsName();
+
+ state._fsp--;
+
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getInstantObsExpressionRule());
+ }
+ set(
+ current,
+ "id",
+ lv_id_1_0,
+ "InstantObsName");
+ afterParserOrEnumRuleCall();
+
+
+ }
+
+
+ }
+
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1802:2: (otherlv_2= '(' ( (lv_index_3_0= ruleExpression ) ) otherlv_4= ')' )?
+ int alt30=2;
+ int LA30_0 = input.LA(1);
+
+ if ( (LA30_0==34) ) {
+ alt30=1;
+ }
+ switch (alt30) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1802:4: otherlv_2= '(' ( (lv_index_3_0= ruleExpression ) ) otherlv_4= ')'
+ {
+ otherlv_2=(Token)match(input,34,FOLLOW_34_in_ruleInstantObsExpression4015);
+
+ newLeafNode(otherlv_2, grammarAccess.getInstantObsExpressionAccess().getLeftParenthesisKeyword_2_0());
+
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1806:1: ( (lv_index_3_0= ruleExpression ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1807:1: (lv_index_3_0= ruleExpression )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1807:1: (lv_index_3_0= ruleExpression )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1808:3: lv_index_3_0= ruleExpression
+ {
+
+ newCompositeNode(grammarAccess.getInstantObsExpressionAccess().getIndexExpressionParserRuleCall_2_1_0());
+
+ pushFollow(FOLLOW_ruleExpression_in_ruleInstantObsExpression4036);
+ lv_index_3_0=ruleExpression();
+
+ state._fsp--;
+
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getInstantObsExpressionRule());
+ }
+ set(
+ current,
+ "index",
+ lv_index_3_0,
+ "Expression");
+ afterParserOrEnumRuleCall();
+
+
+ }
+
+
+ }
+
+ otherlv_4=(Token)match(input,35,FOLLOW_35_in_ruleInstantObsExpression4048);
+
+ newLeafNode(otherlv_4, grammarAccess.getInstantObsExpressionAccess().getRightParenthesisKeyword_2_2());
+
+
+ }
+ break;
+
+ }
+
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1828:3: (otherlv_5= 'when' otherlv_6= '(' ( (lv_condition_7_0= ruleExpression ) ) otherlv_8= ')' )?
+ int alt31=2;
+ int LA31_0 = input.LA(1);
+
+ if ( (LA31_0==45) ) {
+ alt31=1;
+ }
+ switch (alt31) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1828:5: otherlv_5= 'when' otherlv_6= '(' ( (lv_condition_7_0= ruleExpression ) ) otherlv_8= ')'
+ {
+ otherlv_5=(Token)match(input,45,FOLLOW_45_in_ruleInstantObsExpression4063);
+
+ newLeafNode(otherlv_5, grammarAccess.getInstantObsExpressionAccess().getWhenKeyword_3_0());
+
+ otherlv_6=(Token)match(input,34,FOLLOW_34_in_ruleInstantObsExpression4075);
+
+ newLeafNode(otherlv_6, grammarAccess.getInstantObsExpressionAccess().getLeftParenthesisKeyword_3_1());
+
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1836:1: ( (lv_condition_7_0= ruleExpression ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1837:1: (lv_condition_7_0= ruleExpression )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1837:1: (lv_condition_7_0= ruleExpression )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1838:3: lv_condition_7_0= ruleExpression
+ {
+
+ newCompositeNode(grammarAccess.getInstantObsExpressionAccess().getConditionExpressionParserRuleCall_3_2_0());
+
+ pushFollow(FOLLOW_ruleExpression_in_ruleInstantObsExpression4096);
+ lv_condition_7_0=ruleExpression();
+
+ state._fsp--;
+
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getInstantObsExpressionRule());
+ }
+ set(
+ current,
+ "condition",
+ lv_condition_7_0,
+ "Expression");
+ afterParserOrEnumRuleCall();
+
+
+ }
+
+
+ }
+
+ otherlv_8=(Token)match(input,35,FOLLOW_35_in_ruleInstantObsExpression4108);
+
+ newLeafNode(otherlv_8, grammarAccess.getInstantObsExpressionAccess().getRightParenthesisKeyword_3_3());
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+
+ }
+
+ leaveRule();
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "ruleInstantObsExpression"
+
+
+ // $ANTLR start "entryRuleInstantObsName"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1866:1: entryRuleInstantObsName returns [EObject current=null] : iv_ruleInstantObsName= ruleInstantObsName EOF ;
+ public final EObject entryRuleInstantObsName() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleInstantObsName = null;
+
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1867:2: (iv_ruleInstantObsName= ruleInstantObsName EOF )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1868:2: iv_ruleInstantObsName= ruleInstantObsName EOF
+ {
+ newCompositeNode(grammarAccess.getInstantObsNameRule());
+ pushFollow(FOLLOW_ruleInstantObsName_in_entryRuleInstantObsName4146);
+ iv_ruleInstantObsName=ruleInstantObsName();
+
+ state._fsp--;
+
+ current =iv_ruleInstantObsName;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleInstantObsName4156);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "entryRuleInstantObsName"
+
+
+ // $ANTLR start "ruleInstantObsName"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1875:1: ruleInstantObsName returns [EObject current=null] : ( ( (lv_path_0_0= ruleQualifiedName ) )? ( (otherlv_1= RULE_ID ) ) ) ;
+ public final EObject ruleInstantObsName() throws RecognitionException {
+ EObject current = null;
+
+ Token otherlv_1=null;
+ EObject lv_path_0_0 = null;
+
+
+ enterRule();
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1878:28: ( ( ( (lv_path_0_0= ruleQualifiedName ) )? ( (otherlv_1= RULE_ID ) ) ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1879:1: ( ( (lv_path_0_0= ruleQualifiedName ) )? ( (otherlv_1= RULE_ID ) ) )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1879:1: ( ( (lv_path_0_0= ruleQualifiedName ) )? ( (otherlv_1= RULE_ID ) ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1879:2: ( (lv_path_0_0= ruleQualifiedName ) )? ( (otherlv_1= RULE_ID ) )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1879:2: ( (lv_path_0_0= ruleQualifiedName ) )?
+ int alt32=2;
+ int LA32_0 = input.LA(1);
+
+ if ( (LA32_0==RULE_ID) ) {
+ int LA32_1 = input.LA(2);
+
+ if ( (LA32_1==36) ) {
+ alt32=1;
+ }
+ }
+ switch (alt32) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1880:1: (lv_path_0_0= ruleQualifiedName )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1880:1: (lv_path_0_0= ruleQualifiedName )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1881:3: lv_path_0_0= ruleQualifiedName
+ {
+
+ newCompositeNode(grammarAccess.getInstantObsNameAccess().getPathQualifiedNameParserRuleCall_0_0());
+
+ pushFollow(FOLLOW_ruleQualifiedName_in_ruleInstantObsName4202);
+ lv_path_0_0=ruleQualifiedName();
+
+ state._fsp--;
+
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getInstantObsNameRule());
+ }
+ set(
+ current,
+ "path",
+ lv_path_0_0,
+ "QualifiedName");
+ afterParserOrEnumRuleCall();
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1897:3: ( (otherlv_1= RULE_ID ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1898:1: (otherlv_1= RULE_ID )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1898:1: (otherlv_1= RULE_ID )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1899:3: otherlv_1= RULE_ID
+ {
+
+ if (current==null) {
+ current = createModelElement(grammarAccess.getInstantObsNameRule());
+ }
+
+ otherlv_1=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleInstantObsName4223);
+
+ newLeafNode(otherlv_1, grammarAccess.getInstantObsNameAccess().getInstantIdTimeObservationCrossReference_1_0());
+
+
+ }
+
+
+ }
+
+
+ }
+
+
+ }
+
+ leaveRule();
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "ruleInstantObsName"
+
+
+ // $ANTLR start "entryRuleDurationObsExpression"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1918:1: entryRuleDurationObsExpression returns [EObject current=null] : iv_ruleDurationObsExpression= ruleDurationObsExpression EOF ;
+ public final EObject entryRuleDurationObsExpression() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleDurationObsExpression = null;
+
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1919:2: (iv_ruleDurationObsExpression= ruleDurationObsExpression EOF )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1920:2: iv_ruleDurationObsExpression= ruleDurationObsExpression EOF
+ {
+ newCompositeNode(grammarAccess.getDurationObsExpressionRule());
+ pushFollow(FOLLOW_ruleDurationObsExpression_in_entryRuleDurationObsExpression4259);
+ iv_ruleDurationObsExpression=ruleDurationObsExpression();
+
+ state._fsp--;
+
+ current =iv_ruleDurationObsExpression;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleDurationObsExpression4269);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "entryRuleDurationObsExpression"
+
+
+ // $ANTLR start "ruleDurationObsExpression"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1927:1: ruleDurationObsExpression returns [EObject current=null] : (otherlv_0= '&' ( (lv_id_1_0= ruleDurationObsName ) ) (otherlv_2= '(' ( (lv_index_3_0= ruleExpression ) ) otherlv_4= ')' )? (otherlv_5= 'when' otherlv_6= '(' ( (lv_condition_7_0= ruleExpression ) ) otherlv_8= ')' )? ) ;
+ public final EObject ruleDurationObsExpression() throws RecognitionException {
+ EObject current = null;
+
+ Token otherlv_0=null;
+ Token otherlv_2=null;
+ Token otherlv_4=null;
+ Token otherlv_5=null;
+ Token otherlv_6=null;
+ Token otherlv_8=null;
+ EObject lv_id_1_0 = null;
+
+ EObject lv_index_3_0 = null;
+
+ EObject lv_condition_7_0 = null;
+
+
+ enterRule();
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1930:28: ( (otherlv_0= '&' ( (lv_id_1_0= ruleDurationObsName ) ) (otherlv_2= '(' ( (lv_index_3_0= ruleExpression ) ) otherlv_4= ')' )? (otherlv_5= 'when' otherlv_6= '(' ( (lv_condition_7_0= ruleExpression ) ) otherlv_8= ')' )? ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1931:1: (otherlv_0= '&' ( (lv_id_1_0= ruleDurationObsName ) ) (otherlv_2= '(' ( (lv_index_3_0= ruleExpression ) ) otherlv_4= ')' )? (otherlv_5= 'when' otherlv_6= '(' ( (lv_condition_7_0= ruleExpression ) ) otherlv_8= ')' )? )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1931:1: (otherlv_0= '&' ( (lv_id_1_0= ruleDurationObsName ) ) (otherlv_2= '(' ( (lv_index_3_0= ruleExpression ) ) otherlv_4= ')' )? (otherlv_5= 'when' otherlv_6= '(' ( (lv_condition_7_0= ruleExpression ) ) otherlv_8= ')' )? )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1931:3: otherlv_0= '&' ( (lv_id_1_0= ruleDurationObsName ) ) (otherlv_2= '(' ( (lv_index_3_0= ruleExpression ) ) otherlv_4= ')' )? (otherlv_5= 'when' otherlv_6= '(' ( (lv_condition_7_0= ruleExpression ) ) otherlv_8= ')' )?
+ {
+ otherlv_0=(Token)match(input,46,FOLLOW_46_in_ruleDurationObsExpression4306);
+
+ newLeafNode(otherlv_0, grammarAccess.getDurationObsExpressionAccess().getAmpersandKeyword_0());
+
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1935:1: ( (lv_id_1_0= ruleDurationObsName ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1936:1: (lv_id_1_0= ruleDurationObsName )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1936:1: (lv_id_1_0= ruleDurationObsName )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1937:3: lv_id_1_0= ruleDurationObsName
+ {
+
+ newCompositeNode(grammarAccess.getDurationObsExpressionAccess().getIdDurationObsNameParserRuleCall_1_0());
+
+ pushFollow(FOLLOW_ruleDurationObsName_in_ruleDurationObsExpression4327);
+ lv_id_1_0=ruleDurationObsName();
+
+ state._fsp--;
+
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getDurationObsExpressionRule());
+ }
+ set(
+ current,
+ "id",
+ lv_id_1_0,
+ "DurationObsName");
+ afterParserOrEnumRuleCall();
+
+
+ }
+
+
+ }
+
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1953:2: (otherlv_2= '(' ( (lv_index_3_0= ruleExpression ) ) otherlv_4= ')' )?
+ int alt33=2;
+ int LA33_0 = input.LA(1);
+
+ if ( (LA33_0==34) ) {
+ alt33=1;
+ }
+ switch (alt33) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1953:4: otherlv_2= '(' ( (lv_index_3_0= ruleExpression ) ) otherlv_4= ')'
+ {
+ otherlv_2=(Token)match(input,34,FOLLOW_34_in_ruleDurationObsExpression4340);
+
+ newLeafNode(otherlv_2, grammarAccess.getDurationObsExpressionAccess().getLeftParenthesisKeyword_2_0());
+
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1957:1: ( (lv_index_3_0= ruleExpression ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1958:1: (lv_index_3_0= ruleExpression )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1958:1: (lv_index_3_0= ruleExpression )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1959:3: lv_index_3_0= ruleExpression
+ {
+
+ newCompositeNode(grammarAccess.getDurationObsExpressionAccess().getIndexExpressionParserRuleCall_2_1_0());
+
+ pushFollow(FOLLOW_ruleExpression_in_ruleDurationObsExpression4361);
+ lv_index_3_0=ruleExpression();
+
+ state._fsp--;
+
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getDurationObsExpressionRule());
+ }
+ set(
+ current,
+ "index",
+ lv_index_3_0,
+ "Expression");
+ afterParserOrEnumRuleCall();
+
+
+ }
+
+
+ }
+
+ otherlv_4=(Token)match(input,35,FOLLOW_35_in_ruleDurationObsExpression4373);
+
+ newLeafNode(otherlv_4, grammarAccess.getDurationObsExpressionAccess().getRightParenthesisKeyword_2_2());
+
+
+ }
+ break;
+
+ }
+
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1979:3: (otherlv_5= 'when' otherlv_6= '(' ( (lv_condition_7_0= ruleExpression ) ) otherlv_8= ')' )?
+ int alt34=2;
+ int LA34_0 = input.LA(1);
+
+ if ( (LA34_0==45) ) {
+ alt34=1;
+ }
+ switch (alt34) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1979:5: otherlv_5= 'when' otherlv_6= '(' ( (lv_condition_7_0= ruleExpression ) ) otherlv_8= ')'
+ {
+ otherlv_5=(Token)match(input,45,FOLLOW_45_in_ruleDurationObsExpression4388);
+
+ newLeafNode(otherlv_5, grammarAccess.getDurationObsExpressionAccess().getWhenKeyword_3_0());
+
+ otherlv_6=(Token)match(input,34,FOLLOW_34_in_ruleDurationObsExpression4400);
+
+ newLeafNode(otherlv_6, grammarAccess.getDurationObsExpressionAccess().getLeftParenthesisKeyword_3_1());
+
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1987:1: ( (lv_condition_7_0= ruleExpression ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1988:1: (lv_condition_7_0= ruleExpression )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1988:1: (lv_condition_7_0= ruleExpression )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:1989:3: lv_condition_7_0= ruleExpression
+ {
+
+ newCompositeNode(grammarAccess.getDurationObsExpressionAccess().getConditionExpressionParserRuleCall_3_2_0());
+
+ pushFollow(FOLLOW_ruleExpression_in_ruleDurationObsExpression4421);
+ lv_condition_7_0=ruleExpression();
+
+ state._fsp--;
+
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getDurationObsExpressionRule());
+ }
+ set(
+ current,
+ "condition",
+ lv_condition_7_0,
+ "Expression");
+ afterParserOrEnumRuleCall();
+
+
+ }
+
+
+ }
+
+ otherlv_8=(Token)match(input,35,FOLLOW_35_in_ruleDurationObsExpression4433);
+
+ newLeafNode(otherlv_8, grammarAccess.getDurationObsExpressionAccess().getRightParenthesisKeyword_3_3());
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+
+ }
+
+ leaveRule();
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "ruleDurationObsExpression"
+
+
+ // $ANTLR start "entryRuleDurationObsName"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2017:1: entryRuleDurationObsName returns [EObject current=null] : iv_ruleDurationObsName= ruleDurationObsName EOF ;
+ public final EObject entryRuleDurationObsName() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleDurationObsName = null;
+
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2018:2: (iv_ruleDurationObsName= ruleDurationObsName EOF )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2019:2: iv_ruleDurationObsName= ruleDurationObsName EOF
+ {
+ newCompositeNode(grammarAccess.getDurationObsNameRule());
+ pushFollow(FOLLOW_ruleDurationObsName_in_entryRuleDurationObsName4471);
+ iv_ruleDurationObsName=ruleDurationObsName();
+
+ state._fsp--;
+
+ current =iv_ruleDurationObsName;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleDurationObsName4481);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "entryRuleDurationObsName"
+
+
+ // $ANTLR start "ruleDurationObsName"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2026:1: ruleDurationObsName returns [EObject current=null] : ( ( (lv_path_0_0= ruleQualifiedName ) )? ( (otherlv_1= RULE_ID ) ) ) ;
+ public final EObject ruleDurationObsName() throws RecognitionException {
+ EObject current = null;
+
+ Token otherlv_1=null;
+ EObject lv_path_0_0 = null;
+
+
+ enterRule();
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2029:28: ( ( ( (lv_path_0_0= ruleQualifiedName ) )? ( (otherlv_1= RULE_ID ) ) ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2030:1: ( ( (lv_path_0_0= ruleQualifiedName ) )? ( (otherlv_1= RULE_ID ) ) )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2030:1: ( ( (lv_path_0_0= ruleQualifiedName ) )? ( (otherlv_1= RULE_ID ) ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2030:2: ( (lv_path_0_0= ruleQualifiedName ) )? ( (otherlv_1= RULE_ID ) )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2030:2: ( (lv_path_0_0= ruleQualifiedName ) )?
+ int alt35=2;
+ int LA35_0 = input.LA(1);
+
+ if ( (LA35_0==RULE_ID) ) {
+ int LA35_1 = input.LA(2);
+
+ if ( (LA35_1==36) ) {
+ alt35=1;
+ }
+ }
+ switch (alt35) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2031:1: (lv_path_0_0= ruleQualifiedName )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2031:1: (lv_path_0_0= ruleQualifiedName )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2032:3: lv_path_0_0= ruleQualifiedName
+ {
+
+ newCompositeNode(grammarAccess.getDurationObsNameAccess().getPathQualifiedNameParserRuleCall_0_0());
+
+ pushFollow(FOLLOW_ruleQualifiedName_in_ruleDurationObsName4527);
+ lv_path_0_0=ruleQualifiedName();
+
+ state._fsp--;
+
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getDurationObsNameRule());
+ }
+ set(
+ current,
+ "path",
+ lv_path_0_0,
+ "QualifiedName");
+ afterParserOrEnumRuleCall();
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2048:3: ( (otherlv_1= RULE_ID ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2049:1: (otherlv_1= RULE_ID )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2049:1: (otherlv_1= RULE_ID )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2050:3: otherlv_1= RULE_ID
+ {
+
+ if (current==null) {
+ current = createModelElement(grammarAccess.getDurationObsNameRule());
+ }
+
+ otherlv_1=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleDurationObsName4548);
+
+ newLeafNode(otherlv_1, grammarAccess.getDurationObsNameAccess().getDurationIdDurationObservationCrossReference_1_0());
+
+
+ }
+
+
+ }
+
+
+ }
+
+
+ }
+
+ leaveRule();
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "ruleDurationObsName"
+
+
+ // $ANTLR start "entryRuleJitterExp"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2069:1: entryRuleJitterExp returns [EObject current=null] : iv_ruleJitterExp= ruleJitterExp EOF ;
+ public final EObject entryRuleJitterExp() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleJitterExp = null;
+
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2070:2: (iv_ruleJitterExp= ruleJitterExp EOF )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2071:2: iv_ruleJitterExp= ruleJitterExp EOF
+ {
+ newCompositeNode(grammarAccess.getJitterExpRule());
+ pushFollow(FOLLOW_ruleJitterExp_in_entryRuleJitterExp4584);
+ iv_ruleJitterExp=ruleJitterExp();
+
+ state._fsp--;
+
+ current =iv_ruleJitterExp;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleJitterExp4594);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "entryRuleJitterExp"
+
+
+ // $ANTLR start "ruleJitterExp"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2078:1: ruleJitterExp returns [EObject current=null] : (otherlv_0= 'jitter(' ( (lv_firstInstant_1_0= ruleInstantObsExpression ) ) (otherlv_2= '-' ( (lv_secondInstant_3_0= ruleInstantObsExpression ) ) )? otherlv_4= ')' ) ;
+ public final EObject ruleJitterExp() throws RecognitionException {
+ EObject current = null;
+
+ Token otherlv_0=null;
+ Token otherlv_2=null;
+ Token otherlv_4=null;
+ EObject lv_firstInstant_1_0 = null;
+
+ EObject lv_secondInstant_3_0 = null;
+
+
+ enterRule();
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2081:28: ( (otherlv_0= 'jitter(' ( (lv_firstInstant_1_0= ruleInstantObsExpression ) ) (otherlv_2= '-' ( (lv_secondInstant_3_0= ruleInstantObsExpression ) ) )? otherlv_4= ')' ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2082:1: (otherlv_0= 'jitter(' ( (lv_firstInstant_1_0= ruleInstantObsExpression ) ) (otherlv_2= '-' ( (lv_secondInstant_3_0= ruleInstantObsExpression ) ) )? otherlv_4= ')' )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2082:1: (otherlv_0= 'jitter(' ( (lv_firstInstant_1_0= ruleInstantObsExpression ) ) (otherlv_2= '-' ( (lv_secondInstant_3_0= ruleInstantObsExpression ) ) )? otherlv_4= ')' )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2082:3: otherlv_0= 'jitter(' ( (lv_firstInstant_1_0= ruleInstantObsExpression ) ) (otherlv_2= '-' ( (lv_secondInstant_3_0= ruleInstantObsExpression ) ) )? otherlv_4= ')'
+ {
+ otherlv_0=(Token)match(input,47,FOLLOW_47_in_ruleJitterExp4631);
+
+ newLeafNode(otherlv_0, grammarAccess.getJitterExpAccess().getJitterKeyword_0());
+
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2086:1: ( (lv_firstInstant_1_0= ruleInstantObsExpression ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2087:1: (lv_firstInstant_1_0= ruleInstantObsExpression )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2087:1: (lv_firstInstant_1_0= ruleInstantObsExpression )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2088:3: lv_firstInstant_1_0= ruleInstantObsExpression
+ {
+
+ newCompositeNode(grammarAccess.getJitterExpAccess().getFirstInstantInstantObsExpressionParserRuleCall_1_0());
+
+ pushFollow(FOLLOW_ruleInstantObsExpression_in_ruleJitterExp4652);
+ lv_firstInstant_1_0=ruleInstantObsExpression();
+
+ state._fsp--;
+
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getJitterExpRule());
+ }
+ set(
+ current,
+ "firstInstant",
+ lv_firstInstant_1_0,
+ "InstantObsExpression");
+ afterParserOrEnumRuleCall();
+
+
+ }
+
+
+ }
+
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2104:2: (otherlv_2= '-' ( (lv_secondInstant_3_0= ruleInstantObsExpression ) ) )?
+ int alt36=2;
+ int LA36_0 = input.LA(1);
+
+ if ( (LA36_0==28) ) {
+ alt36=1;
+ }
+ switch (alt36) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2104:4: otherlv_2= '-' ( (lv_secondInstant_3_0= ruleInstantObsExpression ) )
+ {
+ otherlv_2=(Token)match(input,28,FOLLOW_28_in_ruleJitterExp4665);
+
+ newLeafNode(otherlv_2, grammarAccess.getJitterExpAccess().getHyphenMinusKeyword_2_0());
+
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2108:1: ( (lv_secondInstant_3_0= ruleInstantObsExpression ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2109:1: (lv_secondInstant_3_0= ruleInstantObsExpression )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2109:1: (lv_secondInstant_3_0= ruleInstantObsExpression )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2110:3: lv_secondInstant_3_0= ruleInstantObsExpression
+ {
+
+ newCompositeNode(grammarAccess.getJitterExpAccess().getSecondInstantInstantObsExpressionParserRuleCall_2_1_0());
+
+ pushFollow(FOLLOW_ruleInstantObsExpression_in_ruleJitterExp4686);
+ lv_secondInstant_3_0=ruleInstantObsExpression();
+
+ state._fsp--;
+
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getJitterExpRule());
+ }
+ set(
+ current,
+ "secondInstant",
+ lv_secondInstant_3_0,
+ "InstantObsExpression");
+ afterParserOrEnumRuleCall();
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+ otherlv_4=(Token)match(input,35,FOLLOW_35_in_ruleJitterExp4700);
+
+ newLeafNode(otherlv_4, grammarAccess.getJitterExpAccess().getRightParenthesisKeyword_3());
+
+
+ }
+
+
+ }
+
+ leaveRule();
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "ruleJitterExp"
+
+
+ // $ANTLR start "entryRuleVariableDeclaration"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2138:1: entryRuleVariableDeclaration returns [EObject current=null] : iv_ruleVariableDeclaration= ruleVariableDeclaration EOF ;
+ public final EObject entryRuleVariableDeclaration() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleVariableDeclaration = null;
+
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2139:2: (iv_ruleVariableDeclaration= ruleVariableDeclaration EOF )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2140:2: iv_ruleVariableDeclaration= ruleVariableDeclaration EOF
+ {
+ newCompositeNode(grammarAccess.getVariableDeclarationRule());
+ pushFollow(FOLLOW_ruleVariableDeclaration_in_entryRuleVariableDeclaration4736);
+ iv_ruleVariableDeclaration=ruleVariableDeclaration();
+
+ state._fsp--;
+
+ current =iv_ruleVariableDeclaration;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleVariableDeclaration4746);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "entryRuleVariableDeclaration"
+
+
+ // $ANTLR start "ruleVariableDeclaration"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2147:1: ruleVariableDeclaration returns [EObject current=null] : ( ( (lv_variableDeclaration_0_0= ruleVariableDirectionKind ) )? otherlv_1= '$' ( (lv_name_2_0= RULE_ID ) ) ( (otherlv_3= ':' ( (lv_type_4_0= ruleDataTypeName ) ) (otherlv_5= '=' otherlv_6= '(' ( (lv_initValue_7_0= ruleExpression ) ) otherlv_8= ')' )? ) | (otherlv_9= '=' otherlv_10= '(' ( (lv_initValue_11_0= ruleExpression ) ) otherlv_12= ')' ) ) ) ;
+ public final EObject ruleVariableDeclaration() throws RecognitionException {
+ EObject current = null;
+
+ Token otherlv_1=null;
+ Token lv_name_2_0=null;
+ Token otherlv_3=null;
+ Token otherlv_5=null;
+ Token otherlv_6=null;
+ Token otherlv_8=null;
+ Token otherlv_9=null;
+ Token otherlv_10=null;
+ Token otherlv_12=null;
+ AntlrDatatypeRuleToken lv_variableDeclaration_0_0 = null;
+
+ EObject lv_type_4_0 = null;
+
+ EObject lv_initValue_7_0 = null;
+
+ EObject lv_initValue_11_0 = null;
+
+
+ enterRule();
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2150:28: ( ( ( (lv_variableDeclaration_0_0= ruleVariableDirectionKind ) )? otherlv_1= '$' ( (lv_name_2_0= RULE_ID ) ) ( (otherlv_3= ':' ( (lv_type_4_0= ruleDataTypeName ) ) (otherlv_5= '=' otherlv_6= '(' ( (lv_initValue_7_0= ruleExpression ) ) otherlv_8= ')' )? ) | (otherlv_9= '=' otherlv_10= '(' ( (lv_initValue_11_0= ruleExpression ) ) otherlv_12= ')' ) ) ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2151:1: ( ( (lv_variableDeclaration_0_0= ruleVariableDirectionKind ) )? otherlv_1= '$' ( (lv_name_2_0= RULE_ID ) ) ( (otherlv_3= ':' ( (lv_type_4_0= ruleDataTypeName ) ) (otherlv_5= '=' otherlv_6= '(' ( (lv_initValue_7_0= ruleExpression ) ) otherlv_8= ')' )? ) | (otherlv_9= '=' otherlv_10= '(' ( (lv_initValue_11_0= ruleExpression ) ) otherlv_12= ')' ) ) )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2151:1: ( ( (lv_variableDeclaration_0_0= ruleVariableDirectionKind ) )? otherlv_1= '$' ( (lv_name_2_0= RULE_ID ) ) ( (otherlv_3= ':' ( (lv_type_4_0= ruleDataTypeName ) ) (otherlv_5= '=' otherlv_6= '(' ( (lv_initValue_7_0= ruleExpression ) ) otherlv_8= ')' )? ) | (otherlv_9= '=' otherlv_10= '(' ( (lv_initValue_11_0= ruleExpression ) ) otherlv_12= ')' ) ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2151:2: ( (lv_variableDeclaration_0_0= ruleVariableDirectionKind ) )? otherlv_1= '$' ( (lv_name_2_0= RULE_ID ) ) ( (otherlv_3= ':' ( (lv_type_4_0= ruleDataTypeName ) ) (otherlv_5= '=' otherlv_6= '(' ( (lv_initValue_7_0= ruleExpression ) ) otherlv_8= ')' )? ) | (otherlv_9= '=' otherlv_10= '(' ( (lv_initValue_11_0= ruleExpression ) ) otherlv_12= ')' ) )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2151:2: ( (lv_variableDeclaration_0_0= ruleVariableDirectionKind ) )?
+ int alt37=2;
+ int LA37_0 = input.LA(1);
+
+ if ( ((LA37_0>=49 && LA37_0<=51)) ) {
+ alt37=1;
+ }
+ switch (alt37) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2152:1: (lv_variableDeclaration_0_0= ruleVariableDirectionKind )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2152:1: (lv_variableDeclaration_0_0= ruleVariableDirectionKind )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2153:3: lv_variableDeclaration_0_0= ruleVariableDirectionKind
+ {
+
+ newCompositeNode(grammarAccess.getVariableDeclarationAccess().getVariableDeclarationVariableDirectionKindParserRuleCall_0_0());
+
+ pushFollow(FOLLOW_ruleVariableDirectionKind_in_ruleVariableDeclaration4792);
+ lv_variableDeclaration_0_0=ruleVariableDirectionKind();
+
+ state._fsp--;
+
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getVariableDeclarationRule());
+ }
+ set(
+ current,
+ "variableDeclaration",
+ lv_variableDeclaration_0_0,
+ "VariableDirectionKind");
+ afterParserOrEnumRuleCall();
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+ otherlv_1=(Token)match(input,48,FOLLOW_48_in_ruleVariableDeclaration4805);
+
+ newLeafNode(otherlv_1, grammarAccess.getVariableDeclarationAccess().getDollarSignKeyword_1());
+
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2173:1: ( (lv_name_2_0= RULE_ID ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2174:1: (lv_name_2_0= RULE_ID )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2174:1: (lv_name_2_0= RULE_ID )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2175:3: lv_name_2_0= RULE_ID
+ {
+ lv_name_2_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleVariableDeclaration4822);
+
+ newLeafNode(lv_name_2_0, grammarAccess.getVariableDeclarationAccess().getNameIDTerminalRuleCall_2_0());
+
+
+ if (current==null) {
+ current = createModelElement(grammarAccess.getVariableDeclarationRule());
+ }
+ setWithLastConsumed(
+ current,
+ "name",
+ lv_name_2_0,
+ "ID");
+
+
+ }
+
+
+ }
+
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2191:2: ( (otherlv_3= ':' ( (lv_type_4_0= ruleDataTypeName ) ) (otherlv_5= '=' otherlv_6= '(' ( (lv_initValue_7_0= ruleExpression ) ) otherlv_8= ')' )? ) | (otherlv_9= '=' otherlv_10= '(' ( (lv_initValue_11_0= ruleExpression ) ) otherlv_12= ')' ) )
+ int alt39=2;
+ int LA39_0 = input.LA(1);
+
+ if ( (LA39_0==26) ) {
+ alt39=1;
+ }
+ else if ( (LA39_0==43) ) {
+ alt39=2;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("", 39, 0, input);
+
+ throw nvae;
+ }
+ switch (alt39) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2191:3: (otherlv_3= ':' ( (lv_type_4_0= ruleDataTypeName ) ) (otherlv_5= '=' otherlv_6= '(' ( (lv_initValue_7_0= ruleExpression ) ) otherlv_8= ')' )? )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2191:3: (otherlv_3= ':' ( (lv_type_4_0= ruleDataTypeName ) ) (otherlv_5= '=' otherlv_6= '(' ( (lv_initValue_7_0= ruleExpression ) ) otherlv_8= ')' )? )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2191:5: otherlv_3= ':' ( (lv_type_4_0= ruleDataTypeName ) ) (otherlv_5= '=' otherlv_6= '(' ( (lv_initValue_7_0= ruleExpression ) ) otherlv_8= ')' )?
+ {
+ otherlv_3=(Token)match(input,26,FOLLOW_26_in_ruleVariableDeclaration4841);
+
+ newLeafNode(otherlv_3, grammarAccess.getVariableDeclarationAccess().getColonKeyword_3_0_0());
+
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2195:1: ( (lv_type_4_0= ruleDataTypeName ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2196:1: (lv_type_4_0= ruleDataTypeName )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2196:1: (lv_type_4_0= ruleDataTypeName )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2197:3: lv_type_4_0= ruleDataTypeName
+ {
+
+ newCompositeNode(grammarAccess.getVariableDeclarationAccess().getTypeDataTypeNameParserRuleCall_3_0_1_0());
+
+ pushFollow(FOLLOW_ruleDataTypeName_in_ruleVariableDeclaration4862);
+ lv_type_4_0=ruleDataTypeName();
+
+ state._fsp--;
+
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getVariableDeclarationRule());
+ }
+ set(
+ current,
+ "type",
+ lv_type_4_0,
+ "DataTypeName");
+ afterParserOrEnumRuleCall();
+
+
+ }
+
+
+ }
+
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2213:2: (otherlv_5= '=' otherlv_6= '(' ( (lv_initValue_7_0= ruleExpression ) ) otherlv_8= ')' )?
+ int alt38=2;
+ int LA38_0 = input.LA(1);
+
+ if ( (LA38_0==43) ) {
+ alt38=1;
+ }
+ switch (alt38) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2213:4: otherlv_5= '=' otherlv_6= '(' ( (lv_initValue_7_0= ruleExpression ) ) otherlv_8= ')'
+ {
+ otherlv_5=(Token)match(input,43,FOLLOW_43_in_ruleVariableDeclaration4875);
+
+ newLeafNode(otherlv_5, grammarAccess.getVariableDeclarationAccess().getEqualsSignKeyword_3_0_2_0());
+
+ otherlv_6=(Token)match(input,34,FOLLOW_34_in_ruleVariableDeclaration4887);
+
+ newLeafNode(otherlv_6, grammarAccess.getVariableDeclarationAccess().getLeftParenthesisKeyword_3_0_2_1());
+
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2221:1: ( (lv_initValue_7_0= ruleExpression ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2222:1: (lv_initValue_7_0= ruleExpression )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2222:1: (lv_initValue_7_0= ruleExpression )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2223:3: lv_initValue_7_0= ruleExpression
+ {
+
+ newCompositeNode(grammarAccess.getVariableDeclarationAccess().getInitValueExpressionParserRuleCall_3_0_2_2_0());
+
+ pushFollow(FOLLOW_ruleExpression_in_ruleVariableDeclaration4908);
+ lv_initValue_7_0=ruleExpression();
+
+ state._fsp--;
+
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getVariableDeclarationRule());
+ }
+ set(
+ current,
+ "initValue",
+ lv_initValue_7_0,
+ "Expression");
+ afterParserOrEnumRuleCall();
+
+
+ }
+
+
+ }
+
+ otherlv_8=(Token)match(input,35,FOLLOW_35_in_ruleVariableDeclaration4920);
+
+ newLeafNode(otherlv_8, grammarAccess.getVariableDeclarationAccess().getRightParenthesisKeyword_3_0_2_3());
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2244:6: (otherlv_9= '=' otherlv_10= '(' ( (lv_initValue_11_0= ruleExpression ) ) otherlv_12= ')' )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2244:6: (otherlv_9= '=' otherlv_10= '(' ( (lv_initValue_11_0= ruleExpression ) ) otherlv_12= ')' )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2244:8: otherlv_9= '=' otherlv_10= '(' ( (lv_initValue_11_0= ruleExpression ) ) otherlv_12= ')'
+ {
+ otherlv_9=(Token)match(input,43,FOLLOW_43_in_ruleVariableDeclaration4942);
+
+ newLeafNode(otherlv_9, grammarAccess.getVariableDeclarationAccess().getEqualsSignKeyword_3_1_0());
+
+ otherlv_10=(Token)match(input,34,FOLLOW_34_in_ruleVariableDeclaration4954);
+
+ newLeafNode(otherlv_10, grammarAccess.getVariableDeclarationAccess().getLeftParenthesisKeyword_3_1_1());
+
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2252:1: ( (lv_initValue_11_0= ruleExpression ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2253:1: (lv_initValue_11_0= ruleExpression )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2253:1: (lv_initValue_11_0= ruleExpression )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2254:3: lv_initValue_11_0= ruleExpression
+ {
+
+ newCompositeNode(grammarAccess.getVariableDeclarationAccess().getInitValueExpressionParserRuleCall_3_1_2_0());
+
+ pushFollow(FOLLOW_ruleExpression_in_ruleVariableDeclaration4975);
+ lv_initValue_11_0=ruleExpression();
+
+ state._fsp--;
+
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getVariableDeclarationRule());
+ }
+ set(
+ current,
+ "initValue",
+ lv_initValue_11_0,
+ "Expression");
+ afterParserOrEnumRuleCall();
+
+
+ }
+
+
+ }
+
+ otherlv_12=(Token)match(input,35,FOLLOW_35_in_ruleVariableDeclaration4987);
+
+ newLeafNode(otherlv_12, grammarAccess.getVariableDeclarationAccess().getRightParenthesisKeyword_3_1_3());
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+
+ }
+
+ leaveRule();
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "ruleVariableDeclaration"
+
+
+ // $ANTLR start "entryRuleVariableDirectionKind"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2282:1: entryRuleVariableDirectionKind returns [String current=null] : iv_ruleVariableDirectionKind= ruleVariableDirectionKind EOF ;
+ public final String entryRuleVariableDirectionKind() throws RecognitionException {
+ String current = null;
+
+ AntlrDatatypeRuleToken iv_ruleVariableDirectionKind = null;
+
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2283:2: (iv_ruleVariableDirectionKind= ruleVariableDirectionKind EOF )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2284:2: iv_ruleVariableDirectionKind= ruleVariableDirectionKind EOF
+ {
+ newCompositeNode(grammarAccess.getVariableDirectionKindRule());
+ pushFollow(FOLLOW_ruleVariableDirectionKind_in_entryRuleVariableDirectionKind5026);
+ iv_ruleVariableDirectionKind=ruleVariableDirectionKind();
+
+ state._fsp--;
+
+ current =iv_ruleVariableDirectionKind.getText();
+ match(input,EOF,FOLLOW_EOF_in_entryRuleVariableDirectionKind5037);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "entryRuleVariableDirectionKind"
+
+
+ // $ANTLR start "ruleVariableDirectionKind"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2291:1: ruleVariableDirectionKind returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= 'in' | kw= 'out' | kw= 'inout' ) ;
+ public final AntlrDatatypeRuleToken ruleVariableDirectionKind() throws RecognitionException {
+ AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+ Token kw=null;
+
+ enterRule();
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2294:28: ( (kw= 'in' | kw= 'out' | kw= 'inout' ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2295:1: (kw= 'in' | kw= 'out' | kw= 'inout' )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2295:1: (kw= 'in' | kw= 'out' | kw= 'inout' )
+ int alt40=3;
+ switch ( input.LA(1) ) {
+ case 49:
+ {
+ alt40=1;
+ }
+ break;
+ case 50:
+ {
+ alt40=2;
+ }
+ break;
+ case 51:
+ {
+ alt40=3;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("", 40, 0, input);
+
+ throw nvae;
+ }
+
+ switch (alt40) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2296:2: kw= 'in'
+ {
+ kw=(Token)match(input,49,FOLLOW_49_in_ruleVariableDirectionKind5075);
+
+ current.merge(kw);
+ newLeafNode(kw, grammarAccess.getVariableDirectionKindAccess().getInKeyword_0());
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2303:2: kw= 'out'
+ {
+ kw=(Token)match(input,50,FOLLOW_50_in_ruleVariableDirectionKind5094);
+
+ current.merge(kw);
+ newLeafNode(kw, grammarAccess.getVariableDirectionKindAccess().getOutKeyword_1());
+
+
+ }
+ break;
+ case 3 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2310:2: kw= 'inout'
+ {
+ kw=(Token)match(input,51,FOLLOW_51_in_ruleVariableDirectionKind5113);
+
+ current.merge(kw);
+ newLeafNode(kw, grammarAccess.getVariableDirectionKindAccess().getInoutKeyword_2());
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ leaveRule();
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "ruleVariableDirectionKind"
+
+
+ // $ANTLR start "entryRuleDataTypeName"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2323:1: entryRuleDataTypeName returns [EObject current=null] : iv_ruleDataTypeName= ruleDataTypeName EOF ;
+ public final EObject entryRuleDataTypeName() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleDataTypeName = null;
+
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2324:2: (iv_ruleDataTypeName= ruleDataTypeName EOF )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2325:2: iv_ruleDataTypeName= ruleDataTypeName EOF
+ {
+ newCompositeNode(grammarAccess.getDataTypeNameRule());
+ pushFollow(FOLLOW_ruleDataTypeName_in_entryRuleDataTypeName5153);
+ iv_ruleDataTypeName=ruleDataTypeName();
+
+ state._fsp--;
+
+ current =iv_ruleDataTypeName;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleDataTypeName5163);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "entryRuleDataTypeName"
+
+
+ // $ANTLR start "ruleDataTypeName"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2332:1: ruleDataTypeName returns [EObject current=null] : ( ( (lv_path_0_0= ruleQualifiedName ) )? ( (otherlv_1= RULE_ID ) ) ) ;
+ public final EObject ruleDataTypeName() throws RecognitionException {
+ EObject current = null;
+
+ Token otherlv_1=null;
+ EObject lv_path_0_0 = null;
+
+
+ enterRule();
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2335:28: ( ( ( (lv_path_0_0= ruleQualifiedName ) )? ( (otherlv_1= RULE_ID ) ) ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2336:1: ( ( (lv_path_0_0= ruleQualifiedName ) )? ( (otherlv_1= RULE_ID ) ) )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2336:1: ( ( (lv_path_0_0= ruleQualifiedName ) )? ( (otherlv_1= RULE_ID ) ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2336:2: ( (lv_path_0_0= ruleQualifiedName ) )? ( (otherlv_1= RULE_ID ) )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2336:2: ( (lv_path_0_0= ruleQualifiedName ) )?
+ int alt41=2;
+ int LA41_0 = input.LA(1);
+
+ if ( (LA41_0==RULE_ID) ) {
+ int LA41_1 = input.LA(2);
+
+ if ( (LA41_1==36) ) {
+ alt41=1;
+ }
+ }
+ switch (alt41) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2337:1: (lv_path_0_0= ruleQualifiedName )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2337:1: (lv_path_0_0= ruleQualifiedName )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2338:3: lv_path_0_0= ruleQualifiedName
+ {
+
+ newCompositeNode(grammarAccess.getDataTypeNameAccess().getPathQualifiedNameParserRuleCall_0_0());
+
+ pushFollow(FOLLOW_ruleQualifiedName_in_ruleDataTypeName5209);
+ lv_path_0_0=ruleQualifiedName();
+
+ state._fsp--;
+
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getDataTypeNameRule());
+ }
+ set(
+ current,
+ "path",
+ lv_path_0_0,
+ "QualifiedName");
+ afterParserOrEnumRuleCall();
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2354:3: ( (otherlv_1= RULE_ID ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2355:1: (otherlv_1= RULE_ID )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2355:1: (otherlv_1= RULE_ID )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2356:3: otherlv_1= RULE_ID
+ {
+
+ if (current==null) {
+ current = createModelElement(grammarAccess.getDataTypeNameRule());
+ }
+
+ otherlv_1=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleDataTypeName5230);
+
+ newLeafNode(otherlv_1, grammarAccess.getDataTypeNameAccess().getTypeDataTypeCrossReference_1_0());
+
+
+ }
+
+
+ }
+
+
+ }
+
+
+ }
+
+ leaveRule();
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "ruleDataTypeName"
+
+
+ // $ANTLR start "entryRuleNumberLiteralRule"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2375:1: entryRuleNumberLiteralRule returns [EObject current=null] : iv_ruleNumberLiteralRule= ruleNumberLiteralRule EOF ;
+ public final EObject entryRuleNumberLiteralRule() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleNumberLiteralRule = null;
+
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2376:2: (iv_ruleNumberLiteralRule= ruleNumberLiteralRule EOF )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2377:2: iv_ruleNumberLiteralRule= ruleNumberLiteralRule EOF
+ {
+ newCompositeNode(grammarAccess.getNumberLiteralRuleRule());
+ pushFollow(FOLLOW_ruleNumberLiteralRule_in_entryRuleNumberLiteralRule5266);
+ iv_ruleNumberLiteralRule=ruleNumberLiteralRule();
+
+ state._fsp--;
+
+ current =iv_ruleNumberLiteralRule;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleNumberLiteralRule5276);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "entryRuleNumberLiteralRule"
+
+
+ // $ANTLR start "ruleNumberLiteralRule"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2384:1: ruleNumberLiteralRule returns [EObject current=null] : (this_IntegerLiteralRule_0= ruleIntegerLiteralRule | this_UnlimitedLiteralRule_1= ruleUnlimitedLiteralRule | this_RealLiteralRule_2= ruleRealLiteralRule ) ;
+ public final EObject ruleNumberLiteralRule() throws RecognitionException {
+ EObject current = null;
+
+ EObject this_IntegerLiteralRule_0 = null;
+
+ EObject this_UnlimitedLiteralRule_1 = null;
+
+ EObject this_RealLiteralRule_2 = null;
+
+
+ enterRule();
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2387:28: ( (this_IntegerLiteralRule_0= ruleIntegerLiteralRule | this_UnlimitedLiteralRule_1= ruleUnlimitedLiteralRule | this_RealLiteralRule_2= ruleRealLiteralRule ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2388:1: (this_IntegerLiteralRule_0= ruleIntegerLiteralRule | this_UnlimitedLiteralRule_1= ruleUnlimitedLiteralRule | this_RealLiteralRule_2= ruleRealLiteralRule )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2388:1: (this_IntegerLiteralRule_0= ruleIntegerLiteralRule | this_UnlimitedLiteralRule_1= ruleUnlimitedLiteralRule | this_RealLiteralRule_2= ruleRealLiteralRule )
+ int alt42=3;
+ switch ( input.LA(1) ) {
+ case RULE_INTEGERLITERAL:
+ {
+ alt42=1;
+ }
+ break;
+ case 29:
+ {
+ alt42=2;
+ }
+ break;
+ case RULE_REALLITERAL:
+ {
+ alt42=3;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("", 42, 0, input);
+
+ throw nvae;
+ }
+
+ switch (alt42) {
+ case 1 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2389:5: this_IntegerLiteralRule_0= ruleIntegerLiteralRule
+ {
+
+ newCompositeNode(grammarAccess.getNumberLiteralRuleAccess().getIntegerLiteralRuleParserRuleCall_0());
+
+ pushFollow(FOLLOW_ruleIntegerLiteralRule_in_ruleNumberLiteralRule5323);
+ this_IntegerLiteralRule_0=ruleIntegerLiteralRule();
+
+ state._fsp--;
+
+
+ current = this_IntegerLiteralRule_0;
+ afterParserOrEnumRuleCall();
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2399:5: this_UnlimitedLiteralRule_1= ruleUnlimitedLiteralRule
+ {
+
+ newCompositeNode(grammarAccess.getNumberLiteralRuleAccess().getUnlimitedLiteralRuleParserRuleCall_1());
+
+ pushFollow(FOLLOW_ruleUnlimitedLiteralRule_in_ruleNumberLiteralRule5350);
+ this_UnlimitedLiteralRule_1=ruleUnlimitedLiteralRule();
+
+ state._fsp--;
+
+
+ current = this_UnlimitedLiteralRule_1;
+ afterParserOrEnumRuleCall();
+
+
+ }
+ break;
+ case 3 :
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2409:5: this_RealLiteralRule_2= ruleRealLiteralRule
+ {
+
+ newCompositeNode(grammarAccess.getNumberLiteralRuleAccess().getRealLiteralRuleParserRuleCall_2());
+
+ pushFollow(FOLLOW_ruleRealLiteralRule_in_ruleNumberLiteralRule5377);
+ this_RealLiteralRule_2=ruleRealLiteralRule();
+
+ state._fsp--;
+
+
+ current = this_RealLiteralRule_2;
+ afterParserOrEnumRuleCall();
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ leaveRule();
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "ruleNumberLiteralRule"
+
+
+ // $ANTLR start "entryRuleIntegerLiteralRule"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2425:1: entryRuleIntegerLiteralRule returns [EObject current=null] : iv_ruleIntegerLiteralRule= ruleIntegerLiteralRule EOF ;
+ public final EObject entryRuleIntegerLiteralRule() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleIntegerLiteralRule = null;
+
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2426:2: (iv_ruleIntegerLiteralRule= ruleIntegerLiteralRule EOF )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2427:2: iv_ruleIntegerLiteralRule= ruleIntegerLiteralRule EOF
+ {
+ newCompositeNode(grammarAccess.getIntegerLiteralRuleRule());
+ pushFollow(FOLLOW_ruleIntegerLiteralRule_in_entryRuleIntegerLiteralRule5412);
+ iv_ruleIntegerLiteralRule=ruleIntegerLiteralRule();
+
+ state._fsp--;
+
+ current =iv_ruleIntegerLiteralRule;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleIntegerLiteralRule5422);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "entryRuleIntegerLiteralRule"
+
+
+ // $ANTLR start "ruleIntegerLiteralRule"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2434:1: ruleIntegerLiteralRule returns [EObject current=null] : ( (lv_value_0_0= RULE_INTEGERLITERAL ) ) ;
+ public final EObject ruleIntegerLiteralRule() throws RecognitionException {
+ EObject current = null;
+
+ Token lv_value_0_0=null;
+
+ enterRule();
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2437:28: ( ( (lv_value_0_0= RULE_INTEGERLITERAL ) ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2438:1: ( (lv_value_0_0= RULE_INTEGERLITERAL ) )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2438:1: ( (lv_value_0_0= RULE_INTEGERLITERAL ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2439:1: (lv_value_0_0= RULE_INTEGERLITERAL )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2439:1: (lv_value_0_0= RULE_INTEGERLITERAL )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2440:3: lv_value_0_0= RULE_INTEGERLITERAL
+ {
+ lv_value_0_0=(Token)match(input,RULE_INTEGERLITERAL,FOLLOW_RULE_INTEGERLITERAL_in_ruleIntegerLiteralRule5463);
+
+ newLeafNode(lv_value_0_0, grammarAccess.getIntegerLiteralRuleAccess().getValueIntegerLiteralTerminalRuleCall_0());
+
+
+ if (current==null) {
+ current = createModelElement(grammarAccess.getIntegerLiteralRuleRule());
+ }
+ setWithLastConsumed(
+ current,
+ "value",
+ lv_value_0_0,
+ "IntegerLiteral");
+
+
+ }
+
+
+ }
+
+
+ }
+
+ leaveRule();
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "ruleIntegerLiteralRule"
+
+
+ // $ANTLR start "entryRuleUnlimitedLiteralRule"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2464:1: entryRuleUnlimitedLiteralRule returns [EObject current=null] : iv_ruleUnlimitedLiteralRule= ruleUnlimitedLiteralRule EOF ;
+ public final EObject entryRuleUnlimitedLiteralRule() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleUnlimitedLiteralRule = null;
+
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2465:2: (iv_ruleUnlimitedLiteralRule= ruleUnlimitedLiteralRule EOF )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2466:2: iv_ruleUnlimitedLiteralRule= ruleUnlimitedLiteralRule EOF
+ {
+ newCompositeNode(grammarAccess.getUnlimitedLiteralRuleRule());
+ pushFollow(FOLLOW_ruleUnlimitedLiteralRule_in_entryRuleUnlimitedLiteralRule5503);
+ iv_ruleUnlimitedLiteralRule=ruleUnlimitedLiteralRule();
+
+ state._fsp--;
+
+ current =iv_ruleUnlimitedLiteralRule;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleUnlimitedLiteralRule5513);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "entryRuleUnlimitedLiteralRule"
+
+
+ // $ANTLR start "ruleUnlimitedLiteralRule"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2473:1: ruleUnlimitedLiteralRule returns [EObject current=null] : ( (lv_value_0_0= '*' ) ) ;
+ public final EObject ruleUnlimitedLiteralRule() throws RecognitionException {
+ EObject current = null;
+
+ Token lv_value_0_0=null;
+
+ enterRule();
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2476:28: ( ( (lv_value_0_0= '*' ) ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2477:1: ( (lv_value_0_0= '*' ) )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2477:1: ( (lv_value_0_0= '*' ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2478:1: (lv_value_0_0= '*' )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2478:1: (lv_value_0_0= '*' )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2479:3: lv_value_0_0= '*'
+ {
+ lv_value_0_0=(Token)match(input,29,FOLLOW_29_in_ruleUnlimitedLiteralRule5555);
+
+ newLeafNode(lv_value_0_0, grammarAccess.getUnlimitedLiteralRuleAccess().getValueAsteriskKeyword_0());
+
+
+ if (current==null) {
+ current = createModelElement(grammarAccess.getUnlimitedLiteralRuleRule());
+ }
+ setWithLastConsumed(current, "value", lv_value_0_0, "*");
+
+
+ }
+
+
+ }
+
+
+ }
+
+ leaveRule();
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "ruleUnlimitedLiteralRule"
+
+
+ // $ANTLR start "entryRuleRealLiteralRule"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2500:1: entryRuleRealLiteralRule returns [EObject current=null] : iv_ruleRealLiteralRule= ruleRealLiteralRule EOF ;
+ public final EObject entryRuleRealLiteralRule() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleRealLiteralRule = null;
+
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2501:2: (iv_ruleRealLiteralRule= ruleRealLiteralRule EOF )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2502:2: iv_ruleRealLiteralRule= ruleRealLiteralRule EOF
+ {
+ newCompositeNode(grammarAccess.getRealLiteralRuleRule());
+ pushFollow(FOLLOW_ruleRealLiteralRule_in_entryRuleRealLiteralRule5603);
+ iv_ruleRealLiteralRule=ruleRealLiteralRule();
+
+ state._fsp--;
+
+ current =iv_ruleRealLiteralRule;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleRealLiteralRule5613);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "entryRuleRealLiteralRule"
+
+
+ // $ANTLR start "ruleRealLiteralRule"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2509:1: ruleRealLiteralRule returns [EObject current=null] : ( (lv_value_0_0= RULE_REALLITERAL ) ) ;
+ public final EObject ruleRealLiteralRule() throws RecognitionException {
+ EObject current = null;
+
+ Token lv_value_0_0=null;
+
+ enterRule();
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2512:28: ( ( (lv_value_0_0= RULE_REALLITERAL ) ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2513:1: ( (lv_value_0_0= RULE_REALLITERAL ) )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2513:1: ( (lv_value_0_0= RULE_REALLITERAL ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2514:1: (lv_value_0_0= RULE_REALLITERAL )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2514:1: (lv_value_0_0= RULE_REALLITERAL )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2515:3: lv_value_0_0= RULE_REALLITERAL
+ {
+ lv_value_0_0=(Token)match(input,RULE_REALLITERAL,FOLLOW_RULE_REALLITERAL_in_ruleRealLiteralRule5654);
+
+ newLeafNode(lv_value_0_0, grammarAccess.getRealLiteralRuleAccess().getValueRealLiteralTerminalRuleCall_0());
+
+
+ if (current==null) {
+ current = createModelElement(grammarAccess.getRealLiteralRuleRule());
+ }
+ setWithLastConsumed(
+ current,
+ "value",
+ lv_value_0_0,
+ "RealLiteral");
+
+
+ }
+
+
+ }
+
+
+ }
+
+ leaveRule();
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "ruleRealLiteralRule"
+
+
+ // $ANTLR start "entryRuleDateTimeLiteralRule"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2539:1: entryRuleDateTimeLiteralRule returns [EObject current=null] : iv_ruleDateTimeLiteralRule= ruleDateTimeLiteralRule EOF ;
+ public final EObject entryRuleDateTimeLiteralRule() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleDateTimeLiteralRule = null;
+
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2540:2: (iv_ruleDateTimeLiteralRule= ruleDateTimeLiteralRule EOF )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2541:2: iv_ruleDateTimeLiteralRule= ruleDateTimeLiteralRule EOF
+ {
+ newCompositeNode(grammarAccess.getDateTimeLiteralRuleRule());
+ pushFollow(FOLLOW_ruleDateTimeLiteralRule_in_entryRuleDateTimeLiteralRule5694);
+ iv_ruleDateTimeLiteralRule=ruleDateTimeLiteralRule();
+
+ state._fsp--;
+
+ current =iv_ruleDateTimeLiteralRule;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleDateTimeLiteralRule5704);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "entryRuleDateTimeLiteralRule"
+
+
+ // $ANTLR start "ruleDateTimeLiteralRule"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2548:1: ruleDateTimeLiteralRule returns [EObject current=null] : ( (lv_value_0_0= RULE_DATETIMELITERAL ) ) ;
+ public final EObject ruleDateTimeLiteralRule() throws RecognitionException {
+ EObject current = null;
+
+ Token lv_value_0_0=null;
+
+ enterRule();
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2551:28: ( ( (lv_value_0_0= RULE_DATETIMELITERAL ) ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2552:1: ( (lv_value_0_0= RULE_DATETIMELITERAL ) )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2552:1: ( (lv_value_0_0= RULE_DATETIMELITERAL ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2553:1: (lv_value_0_0= RULE_DATETIMELITERAL )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2553:1: (lv_value_0_0= RULE_DATETIMELITERAL )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2554:3: lv_value_0_0= RULE_DATETIMELITERAL
+ {
+ lv_value_0_0=(Token)match(input,RULE_DATETIMELITERAL,FOLLOW_RULE_DATETIMELITERAL_in_ruleDateTimeLiteralRule5745);
+
+ newLeafNode(lv_value_0_0, grammarAccess.getDateTimeLiteralRuleAccess().getValueDateTimeLiteralTerminalRuleCall_0());
+
+
+ if (current==null) {
+ current = createModelElement(grammarAccess.getDateTimeLiteralRuleRule());
+ }
+ setWithLastConsumed(
+ current,
+ "value",
+ lv_value_0_0,
+ "DateTimeLiteral");
+
+
+ }
+
+
+ }
+
+
+ }
+
+ leaveRule();
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "ruleDateTimeLiteralRule"
+
+
+ // $ANTLR start "entryRuleBooleanLiteralRule"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2578:1: entryRuleBooleanLiteralRule returns [EObject current=null] : iv_ruleBooleanLiteralRule= ruleBooleanLiteralRule EOF ;
+ public final EObject entryRuleBooleanLiteralRule() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleBooleanLiteralRule = null;
+
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2579:2: (iv_ruleBooleanLiteralRule= ruleBooleanLiteralRule EOF )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2580:2: iv_ruleBooleanLiteralRule= ruleBooleanLiteralRule EOF
+ {
+ newCompositeNode(grammarAccess.getBooleanLiteralRuleRule());
+ pushFollow(FOLLOW_ruleBooleanLiteralRule_in_entryRuleBooleanLiteralRule5785);
+ iv_ruleBooleanLiteralRule=ruleBooleanLiteralRule();
+
+ state._fsp--;
+
+ current =iv_ruleBooleanLiteralRule;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleBooleanLiteralRule5795);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "entryRuleBooleanLiteralRule"
+
+
+ // $ANTLR start "ruleBooleanLiteralRule"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2587:1: ruleBooleanLiteralRule returns [EObject current=null] : ( (lv_value_0_0= RULE_BOOLEANLITERAL ) ) ;
+ public final EObject ruleBooleanLiteralRule() throws RecognitionException {
+ EObject current = null;
+
+ Token lv_value_0_0=null;
+
+ enterRule();
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2590:28: ( ( (lv_value_0_0= RULE_BOOLEANLITERAL ) ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2591:1: ( (lv_value_0_0= RULE_BOOLEANLITERAL ) )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2591:1: ( (lv_value_0_0= RULE_BOOLEANLITERAL ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2592:1: (lv_value_0_0= RULE_BOOLEANLITERAL )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2592:1: (lv_value_0_0= RULE_BOOLEANLITERAL )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2593:3: lv_value_0_0= RULE_BOOLEANLITERAL
+ {
+ lv_value_0_0=(Token)match(input,RULE_BOOLEANLITERAL,FOLLOW_RULE_BOOLEANLITERAL_in_ruleBooleanLiteralRule5836);
+
+ newLeafNode(lv_value_0_0, grammarAccess.getBooleanLiteralRuleAccess().getValueBooleanLiteralTerminalRuleCall_0());
+
+
+ if (current==null) {
+ current = createModelElement(grammarAccess.getBooleanLiteralRuleRule());
+ }
+ setWithLastConsumed(
+ current,
+ "value",
+ lv_value_0_0,
+ "BooleanLiteral");
+
+
+ }
+
+
+ }
+
+
+ }
+
+ leaveRule();
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "ruleBooleanLiteralRule"
+
+
+ // $ANTLR start "entryRuleNullLiteralRule"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2617:1: entryRuleNullLiteralRule returns [EObject current=null] : iv_ruleNullLiteralRule= ruleNullLiteralRule EOF ;
+ public final EObject entryRuleNullLiteralRule() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleNullLiteralRule = null;
+
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2618:2: (iv_ruleNullLiteralRule= ruleNullLiteralRule EOF )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2619:2: iv_ruleNullLiteralRule= ruleNullLiteralRule EOF
+ {
+ newCompositeNode(grammarAccess.getNullLiteralRuleRule());
+ pushFollow(FOLLOW_ruleNullLiteralRule_in_entryRuleNullLiteralRule5876);
+ iv_ruleNullLiteralRule=ruleNullLiteralRule();
+
+ state._fsp--;
+
+ current =iv_ruleNullLiteralRule;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleNullLiteralRule5886);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "entryRuleNullLiteralRule"
+
+
+ // $ANTLR start "ruleNullLiteralRule"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2626:1: ruleNullLiteralRule returns [EObject current=null] : ( (lv_value_0_0= RULE_NULLLITERAL ) ) ;
+ public final EObject ruleNullLiteralRule() throws RecognitionException {
+ EObject current = null;
+
+ Token lv_value_0_0=null;
+
+ enterRule();
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2629:28: ( ( (lv_value_0_0= RULE_NULLLITERAL ) ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2630:1: ( (lv_value_0_0= RULE_NULLLITERAL ) )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2630:1: ( (lv_value_0_0= RULE_NULLLITERAL ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2631:1: (lv_value_0_0= RULE_NULLLITERAL )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2631:1: (lv_value_0_0= RULE_NULLLITERAL )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2632:3: lv_value_0_0= RULE_NULLLITERAL
+ {
+ lv_value_0_0=(Token)match(input,RULE_NULLLITERAL,FOLLOW_RULE_NULLLITERAL_in_ruleNullLiteralRule5927);
+
+ newLeafNode(lv_value_0_0, grammarAccess.getNullLiteralRuleAccess().getValueNullLiteralTerminalRuleCall_0());
+
+
+ if (current==null) {
+ current = createModelElement(grammarAccess.getNullLiteralRuleRule());
+ }
+ setWithLastConsumed(
+ current,
+ "value",
+ lv_value_0_0,
+ "NullLiteral");
+
+
+ }
+
+
+ }
+
+
+ }
+
+ leaveRule();
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "ruleNullLiteralRule"
+
+
+ // $ANTLR start "entryRuleDefaultLiteralRule"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2656:1: entryRuleDefaultLiteralRule returns [EObject current=null] : iv_ruleDefaultLiteralRule= ruleDefaultLiteralRule EOF ;
+ public final EObject entryRuleDefaultLiteralRule() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleDefaultLiteralRule = null;
+
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2657:2: (iv_ruleDefaultLiteralRule= ruleDefaultLiteralRule EOF )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2658:2: iv_ruleDefaultLiteralRule= ruleDefaultLiteralRule EOF
+ {
+ newCompositeNode(grammarAccess.getDefaultLiteralRuleRule());
+ pushFollow(FOLLOW_ruleDefaultLiteralRule_in_entryRuleDefaultLiteralRule5967);
+ iv_ruleDefaultLiteralRule=ruleDefaultLiteralRule();
+
+ state._fsp--;
+
+ current =iv_ruleDefaultLiteralRule;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleDefaultLiteralRule5977);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "entryRuleDefaultLiteralRule"
+
+
+ // $ANTLR start "ruleDefaultLiteralRule"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2665:1: ruleDefaultLiteralRule returns [EObject current=null] : ( (lv_value_0_0= '/' ) ) ;
+ public final EObject ruleDefaultLiteralRule() throws RecognitionException {
+ EObject current = null;
+
+ Token lv_value_0_0=null;
+
+ enterRule();
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2668:28: ( ( (lv_value_0_0= '/' ) ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2669:1: ( (lv_value_0_0= '/' ) )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2669:1: ( (lv_value_0_0= '/' ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2670:1: (lv_value_0_0= '/' )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2670:1: (lv_value_0_0= '/' )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2671:3: lv_value_0_0= '/'
+ {
+ lv_value_0_0=(Token)match(input,30,FOLLOW_30_in_ruleDefaultLiteralRule6019);
+
+ newLeafNode(lv_value_0_0, grammarAccess.getDefaultLiteralRuleAccess().getValueSolidusKeyword_0());
+
+
+ if (current==null) {
+ current = createModelElement(grammarAccess.getDefaultLiteralRuleRule());
+ }
+ setWithLastConsumed(current, "value", lv_value_0_0, "/");
+
+
+ }
+
+
+ }
+
+
+ }
+
+ leaveRule();
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "ruleDefaultLiteralRule"
+
+
+ // $ANTLR start "entryRuleStringLiteralRule"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2692:1: entryRuleStringLiteralRule returns [EObject current=null] : iv_ruleStringLiteralRule= ruleStringLiteralRule EOF ;
+ public final EObject entryRuleStringLiteralRule() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleStringLiteralRule = null;
+
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2693:2: (iv_ruleStringLiteralRule= ruleStringLiteralRule EOF )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2694:2: iv_ruleStringLiteralRule= ruleStringLiteralRule EOF
+ {
+ newCompositeNode(grammarAccess.getStringLiteralRuleRule());
+ pushFollow(FOLLOW_ruleStringLiteralRule_in_entryRuleStringLiteralRule6067);
+ iv_ruleStringLiteralRule=ruleStringLiteralRule();
+
+ state._fsp--;
+
+ current =iv_ruleStringLiteralRule;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleStringLiteralRule6077);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "entryRuleStringLiteralRule"
+
+
+ // $ANTLR start "ruleStringLiteralRule"
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2701:1: ruleStringLiteralRule returns [EObject current=null] : ( (lv_value_0_0= RULE_STRING ) ) ;
+ public final EObject ruleStringLiteralRule() throws RecognitionException {
+ EObject current = null;
+
+ Token lv_value_0_0=null;
+
+ enterRule();
+
+ try {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2704:28: ( ( (lv_value_0_0= RULE_STRING ) ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2705:1: ( (lv_value_0_0= RULE_STRING ) )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2705:1: ( (lv_value_0_0= RULE_STRING ) )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2706:1: (lv_value_0_0= RULE_STRING )
+ {
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2706:1: (lv_value_0_0= RULE_STRING )
+ // ../org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/parser/antlr/internal/InternalVSL.g:2707:3: lv_value_0_0= RULE_STRING
+ {
+ lv_value_0_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleStringLiteralRule6118);
+
+ newLeafNode(lv_value_0_0, grammarAccess.getStringLiteralRuleAccess().getValueSTRINGTerminalRuleCall_0());
+
+
+ if (current==null) {
+ current = createModelElement(grammarAccess.getStringLiteralRuleRule());
+ }
+ setWithLastConsumed(
+ current,
+ "value",
+ lv_value_0_0,
+ "STRING");
+
+
+ }
+
+
+ }
+
+
+ }
+
+ leaveRule();
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "ruleStringLiteralRule"
+
+ // Delegated rules
+
+
+ protected DFA15 dfa15 = new DFA15(this);
+ static final String DFA15_eotS =
+ "\13\uffff";
+ static final String DFA15_eofS =
+ "\13\uffff";
+ static final String DFA15_minS =
+ "\1\4\3\uffff\1\4\4\uffff\1\20\1\uffff";
+ static final String DFA15_maxS =
+ "\1\63\3\uffff\1\63\4\uffff\1\53\1\uffff";
+ static final String DFA15_acceptS =
+ "\1\uffff\1\1\1\2\1\3\1\uffff\1\6\1\7\1\10\1\4\1\uffff\1\5";
+ static final String DFA15_specialS =
+ "\13\uffff}>";
+ static final String[] DFA15_transitionS = {
+ "\1\2\6\1\22\uffff\2\1\3\uffff\1\7\2\uffff\2\3\1\uffff\1\4\3"+
+ "\uffff\1\5\1\uffff\2\5\4\6",
+ "",
+ "",
+ "",
+ "\1\11\6\10\20\uffff\4\10\1\uffff\1\10\1\uffff\1\10\2\uffff"+
+ "\2\10\1\uffff\1\10\3\uffff\1\10\1\uffff\6\10",
+ "",
+ "",
+ "",
+ "",
+ "\12\10\1\uffff\5\10\1\uffff\2\10\1\uffff\1\10\4\uffff\2\10"+
+ "\1\12",
+ ""
+ };
+
+ static final short[] DFA15_eot = DFA.unpackEncodedString(DFA15_eotS);
+ static final short[] DFA15_eof = DFA.unpackEncodedString(DFA15_eofS);
+ static final char[] DFA15_min = DFA.unpackEncodedStringToUnsignedChars(DFA15_minS);
+ static final char[] DFA15_max = DFA.unpackEncodedStringToUnsignedChars(DFA15_maxS);
+ static final short[] DFA15_accept = DFA.unpackEncodedString(DFA15_acceptS);
+ static final short[] DFA15_special = DFA.unpackEncodedString(DFA15_specialS);
+ static final short[][] DFA15_transition;
+
+ static {
+ int numStates = DFA15_transitionS.length;
+ DFA15_transition = new short[numStates][];
+ for (int i=0; i<numStates; i++) {
+ DFA15_transition[i] = DFA.unpackEncodedString(DFA15_transitionS[i]);
+ }
+ }
+
+ class DFA15 extends DFA {
+
+ public DFA15(BaseRecognizer recognizer) {
+ this.recognizer = recognizer;
+ this.decisionNumber = 15;
+ this.eot = DFA15_eot;
+ this.eof = DFA15_eof;
+ this.min = DFA15_min;
+ this.max = DFA15_max;
+ this.accept = DFA15_accept;
+ this.special = DFA15_special;
+ this.transition = DFA15_transition;
+ }
+ public String getDescription() {
+ return "857:1: (this_Literal_0= ruleLiteral | this_NameOrChoiceOrBehaviorCall_1= ruleNameOrChoiceOrBehaviorCall | this_Interval_2= ruleInterval | this_CollectionOrTuple_3= ruleCollectionOrTuple | this_Tuple_4= ruleTuple | this_TimeExpression_5= ruleTimeExpression | this_VariableDeclaration_6= ruleVariableDeclaration | (otherlv_7= '(' this_Expression_8= ruleExpression otherlv_9= ')' ) )";
+ }
+ }
+
+
+ public static final BitSet FOLLOW_ruleExpression_in_entryRuleExpression75 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleExpression85 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleAndOrXorExpression_in_ruleExpression130 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleAndOrXorExpression_in_entryRuleAndOrXorExpression165 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleAndOrXorExpression175 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleEqualityExpression_in_ruleAndOrXorExpression221 = new BitSet(new long[]{0x0000000000070002L});
+ public static final BitSet FOLLOW_16_in_ruleAndOrXorExpression242 = new BitSet(new long[]{0x000FD165780007F0L});
+ public static final BitSet FOLLOW_17_in_ruleAndOrXorExpression271 = new BitSet(new long[]{0x000FD165780007F0L});
+ public static final BitSet FOLLOW_18_in_ruleAndOrXorExpression300 = new BitSet(new long[]{0x000FD165780007F0L});
+ public static final BitSet FOLLOW_ruleEqualityExpression_in_ruleAndOrXorExpression337 = new BitSet(new long[]{0x0000000000070002L});
+ public static final BitSet FOLLOW_ruleEqualityExpression_in_entryRuleEqualityExpression375 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleEqualityExpression385 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleRelationalExpression_in_ruleEqualityExpression431 = new BitSet(new long[]{0x0000000000180002L});
+ public static final BitSet FOLLOW_19_in_ruleEqualityExpression452 = new BitSet(new long[]{0x000FD165780007F0L});
+ public static final BitSet FOLLOW_20_in_ruleEqualityExpression481 = new BitSet(new long[]{0x000FD165780007F0L});
+ public static final BitSet FOLLOW_ruleRelationalExpression_in_ruleEqualityExpression518 = new BitSet(new long[]{0x0000000000180002L});
+ public static final BitSet FOLLOW_ruleRelationalExpression_in_entryRuleRelationalExpression556 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleRelationalExpression566 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleConditionalExpression_in_ruleRelationalExpression612 = new BitSet(new long[]{0x0000000001E00002L});
+ public static final BitSet FOLLOW_21_in_ruleRelationalExpression633 = new BitSet(new long[]{0x000FD165780007F0L});
+ public static final BitSet FOLLOW_22_in_ruleRelationalExpression662 = new BitSet(new long[]{0x000FD165780007F0L});
+ public static final BitSet FOLLOW_23_in_ruleRelationalExpression691 = new BitSet(new long[]{0x000FD165780007F0L});
+ public static final BitSet FOLLOW_24_in_ruleRelationalExpression720 = new BitSet(new long[]{0x000FD165780007F0L});
+ public static final BitSet FOLLOW_ruleConditionalExpression_in_ruleRelationalExpression757 = new BitSet(new long[]{0x0000000001E00002L});
+ public static final BitSet FOLLOW_ruleConditionalExpression_in_entryRuleConditionalExpression795 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleConditionalExpression805 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleAdditiveExpression_in_ruleConditionalExpression851 = new BitSet(new long[]{0x0000000002000002L});
+ public static final BitSet FOLLOW_25_in_ruleConditionalExpression870 = new BitSet(new long[]{0x000FD165780007F0L});
+ public static final BitSet FOLLOW_ruleAdditiveExpression_in_ruleConditionalExpression904 = new BitSet(new long[]{0x0000000004000000L});
+ public static final BitSet FOLLOW_26_in_ruleConditionalExpression916 = new BitSet(new long[]{0x000FD165780007F0L});
+ public static final BitSet FOLLOW_ruleAdditiveExpression_in_ruleConditionalExpression937 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleAdditiveExpression_in_entryRuleAdditiveExpression975 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleAdditiveExpression985 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleMultiplicativeExpression_in_ruleAdditiveExpression1031 = new BitSet(new long[]{0x0000000018000002L});
+ public static final BitSet FOLLOW_27_in_ruleAdditiveExpression1052 = new BitSet(new long[]{0x000FD165780007F0L});
+ public static final BitSet FOLLOW_28_in_ruleAdditiveExpression1081 = new BitSet(new long[]{0x000FD165780007F0L});
+ public static final BitSet FOLLOW_ruleMultiplicativeExpression_in_ruleAdditiveExpression1118 = new BitSet(new long[]{0x0000000018000002L});
+ public static final BitSet FOLLOW_ruleMultiplicativeExpression_in_entryRuleMultiplicativeExpression1156 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleMultiplicativeExpression1166 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleUnaryExpression_in_ruleMultiplicativeExpression1212 = new BitSet(new long[]{0x00000000E0000002L});
+ public static final BitSet FOLLOW_29_in_ruleMultiplicativeExpression1233 = new BitSet(new long[]{0x000FD165780007F0L});
+ public static final BitSet FOLLOW_30_in_ruleMultiplicativeExpression1262 = new BitSet(new long[]{0x000FD165780007F0L});
+ public static final BitSet FOLLOW_31_in_ruleMultiplicativeExpression1291 = new BitSet(new long[]{0x000FD165780007F0L});
+ public static final BitSet FOLLOW_ruleUnaryExpression_in_ruleMultiplicativeExpression1328 = new BitSet(new long[]{0x00000000E0000002L});
+ public static final BitSet FOLLOW_ruleUnaryExpression_in_entryRuleUnaryExpression1366 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleUnaryExpression1376 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_32_in_ruleUnaryExpression1422 = new BitSet(new long[]{0x000FD165780007F0L});
+ public static final BitSet FOLLOW_28_in_ruleUnaryExpression1451 = new BitSet(new long[]{0x000FD165780007F0L});
+ public static final BitSet FOLLOW_27_in_ruleUnaryExpression1480 = new BitSet(new long[]{0x000FD165780007F0L});
+ public static final BitSet FOLLOW_ruleUnaryExpression_in_ruleUnaryExpression1517 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rulePrimaryExpression_in_ruleUnaryExpression1545 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rulePrimaryExpression_in_entryRulePrimaryExpression1581 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRulePrimaryExpression1591 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleValueSpecification_in_rulePrimaryExpression1637 = new BitSet(new long[]{0x0000000200000002L});
+ public static final BitSet FOLLOW_33_in_rulePrimaryExpression1650 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_ruleSuffixExpression_in_rulePrimaryExpression1671 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleValueSpecification_in_entryRuleValueSpecification1709 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleValueSpecification1719 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleLiteral_in_ruleValueSpecification1766 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleNameOrChoiceOrBehaviorCall_in_ruleValueSpecification1793 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleInterval_in_ruleValueSpecification1820 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleCollectionOrTuple_in_ruleValueSpecification1847 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleTuple_in_ruleValueSpecification1874 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleTimeExpression_in_ruleValueSpecification1901 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleVariableDeclaration_in_ruleValueSpecification1928 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_34_in_ruleValueSpecification1946 = new BitSet(new long[]{0x000FD165780007F0L});
+ public static final BitSet FOLLOW_ruleExpression_in_ruleValueSpecification1968 = new BitSet(new long[]{0x0000000800000000L});
+ public static final BitSet FOLLOW_35_in_ruleValueSpecification1979 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleSuffixExpression_in_entryRuleSuffixExpression2016 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleSuffixExpression2026 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rulePropertyCallExpression_in_ruleSuffixExpression2073 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleOperationCallExpression_in_ruleSuffixExpression2100 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rulePropertyCallExpression_in_entryRulePropertyCallExpression2135 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRulePropertyCallExpression2145 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_ID_in_rulePropertyCallExpression2190 = new BitSet(new long[]{0x0000000200000002L});
+ public static final BitSet FOLLOW_33_in_rulePropertyCallExpression2203 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_ruleSuffixExpression_in_rulePropertyCallExpression2224 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleOperationCallExpression_in_entryRuleOperationCallExpression2262 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleOperationCallExpression2272 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_ID_in_ruleOperationCallExpression2317 = new BitSet(new long[]{0x0000000400000000L});
+ public static final BitSet FOLLOW_34_in_ruleOperationCallExpression2329 = new BitSet(new long[]{0x000FD16D780007F0L});
+ public static final BitSet FOLLOW_ruleListOfValues_in_ruleOperationCallExpression2350 = new BitSet(new long[]{0x0000000800000000L});
+ public static final BitSet FOLLOW_35_in_ruleOperationCallExpression2363 = new BitSet(new long[]{0x0000000200000002L});
+ public static final BitSet FOLLOW_33_in_ruleOperationCallExpression2376 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_ruleSuffixExpression_in_ruleOperationCallExpression2397 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleLiteral_in_entryRuleLiteral2435 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleLiteral2445 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleNumberLiteralRule_in_ruleLiteral2492 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleDateTimeLiteralRule_in_ruleLiteral2519 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleBooleanLiteralRule_in_ruleLiteral2546 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleNullLiteralRule_in_ruleLiteral2573 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleDefaultLiteralRule_in_ruleLiteral2600 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleStringLiteralRule_in_ruleLiteral2627 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleNameOrChoiceOrBehaviorCall_in_entryRuleNameOrChoiceOrBehaviorCall2662 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleNameOrChoiceOrBehaviorCall2672 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleQualifiedName_in_ruleNameOrChoiceOrBehaviorCall2718 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_RULE_ID_in_ruleNameOrChoiceOrBehaviorCall2739 = new BitSet(new long[]{0x0000000400000002L});
+ public static final BitSet FOLLOW_34_in_ruleNameOrChoiceOrBehaviorCall2752 = new BitSet(new long[]{0x000FD16D780007F0L});
+ public static final BitSet FOLLOW_ruleListOfValues_in_ruleNameOrChoiceOrBehaviorCall2773 = new BitSet(new long[]{0x0000000800000000L});
+ public static final BitSet FOLLOW_35_in_ruleNameOrChoiceOrBehaviorCall2786 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleQualifiedName_in_entryRuleQualifiedName2824 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleQualifiedName2834 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_ID_in_ruleQualifiedName2879 = new BitSet(new long[]{0x0000001000000000L});
+ public static final BitSet FOLLOW_36_in_ruleQualifiedName2891 = new BitSet(new long[]{0x0000000000000012L});
+ public static final BitSet FOLLOW_ruleQualifiedName_in_ruleQualifiedName2912 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleInterval_in_entryRuleInterval2949 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleInterval2959 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_37_in_ruleInterval2997 = new BitSet(new long[]{0x000FD165780007F0L});
+ public static final BitSet FOLLOW_38_in_ruleInterval3021 = new BitSet(new long[]{0x000FD165780007F0L});
+ public static final BitSet FOLLOW_ruleExpression_in_ruleInterval3056 = new BitSet(new long[]{0x0000008000000000L});
+ public static final BitSet FOLLOW_39_in_ruleInterval3068 = new BitSet(new long[]{0x000FD165780007F0L});
+ public static final BitSet FOLLOW_ruleExpression_in_ruleInterval3089 = new BitSet(new long[]{0x0000006000000000L});
+ public static final BitSet FOLLOW_37_in_ruleInterval3108 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_38_in_ruleInterval3139 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleCollectionOrTuple_in_entryRuleCollectionOrTuple3176 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleCollectionOrTuple3186 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_40_in_ruleCollectionOrTuple3223 = new BitSet(new long[]{0x000FD165780007F0L});
+ public static final BitSet FOLLOW_ruleListOfValues_in_ruleCollectionOrTuple3244 = new BitSet(new long[]{0x0000020000000000L});
+ public static final BitSet FOLLOW_41_in_ruleCollectionOrTuple3256 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleTuple_in_entryRuleTuple3292 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleTuple3302 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_40_in_ruleTuple3339 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_ruleListOfValueNamePairs_in_ruleTuple3360 = new BitSet(new long[]{0x0000020000000000L});
+ public static final BitSet FOLLOW_41_in_ruleTuple3372 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleListOfValues_in_entryRuleListOfValues3408 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleListOfValues3418 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleExpression_in_ruleListOfValues3464 = new BitSet(new long[]{0x0000040000000002L});
+ public static final BitSet FOLLOW_42_in_ruleListOfValues3477 = new BitSet(new long[]{0x000FD165780007F0L});
+ public static final BitSet FOLLOW_ruleExpression_in_ruleListOfValues3498 = new BitSet(new long[]{0x0000040000000002L});
+ public static final BitSet FOLLOW_ruleListOfValueNamePairs_in_entryRuleListOfValueNamePairs3536 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleListOfValueNamePairs3546 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleValueNamePair_in_ruleListOfValueNamePairs3592 = new BitSet(new long[]{0x0000040000000002L});
+ public static final BitSet FOLLOW_42_in_ruleListOfValueNamePairs3605 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_ruleValueNamePair_in_ruleListOfValueNamePairs3626 = new BitSet(new long[]{0x0000040000000002L});
+ public static final BitSet FOLLOW_ruleValueNamePair_in_entryRuleValueNamePair3664 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleValueNamePair3674 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_ID_in_ruleValueNamePair3719 = new BitSet(new long[]{0x0000080000000000L});
+ public static final BitSet FOLLOW_43_in_ruleValueNamePair3731 = new BitSet(new long[]{0x000FD165780007F0L});
+ public static final BitSet FOLLOW_ruleExpression_in_ruleValueNamePair3752 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleTimeExpression_in_entryRuleTimeExpression3788 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleTimeExpression3798 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleInstantObsExpression_in_ruleTimeExpression3845 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleDurationObsExpression_in_ruleTimeExpression3872 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleJitterExp_in_ruleTimeExpression3899 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleInstantObsExpression_in_entryRuleInstantObsExpression3934 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleInstantObsExpression3944 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_44_in_ruleInstantObsExpression3981 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_ruleInstantObsName_in_ruleInstantObsExpression4002 = new BitSet(new long[]{0x0000200400000002L});
+ public static final BitSet FOLLOW_34_in_ruleInstantObsExpression4015 = new BitSet(new long[]{0x000FD165780007F0L});
+ public static final BitSet FOLLOW_ruleExpression_in_ruleInstantObsExpression4036 = new BitSet(new long[]{0x0000000800000000L});
+ public static final BitSet FOLLOW_35_in_ruleInstantObsExpression4048 = new BitSet(new long[]{0x0000200000000002L});
+ public static final BitSet FOLLOW_45_in_ruleInstantObsExpression4063 = new BitSet(new long[]{0x0000000400000000L});
+ public static final BitSet FOLLOW_34_in_ruleInstantObsExpression4075 = new BitSet(new long[]{0x000FD165780007F0L});
+ public static final BitSet FOLLOW_ruleExpression_in_ruleInstantObsExpression4096 = new BitSet(new long[]{0x0000000800000000L});
+ public static final BitSet FOLLOW_35_in_ruleInstantObsExpression4108 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleInstantObsName_in_entryRuleInstantObsName4146 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleInstantObsName4156 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleQualifiedName_in_ruleInstantObsName4202 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_RULE_ID_in_ruleInstantObsName4223 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleDurationObsExpression_in_entryRuleDurationObsExpression4259 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleDurationObsExpression4269 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_46_in_ruleDurationObsExpression4306 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_ruleDurationObsName_in_ruleDurationObsExpression4327 = new BitSet(new long[]{0x0000200400000002L});
+ public static final BitSet FOLLOW_34_in_ruleDurationObsExpression4340 = new BitSet(new long[]{0x000FD165780007F0L});
+ public static final BitSet FOLLOW_ruleExpression_in_ruleDurationObsExpression4361 = new BitSet(new long[]{0x0000000800000000L});
+ public static final BitSet FOLLOW_35_in_ruleDurationObsExpression4373 = new BitSet(new long[]{0x0000200000000002L});
+ public static final BitSet FOLLOW_45_in_ruleDurationObsExpression4388 = new BitSet(new long[]{0x0000000400000000L});
+ public static final BitSet FOLLOW_34_in_ruleDurationObsExpression4400 = new BitSet(new long[]{0x000FD165780007F0L});
+ public static final BitSet FOLLOW_ruleExpression_in_ruleDurationObsExpression4421 = new BitSet(new long[]{0x0000000800000000L});
+ public static final BitSet FOLLOW_35_in_ruleDurationObsExpression4433 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleDurationObsName_in_entryRuleDurationObsName4471 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleDurationObsName4481 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleQualifiedName_in_ruleDurationObsName4527 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_RULE_ID_in_ruleDurationObsName4548 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleJitterExp_in_entryRuleJitterExp4584 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleJitterExp4594 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_47_in_ruleJitterExp4631 = new BitSet(new long[]{0x0000100000000000L});
+ public static final BitSet FOLLOW_ruleInstantObsExpression_in_ruleJitterExp4652 = new BitSet(new long[]{0x0000000810000000L});
+ public static final BitSet FOLLOW_28_in_ruleJitterExp4665 = new BitSet(new long[]{0x0000100000000000L});
+ public static final BitSet FOLLOW_ruleInstantObsExpression_in_ruleJitterExp4686 = new BitSet(new long[]{0x0000000800000000L});
+ public static final BitSet FOLLOW_35_in_ruleJitterExp4700 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleVariableDeclaration_in_entryRuleVariableDeclaration4736 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleVariableDeclaration4746 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleVariableDirectionKind_in_ruleVariableDeclaration4792 = new BitSet(new long[]{0x0001000000000000L});
+ public static final BitSet FOLLOW_48_in_ruleVariableDeclaration4805 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_RULE_ID_in_ruleVariableDeclaration4822 = new BitSet(new long[]{0x0000080004000000L});
+ public static final BitSet FOLLOW_26_in_ruleVariableDeclaration4841 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_ruleDataTypeName_in_ruleVariableDeclaration4862 = new BitSet(new long[]{0x0000080000000002L});
+ public static final BitSet FOLLOW_43_in_ruleVariableDeclaration4875 = new BitSet(new long[]{0x0000000400000000L});
+ public static final BitSet FOLLOW_34_in_ruleVariableDeclaration4887 = new BitSet(new long[]{0x000FD165780007F0L});
+ public static final BitSet FOLLOW_ruleExpression_in_ruleVariableDeclaration4908 = new BitSet(new long[]{0x0000000800000000L});
+ public static final BitSet FOLLOW_35_in_ruleVariableDeclaration4920 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_43_in_ruleVariableDeclaration4942 = new BitSet(new long[]{0x0000000400000000L});
+ public static final BitSet FOLLOW_34_in_ruleVariableDeclaration4954 = new BitSet(new long[]{0x000FD165780007F0L});
+ public static final BitSet FOLLOW_ruleExpression_in_ruleVariableDeclaration4975 = new BitSet(new long[]{0x0000000800000000L});
+ public static final BitSet FOLLOW_35_in_ruleVariableDeclaration4987 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleVariableDirectionKind_in_entryRuleVariableDirectionKind5026 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleVariableDirectionKind5037 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_49_in_ruleVariableDirectionKind5075 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_50_in_ruleVariableDirectionKind5094 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_51_in_ruleVariableDirectionKind5113 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleDataTypeName_in_entryRuleDataTypeName5153 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleDataTypeName5163 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleQualifiedName_in_ruleDataTypeName5209 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_RULE_ID_in_ruleDataTypeName5230 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleNumberLiteralRule_in_entryRuleNumberLiteralRule5266 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleNumberLiteralRule5276 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleIntegerLiteralRule_in_ruleNumberLiteralRule5323 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleUnlimitedLiteralRule_in_ruleNumberLiteralRule5350 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleRealLiteralRule_in_ruleNumberLiteralRule5377 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleIntegerLiteralRule_in_entryRuleIntegerLiteralRule5412 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleIntegerLiteralRule5422 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_INTEGERLITERAL_in_ruleIntegerLiteralRule5463 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleUnlimitedLiteralRule_in_entryRuleUnlimitedLiteralRule5503 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleUnlimitedLiteralRule5513 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_29_in_ruleUnlimitedLiteralRule5555 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleRealLiteralRule_in_entryRuleRealLiteralRule5603 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleRealLiteralRule5613 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_REALLITERAL_in_ruleRealLiteralRule5654 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleDateTimeLiteralRule_in_entryRuleDateTimeLiteralRule5694 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleDateTimeLiteralRule5704 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_DATETIMELITERAL_in_ruleDateTimeLiteralRule5745 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleBooleanLiteralRule_in_entryRuleBooleanLiteralRule5785 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleBooleanLiteralRule5795 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_BOOLEANLITERAL_in_ruleBooleanLiteralRule5836 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleNullLiteralRule_in_entryRuleNullLiteralRule5876 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleNullLiteralRule5886 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_NULLLITERAL_in_ruleNullLiteralRule5927 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleDefaultLiteralRule_in_entryRuleDefaultLiteralRule5967 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleDefaultLiteralRule5977 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_30_in_ruleDefaultLiteralRule6019 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleStringLiteralRule_in_entryRuleStringLiteralRule6067 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleStringLiteralRule6077 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_STRING_in_ruleStringLiteralRule6118 = new BitSet(new long[]{0x0000000000000002L});
+
+} \ No newline at end of file
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/services/VSLGrammarAccess.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/services/VSLGrammarAccess.java
new file mode 100644
index 00000000000..d5626f0f811
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/services/VSLGrammarAccess.java
@@ -0,0 +1,2141 @@
+/*
+* generated by Xtext
+*/
+
+package org.eclipse.papyrus.marte.vsl.services;
+
+import com.google.inject.Singleton;
+import com.google.inject.Inject;
+
+import org.eclipse.xtext.*;
+import org.eclipse.xtext.service.GrammarProvider;
+import org.eclipse.xtext.service.AbstractElementFinder.*;
+
+import org.eclipse.xtext.common.services.TerminalsGrammarAccess;
+
+@Singleton
+public class VSLGrammarAccess extends AbstractGrammarElementFinder {
+
+
+ public class ExpressionElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Expression");
+ private final Assignment cExpAssignment = (Assignment)rule.eContents().get(1);
+ private final RuleCall cExpAndOrXorExpressionParserRuleCall_0 = (RuleCall)cExpAssignment.eContents().get(0);
+
+ //Expression:
+ // exp=AndOrXorExpression;
+ public ParserRule getRule() { return rule; }
+
+ //exp=AndOrXorExpression
+ public Assignment getExpAssignment() { return cExpAssignment; }
+
+ //AndOrXorExpression
+ public RuleCall getExpAndOrXorExpressionParserRuleCall_0() { return cExpAndOrXorExpressionParserRuleCall_0; }
+ }
+
+ public class AndOrXorExpressionElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "AndOrXorExpression");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Assignment cExpAssignment_0 = (Assignment)cGroup.eContents().get(0);
+ private final RuleCall cExpEqualityExpressionParserRuleCall_0_0 = (RuleCall)cExpAssignment_0.eContents().get(0);
+ private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
+ private final Assignment cOpAssignment_1_0 = (Assignment)cGroup_1.eContents().get(0);
+ private final Alternatives cOpAlternatives_1_0_0 = (Alternatives)cOpAssignment_1_0.eContents().get(0);
+ private final Keyword cOpAndKeyword_1_0_0_0 = (Keyword)cOpAlternatives_1_0_0.eContents().get(0);
+ private final Keyword cOpOrKeyword_1_0_0_1 = (Keyword)cOpAlternatives_1_0_0.eContents().get(1);
+ private final Keyword cOpXorKeyword_1_0_0_2 = (Keyword)cOpAlternatives_1_0_0.eContents().get(2);
+ private final Assignment cExpAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1);
+ private final RuleCall cExpEqualityExpressionParserRuleCall_1_1_0 = (RuleCall)cExpAssignment_1_1.eContents().get(0);
+
+ //AndOrXorExpression:
+ // exp+=EqualityExpression (op+=("and" | "or" | "xor") exp+=EqualityExpression)*;
+ public ParserRule getRule() { return rule; }
+
+ //exp+=EqualityExpression (op+=("and" | "or" | "xor") exp+=EqualityExpression)*
+ public Group getGroup() { return cGroup; }
+
+ //exp+=EqualityExpression
+ public Assignment getExpAssignment_0() { return cExpAssignment_0; }
+
+ //EqualityExpression
+ public RuleCall getExpEqualityExpressionParserRuleCall_0_0() { return cExpEqualityExpressionParserRuleCall_0_0; }
+
+ //(op+=("and" | "or" | "xor") exp+=EqualityExpression)*
+ public Group getGroup_1() { return cGroup_1; }
+
+ //op+=("and" | "or" | "xor")
+ public Assignment getOpAssignment_1_0() { return cOpAssignment_1_0; }
+
+ //"and" | "or" | "xor"
+ public Alternatives getOpAlternatives_1_0_0() { return cOpAlternatives_1_0_0; }
+
+ //"and"
+ public Keyword getOpAndKeyword_1_0_0_0() { return cOpAndKeyword_1_0_0_0; }
+
+ //"or"
+ public Keyword getOpOrKeyword_1_0_0_1() { return cOpOrKeyword_1_0_0_1; }
+
+ //"xor"
+ public Keyword getOpXorKeyword_1_0_0_2() { return cOpXorKeyword_1_0_0_2; }
+
+ //exp+=EqualityExpression
+ public Assignment getExpAssignment_1_1() { return cExpAssignment_1_1; }
+
+ //EqualityExpression
+ public RuleCall getExpEqualityExpressionParserRuleCall_1_1_0() { return cExpEqualityExpressionParserRuleCall_1_1_0; }
+ }
+
+ public class EqualityExpressionElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "EqualityExpression");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Assignment cExpAssignment_0 = (Assignment)cGroup.eContents().get(0);
+ private final RuleCall cExpRelationalExpressionParserRuleCall_0_0 = (RuleCall)cExpAssignment_0.eContents().get(0);
+ private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
+ private final Assignment cOpAssignment_1_0 = (Assignment)cGroup_1.eContents().get(0);
+ private final Alternatives cOpAlternatives_1_0_0 = (Alternatives)cOpAssignment_1_0.eContents().get(0);
+ private final Keyword cOpEqualsSignEqualsSignKeyword_1_0_0_0 = (Keyword)cOpAlternatives_1_0_0.eContents().get(0);
+ private final Keyword cOpLessThanSignGreaterThanSignKeyword_1_0_0_1 = (Keyword)cOpAlternatives_1_0_0.eContents().get(1);
+ private final Assignment cExpAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1);
+ private final RuleCall cExpRelationalExpressionParserRuleCall_1_1_0 = (RuleCall)cExpAssignment_1_1.eContents().get(0);
+
+ //EqualityExpression:
+ // exp+=RelationalExpression (op+=("==" | "<>") exp+=RelationalExpression)*;
+ public ParserRule getRule() { return rule; }
+
+ //exp+=RelationalExpression (op+=("==" | "<>") exp+=RelationalExpression)*
+ public Group getGroup() { return cGroup; }
+
+ //exp+=RelationalExpression
+ public Assignment getExpAssignment_0() { return cExpAssignment_0; }
+
+ //RelationalExpression
+ public RuleCall getExpRelationalExpressionParserRuleCall_0_0() { return cExpRelationalExpressionParserRuleCall_0_0; }
+
+ //(op+=("==" | "<>") exp+=RelationalExpression)*
+ public Group getGroup_1() { return cGroup_1; }
+
+ //op+=("==" | "<>")
+ public Assignment getOpAssignment_1_0() { return cOpAssignment_1_0; }
+
+ //"==" | "<>"
+ public Alternatives getOpAlternatives_1_0_0() { return cOpAlternatives_1_0_0; }
+
+ //"=="
+ public Keyword getOpEqualsSignEqualsSignKeyword_1_0_0_0() { return cOpEqualsSignEqualsSignKeyword_1_0_0_0; }
+
+ //"<>"
+ public Keyword getOpLessThanSignGreaterThanSignKeyword_1_0_0_1() { return cOpLessThanSignGreaterThanSignKeyword_1_0_0_1; }
+
+ //exp+=RelationalExpression
+ public Assignment getExpAssignment_1_1() { return cExpAssignment_1_1; }
+
+ //RelationalExpression
+ public RuleCall getExpRelationalExpressionParserRuleCall_1_1_0() { return cExpRelationalExpressionParserRuleCall_1_1_0; }
+ }
+
+ public class RelationalExpressionElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "RelationalExpression");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Assignment cExpAssignment_0 = (Assignment)cGroup.eContents().get(0);
+ private final RuleCall cExpConditionalExpressionParserRuleCall_0_0 = (RuleCall)cExpAssignment_0.eContents().get(0);
+ private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
+ private final Assignment cOpAssignment_1_0 = (Assignment)cGroup_1.eContents().get(0);
+ private final Alternatives cOpAlternatives_1_0_0 = (Alternatives)cOpAssignment_1_0.eContents().get(0);
+ private final Keyword cOpLessThanSignKeyword_1_0_0_0 = (Keyword)cOpAlternatives_1_0_0.eContents().get(0);
+ private final Keyword cOpGreaterThanSignKeyword_1_0_0_1 = (Keyword)cOpAlternatives_1_0_0.eContents().get(1);
+ private final Keyword cOpLessThanSignEqualsSignKeyword_1_0_0_2 = (Keyword)cOpAlternatives_1_0_0.eContents().get(2);
+ private final Keyword cOpGreaterThanSignEqualsSignKeyword_1_0_0_3 = (Keyword)cOpAlternatives_1_0_0.eContents().get(3);
+ private final Assignment cExpAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1);
+ private final RuleCall cExpConditionalExpressionParserRuleCall_1_1_0 = (RuleCall)cExpAssignment_1_1.eContents().get(0);
+
+ //RelationalExpression:
+ // exp+=ConditionalExpression (op+=("<" | ">" | "<=" | ">=") exp+=ConditionalExpression)*;
+ public ParserRule getRule() { return rule; }
+
+ //exp+=ConditionalExpression (op+=("<" | ">" | "<=" | ">=") exp+=ConditionalExpression)*
+ public Group getGroup() { return cGroup; }
+
+ //exp+=ConditionalExpression
+ public Assignment getExpAssignment_0() { return cExpAssignment_0; }
+
+ //ConditionalExpression
+ public RuleCall getExpConditionalExpressionParserRuleCall_0_0() { return cExpConditionalExpressionParserRuleCall_0_0; }
+
+ //(op+=("<" | ">" | "<=" | ">=") exp+=ConditionalExpression)*
+ public Group getGroup_1() { return cGroup_1; }
+
+ //op+=("<" | ">" | "<=" | ">=")
+ public Assignment getOpAssignment_1_0() { return cOpAssignment_1_0; }
+
+ //"<" | ">" | "<=" | ">="
+ public Alternatives getOpAlternatives_1_0_0() { return cOpAlternatives_1_0_0; }
+
+ //"<"
+ public Keyword getOpLessThanSignKeyword_1_0_0_0() { return cOpLessThanSignKeyword_1_0_0_0; }
+
+ //">"
+ public Keyword getOpGreaterThanSignKeyword_1_0_0_1() { return cOpGreaterThanSignKeyword_1_0_0_1; }
+
+ //"<="
+ public Keyword getOpLessThanSignEqualsSignKeyword_1_0_0_2() { return cOpLessThanSignEqualsSignKeyword_1_0_0_2; }
+
+ //">="
+ public Keyword getOpGreaterThanSignEqualsSignKeyword_1_0_0_3() { return cOpGreaterThanSignEqualsSignKeyword_1_0_0_3; }
+
+ //exp+=ConditionalExpression
+ public Assignment getExpAssignment_1_1() { return cExpAssignment_1_1; }
+
+ //ConditionalExpression
+ public RuleCall getExpConditionalExpressionParserRuleCall_1_1_0() { return cExpConditionalExpressionParserRuleCall_1_1_0; }
+ }
+
+ public class ConditionalExpressionElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ConditionalExpression");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Assignment cExpAssignment_0 = (Assignment)cGroup.eContents().get(0);
+ private final RuleCall cExpAdditiveExpressionParserRuleCall_0_0 = (RuleCall)cExpAssignment_0.eContents().get(0);
+ private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
+ private final Assignment cOpAssignment_1_0 = (Assignment)cGroup_1.eContents().get(0);
+ private final Keyword cOpQuestionMarkKeyword_1_0_0 = (Keyword)cOpAssignment_1_0.eContents().get(0);
+ private final Assignment cExpAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1);
+ private final RuleCall cExpAdditiveExpressionParserRuleCall_1_1_0 = (RuleCall)cExpAssignment_1_1.eContents().get(0);
+ private final Keyword cColonKeyword_1_2 = (Keyword)cGroup_1.eContents().get(2);
+ private final Assignment cExpAssignment_1_3 = (Assignment)cGroup_1.eContents().get(3);
+ private final RuleCall cExpAdditiveExpressionParserRuleCall_1_3_0 = (RuleCall)cExpAssignment_1_3.eContents().get(0);
+
+ //ConditionalExpression:
+ // exp+=AdditiveExpression (op+="?" exp+=AdditiveExpression ":" exp+=AdditiveExpression)?;
+ public ParserRule getRule() { return rule; }
+
+ //exp+=AdditiveExpression (op+="?" exp+=AdditiveExpression ":" exp+=AdditiveExpression)?
+ public Group getGroup() { return cGroup; }
+
+ //exp+=AdditiveExpression
+ public Assignment getExpAssignment_0() { return cExpAssignment_0; }
+
+ //AdditiveExpression
+ public RuleCall getExpAdditiveExpressionParserRuleCall_0_0() { return cExpAdditiveExpressionParserRuleCall_0_0; }
+
+ //(op+="?" exp+=AdditiveExpression ":" exp+=AdditiveExpression)?
+ public Group getGroup_1() { return cGroup_1; }
+
+ //op+="?"
+ public Assignment getOpAssignment_1_0() { return cOpAssignment_1_0; }
+
+ //"?"
+ public Keyword getOpQuestionMarkKeyword_1_0_0() { return cOpQuestionMarkKeyword_1_0_0; }
+
+ //exp+=AdditiveExpression
+ public Assignment getExpAssignment_1_1() { return cExpAssignment_1_1; }
+
+ //AdditiveExpression
+ public RuleCall getExpAdditiveExpressionParserRuleCall_1_1_0() { return cExpAdditiveExpressionParserRuleCall_1_1_0; }
+
+ //":"
+ public Keyword getColonKeyword_1_2() { return cColonKeyword_1_2; }
+
+ //exp+=AdditiveExpression
+ public Assignment getExpAssignment_1_3() { return cExpAssignment_1_3; }
+
+ //AdditiveExpression
+ public RuleCall getExpAdditiveExpressionParserRuleCall_1_3_0() { return cExpAdditiveExpressionParserRuleCall_1_3_0; }
+ }
+
+ public class AdditiveExpressionElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "AdditiveExpression");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Assignment cExpAssignment_0 = (Assignment)cGroup.eContents().get(0);
+ private final RuleCall cExpMultiplicativeExpressionParserRuleCall_0_0 = (RuleCall)cExpAssignment_0.eContents().get(0);
+ private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
+ private final Assignment cOpAssignment_1_0 = (Assignment)cGroup_1.eContents().get(0);
+ private final Alternatives cOpAlternatives_1_0_0 = (Alternatives)cOpAssignment_1_0.eContents().get(0);
+ private final Keyword cOpPlusSignKeyword_1_0_0_0 = (Keyword)cOpAlternatives_1_0_0.eContents().get(0);
+ private final Keyword cOpHyphenMinusKeyword_1_0_0_1 = (Keyword)cOpAlternatives_1_0_0.eContents().get(1);
+ private final Assignment cExpAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1);
+ private final RuleCall cExpMultiplicativeExpressionParserRuleCall_1_1_0 = (RuleCall)cExpAssignment_1_1.eContents().get(0);
+
+ //AdditiveExpression:
+ // exp+=MultiplicativeExpression (op+=("+" | "-") exp+=MultiplicativeExpression)*;
+ public ParserRule getRule() { return rule; }
+
+ //exp+=MultiplicativeExpression (op+=("+" | "-") exp+=MultiplicativeExpression)*
+ public Group getGroup() { return cGroup; }
+
+ //exp+=MultiplicativeExpression
+ public Assignment getExpAssignment_0() { return cExpAssignment_0; }
+
+ //MultiplicativeExpression
+ public RuleCall getExpMultiplicativeExpressionParserRuleCall_0_0() { return cExpMultiplicativeExpressionParserRuleCall_0_0; }
+
+ //(op+=("+" | "-") exp+=MultiplicativeExpression)*
+ public Group getGroup_1() { return cGroup_1; }
+
+ //op+=("+" | "-")
+ public Assignment getOpAssignment_1_0() { return cOpAssignment_1_0; }
+
+ //"+" | "-"
+ public Alternatives getOpAlternatives_1_0_0() { return cOpAlternatives_1_0_0; }
+
+ //"+"
+ public Keyword getOpPlusSignKeyword_1_0_0_0() { return cOpPlusSignKeyword_1_0_0_0; }
+
+ //"-"
+ public Keyword getOpHyphenMinusKeyword_1_0_0_1() { return cOpHyphenMinusKeyword_1_0_0_1; }
+
+ //exp+=MultiplicativeExpression
+ public Assignment getExpAssignment_1_1() { return cExpAssignment_1_1; }
+
+ //MultiplicativeExpression
+ public RuleCall getExpMultiplicativeExpressionParserRuleCall_1_1_0() { return cExpMultiplicativeExpressionParserRuleCall_1_1_0; }
+ }
+
+ public class MultiplicativeExpressionElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "MultiplicativeExpression");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Assignment cExpAssignment_0 = (Assignment)cGroup.eContents().get(0);
+ private final RuleCall cExpUnaryExpressionParserRuleCall_0_0 = (RuleCall)cExpAssignment_0.eContents().get(0);
+ private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
+ private final Assignment cOpAssignment_1_0 = (Assignment)cGroup_1.eContents().get(0);
+ private final Alternatives cOpAlternatives_1_0_0 = (Alternatives)cOpAssignment_1_0.eContents().get(0);
+ private final Keyword cOpAsteriskKeyword_1_0_0_0 = (Keyword)cOpAlternatives_1_0_0.eContents().get(0);
+ private final Keyword cOpSolidusKeyword_1_0_0_1 = (Keyword)cOpAlternatives_1_0_0.eContents().get(1);
+ private final Keyword cOpModKeyword_1_0_0_2 = (Keyword)cOpAlternatives_1_0_0.eContents().get(2);
+ private final Assignment cExpAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1);
+ private final RuleCall cExpUnaryExpressionParserRuleCall_1_1_0 = (RuleCall)cExpAssignment_1_1.eContents().get(0);
+
+ //MultiplicativeExpression:
+ // exp+=UnaryExpression (op+=("*" | "/" | "mod") exp+=UnaryExpression)*;
+ public ParserRule getRule() { return rule; }
+
+ //exp+=UnaryExpression (op+=("*" | "/" | "mod") exp+=UnaryExpression)*
+ public Group getGroup() { return cGroup; }
+
+ //exp+=UnaryExpression
+ public Assignment getExpAssignment_0() { return cExpAssignment_0; }
+
+ //UnaryExpression
+ public RuleCall getExpUnaryExpressionParserRuleCall_0_0() { return cExpUnaryExpressionParserRuleCall_0_0; }
+
+ //(op+=("*" | "/" | "mod") exp+=UnaryExpression)*
+ public Group getGroup_1() { return cGroup_1; }
+
+ //op+=("*" | "/" | "mod")
+ public Assignment getOpAssignment_1_0() { return cOpAssignment_1_0; }
+
+ //"*" | "/" | "mod"
+ public Alternatives getOpAlternatives_1_0_0() { return cOpAlternatives_1_0_0; }
+
+ //"*"
+ public Keyword getOpAsteriskKeyword_1_0_0_0() { return cOpAsteriskKeyword_1_0_0_0; }
+
+ //"/"
+ public Keyword getOpSolidusKeyword_1_0_0_1() { return cOpSolidusKeyword_1_0_0_1; }
+
+ //"mod"
+ public Keyword getOpModKeyword_1_0_0_2() { return cOpModKeyword_1_0_0_2; }
+
+ //exp+=UnaryExpression
+ public Assignment getExpAssignment_1_1() { return cExpAssignment_1_1; }
+
+ //UnaryExpression
+ public RuleCall getExpUnaryExpressionParserRuleCall_1_1_0() { return cExpUnaryExpressionParserRuleCall_1_1_0; }
+ }
+
+ public class UnaryExpressionElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "UnaryExpression");
+ private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+ private final Group cGroup_0 = (Group)cAlternatives.eContents().get(0);
+ private final Assignment cOpAssignment_0_0 = (Assignment)cGroup_0.eContents().get(0);
+ private final Alternatives cOpAlternatives_0_0_0 = (Alternatives)cOpAssignment_0_0.eContents().get(0);
+ private final Keyword cOpNotKeyword_0_0_0_0 = (Keyword)cOpAlternatives_0_0_0.eContents().get(0);
+ private final Keyword cOpHyphenMinusKeyword_0_0_0_1 = (Keyword)cOpAlternatives_0_0_0.eContents().get(1);
+ private final Keyword cOpPlusSignKeyword_0_0_0_2 = (Keyword)cOpAlternatives_0_0_0.eContents().get(2);
+ private final Assignment cUnaryAssignment_0_1 = (Assignment)cGroup_0.eContents().get(1);
+ private final RuleCall cUnaryUnaryExpressionParserRuleCall_0_1_0 = (RuleCall)cUnaryAssignment_0_1.eContents().get(0);
+ private final Assignment cExpAssignment_1 = (Assignment)cAlternatives.eContents().get(1);
+ private final RuleCall cExpPrimaryExpressionParserRuleCall_1_0 = (RuleCall)cExpAssignment_1.eContents().get(0);
+
+ //UnaryExpression:
+ // op=("not" | "-" | "+") unary=UnaryExpression | exp=PrimaryExpression;
+ public ParserRule getRule() { return rule; }
+
+ //op=("not" | "-" | "+") unary=UnaryExpression | exp=PrimaryExpression
+ public Alternatives getAlternatives() { return cAlternatives; }
+
+ //op=("not" | "-" | "+") unary=UnaryExpression
+ public Group getGroup_0() { return cGroup_0; }
+
+ //op=("not" | "-" | "+")
+ public Assignment getOpAssignment_0_0() { return cOpAssignment_0_0; }
+
+ //"not" | "-" | "+"
+ public Alternatives getOpAlternatives_0_0_0() { return cOpAlternatives_0_0_0; }
+
+ //"not"
+ public Keyword getOpNotKeyword_0_0_0_0() { return cOpNotKeyword_0_0_0_0; }
+
+ //"-"
+ public Keyword getOpHyphenMinusKeyword_0_0_0_1() { return cOpHyphenMinusKeyword_0_0_0_1; }
+
+ //"+"
+ public Keyword getOpPlusSignKeyword_0_0_0_2() { return cOpPlusSignKeyword_0_0_0_2; }
+
+ //unary=UnaryExpression
+ public Assignment getUnaryAssignment_0_1() { return cUnaryAssignment_0_1; }
+
+ //UnaryExpression
+ public RuleCall getUnaryUnaryExpressionParserRuleCall_0_1_0() { return cUnaryUnaryExpressionParserRuleCall_0_1_0; }
+
+ //exp=PrimaryExpression
+ public Assignment getExpAssignment_1() { return cExpAssignment_1; }
+
+ //PrimaryExpression
+ public RuleCall getExpPrimaryExpressionParserRuleCall_1_0() { return cExpPrimaryExpressionParserRuleCall_1_0; }
+ }
+
+ public class PrimaryExpressionElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "PrimaryExpression");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Assignment cPrefixAssignment_0 = (Assignment)cGroup.eContents().get(0);
+ private final RuleCall cPrefixValueSpecificationParserRuleCall_0_0 = (RuleCall)cPrefixAssignment_0.eContents().get(0);
+ private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
+ private final Keyword cFullStopKeyword_1_0 = (Keyword)cGroup_1.eContents().get(0);
+ private final Assignment cSuffixAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1);
+ private final RuleCall cSuffixSuffixExpressionParserRuleCall_1_1_0 = (RuleCall)cSuffixAssignment_1_1.eContents().get(0);
+
+ //PrimaryExpression:
+ // prefix=ValueSpecification ("." suffix=SuffixExpression)?;
+ public ParserRule getRule() { return rule; }
+
+ //prefix=ValueSpecification ("." suffix=SuffixExpression)?
+ public Group getGroup() { return cGroup; }
+
+ //prefix=ValueSpecification
+ public Assignment getPrefixAssignment_0() { return cPrefixAssignment_0; }
+
+ //ValueSpecification
+ public RuleCall getPrefixValueSpecificationParserRuleCall_0_0() { return cPrefixValueSpecificationParserRuleCall_0_0; }
+
+ //("." suffix=SuffixExpression)?
+ public Group getGroup_1() { return cGroup_1; }
+
+ //"."
+ public Keyword getFullStopKeyword_1_0() { return cFullStopKeyword_1_0; }
+
+ //suffix=SuffixExpression
+ public Assignment getSuffixAssignment_1_1() { return cSuffixAssignment_1_1; }
+
+ //SuffixExpression
+ public RuleCall getSuffixSuffixExpressionParserRuleCall_1_1_0() { return cSuffixSuffixExpressionParserRuleCall_1_1_0; }
+ }
+
+ public class ValueSpecificationElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ValueSpecification");
+ private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+ private final RuleCall cLiteralParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
+ private final RuleCall cNameOrChoiceOrBehaviorCallParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
+ private final RuleCall cIntervalParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
+ private final RuleCall cCollectionOrTupleParserRuleCall_3 = (RuleCall)cAlternatives.eContents().get(3);
+ private final RuleCall cTupleParserRuleCall_4 = (RuleCall)cAlternatives.eContents().get(4);
+ private final RuleCall cTimeExpressionParserRuleCall_5 = (RuleCall)cAlternatives.eContents().get(5);
+ private final RuleCall cVariableDeclarationParserRuleCall_6 = (RuleCall)cAlternatives.eContents().get(6);
+ private final Group cGroup_7 = (Group)cAlternatives.eContents().get(7);
+ private final Keyword cLeftParenthesisKeyword_7_0 = (Keyword)cGroup_7.eContents().get(0);
+ private final RuleCall cExpressionParserRuleCall_7_1 = (RuleCall)cGroup_7.eContents().get(1);
+ private final Keyword cRightParenthesisKeyword_7_2 = (Keyword)cGroup_7.eContents().get(2);
+
+ //ValueSpecification:
+ // Literal | NameOrChoiceOrBehaviorCall | Interval | CollectionOrTuple | Tuple | TimeExpression | VariableDeclaration |
+ // "(" Expression ")";
+ public ParserRule getRule() { return rule; }
+
+ //Literal | NameOrChoiceOrBehaviorCall | Interval | CollectionOrTuple | Tuple | TimeExpression | VariableDeclaration | "("
+ //Expression ")"
+ public Alternatives getAlternatives() { return cAlternatives; }
+
+ //Literal
+ public RuleCall getLiteralParserRuleCall_0() { return cLiteralParserRuleCall_0; }
+
+ //NameOrChoiceOrBehaviorCall
+ public RuleCall getNameOrChoiceOrBehaviorCallParserRuleCall_1() { return cNameOrChoiceOrBehaviorCallParserRuleCall_1; }
+
+ //Interval
+ public RuleCall getIntervalParserRuleCall_2() { return cIntervalParserRuleCall_2; }
+
+ //CollectionOrTuple
+ public RuleCall getCollectionOrTupleParserRuleCall_3() { return cCollectionOrTupleParserRuleCall_3; }
+
+ //Tuple
+ public RuleCall getTupleParserRuleCall_4() { return cTupleParserRuleCall_4; }
+
+ //TimeExpression
+ public RuleCall getTimeExpressionParserRuleCall_5() { return cTimeExpressionParserRuleCall_5; }
+
+ //VariableDeclaration
+ public RuleCall getVariableDeclarationParserRuleCall_6() { return cVariableDeclarationParserRuleCall_6; }
+
+ //"(" Expression ")"
+ public Group getGroup_7() { return cGroup_7; }
+
+ //"("
+ public Keyword getLeftParenthesisKeyword_7_0() { return cLeftParenthesisKeyword_7_0; }
+
+ //Expression
+ public RuleCall getExpressionParserRuleCall_7_1() { return cExpressionParserRuleCall_7_1; }
+
+ //")"
+ public Keyword getRightParenthesisKeyword_7_2() { return cRightParenthesisKeyword_7_2; }
+ }
+
+ public class SuffixExpressionElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "SuffixExpression");
+ private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+ private final RuleCall cPropertyCallExpressionParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
+ private final RuleCall cOperationCallExpressionParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
+
+ //SuffixExpression:
+ // PropertyCallExpression | OperationCallExpression;
+ public ParserRule getRule() { return rule; }
+
+ //PropertyCallExpression | OperationCallExpression
+ public Alternatives getAlternatives() { return cAlternatives; }
+
+ //PropertyCallExpression
+ public RuleCall getPropertyCallExpressionParserRuleCall_0() { return cPropertyCallExpressionParserRuleCall_0; }
+
+ //OperationCallExpression
+ public RuleCall getOperationCallExpressionParserRuleCall_1() { return cOperationCallExpressionParserRuleCall_1; }
+ }
+
+ public class PropertyCallExpressionElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "PropertyCallExpression");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Assignment cPropertyAssignment_0 = (Assignment)cGroup.eContents().get(0);
+ private final CrossReference cPropertyPropertyCrossReference_0_0 = (CrossReference)cPropertyAssignment_0.eContents().get(0);
+ private final RuleCall cPropertyPropertyIDTerminalRuleCall_0_0_1 = (RuleCall)cPropertyPropertyCrossReference_0_0.eContents().get(1);
+ private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
+ private final Keyword cFullStopKeyword_1_0 = (Keyword)cGroup_1.eContents().get(0);
+ private final Assignment cSuffixAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1);
+ private final RuleCall cSuffixSuffixExpressionParserRuleCall_1_1_0 = (RuleCall)cSuffixAssignment_1_1.eContents().get(0);
+
+ //PropertyCallExpression:
+ // property=[uml::Property] ("." suffix=SuffixExpression)?;
+ public ParserRule getRule() { return rule; }
+
+ //property=[uml::Property] ("." suffix=SuffixExpression)?
+ public Group getGroup() { return cGroup; }
+
+ //property=[uml::Property]
+ public Assignment getPropertyAssignment_0() { return cPropertyAssignment_0; }
+
+ //[uml::Property]
+ public CrossReference getPropertyPropertyCrossReference_0_0() { return cPropertyPropertyCrossReference_0_0; }
+
+ //ID
+ public RuleCall getPropertyPropertyIDTerminalRuleCall_0_0_1() { return cPropertyPropertyIDTerminalRuleCall_0_0_1; }
+
+ //("." suffix=SuffixExpression)?
+ public Group getGroup_1() { return cGroup_1; }
+
+ //"."
+ public Keyword getFullStopKeyword_1_0() { return cFullStopKeyword_1_0; }
+
+ //suffix=SuffixExpression
+ public Assignment getSuffixAssignment_1_1() { return cSuffixAssignment_1_1; }
+
+ //SuffixExpression
+ public RuleCall getSuffixSuffixExpressionParserRuleCall_1_1_0() { return cSuffixSuffixExpressionParserRuleCall_1_1_0; }
+ }
+
+ public class OperationCallExpressionElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "OperationCallExpression");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Assignment cOperationAssignment_0 = (Assignment)cGroup.eContents().get(0);
+ private final CrossReference cOperationOperationCrossReference_0_0 = (CrossReference)cOperationAssignment_0.eContents().get(0);
+ private final RuleCall cOperationOperationIDTerminalRuleCall_0_0_1 = (RuleCall)cOperationOperationCrossReference_0_0.eContents().get(1);
+ private final Keyword cLeftParenthesisKeyword_1 = (Keyword)cGroup.eContents().get(1);
+ private final Assignment cArgumentsAssignment_2 = (Assignment)cGroup.eContents().get(2);
+ private final RuleCall cArgumentsListOfValuesParserRuleCall_2_0 = (RuleCall)cArgumentsAssignment_2.eContents().get(0);
+ private final Keyword cRightParenthesisKeyword_3 = (Keyword)cGroup.eContents().get(3);
+ private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
+ private final Keyword cFullStopKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
+ private final Assignment cSuffixAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
+ private final RuleCall cSuffixSuffixExpressionParserRuleCall_4_1_0 = (RuleCall)cSuffixAssignment_4_1.eContents().get(0);
+
+ //OperationCallExpression:
+ // operation=[uml::Operation] "(" arguments=ListOfValues? ")" ("." suffix=SuffixExpression)?;
+ public ParserRule getRule() { return rule; }
+
+ //operation=[uml::Operation] "(" arguments=ListOfValues? ")" ("." suffix=SuffixExpression)?
+ public Group getGroup() { return cGroup; }
+
+ //operation=[uml::Operation]
+ public Assignment getOperationAssignment_0() { return cOperationAssignment_0; }
+
+ //[uml::Operation]
+ public CrossReference getOperationOperationCrossReference_0_0() { return cOperationOperationCrossReference_0_0; }
+
+ //ID
+ public RuleCall getOperationOperationIDTerminalRuleCall_0_0_1() { return cOperationOperationIDTerminalRuleCall_0_0_1; }
+
+ //"("
+ public Keyword getLeftParenthesisKeyword_1() { return cLeftParenthesisKeyword_1; }
+
+ //arguments=ListOfValues?
+ public Assignment getArgumentsAssignment_2() { return cArgumentsAssignment_2; }
+
+ //ListOfValues
+ public RuleCall getArgumentsListOfValuesParserRuleCall_2_0() { return cArgumentsListOfValuesParserRuleCall_2_0; }
+
+ //")"
+ public Keyword getRightParenthesisKeyword_3() { return cRightParenthesisKeyword_3; }
+
+ //("." suffix=SuffixExpression)?
+ public Group getGroup_4() { return cGroup_4; }
+
+ //"."
+ public Keyword getFullStopKeyword_4_0() { return cFullStopKeyword_4_0; }
+
+ //suffix=SuffixExpression
+ public Assignment getSuffixAssignment_4_1() { return cSuffixAssignment_4_1; }
+
+ //SuffixExpression
+ public RuleCall getSuffixSuffixExpressionParserRuleCall_4_1_0() { return cSuffixSuffixExpressionParserRuleCall_4_1_0; }
+ }
+
+ public class LiteralElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Literal");
+ private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+ private final RuleCall cNumberLiteralRuleParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
+ private final RuleCall cDateTimeLiteralRuleParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
+ private final RuleCall cBooleanLiteralRuleParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
+ private final RuleCall cNullLiteralRuleParserRuleCall_3 = (RuleCall)cAlternatives.eContents().get(3);
+ private final RuleCall cDefaultLiteralRuleParserRuleCall_4 = (RuleCall)cAlternatives.eContents().get(4);
+ private final RuleCall cStringLiteralRuleParserRuleCall_5 = (RuleCall)cAlternatives.eContents().get(5);
+
+ //Literal:
+ // NumberLiteralRule | DateTimeLiteralRule | BooleanLiteralRule | NullLiteralRule | DefaultLiteralRule |
+ // StringLiteralRule;
+ public ParserRule getRule() { return rule; }
+
+ //NumberLiteralRule | DateTimeLiteralRule | BooleanLiteralRule | NullLiteralRule | DefaultLiteralRule | StringLiteralRule
+ public Alternatives getAlternatives() { return cAlternatives; }
+
+ //NumberLiteralRule
+ public RuleCall getNumberLiteralRuleParserRuleCall_0() { return cNumberLiteralRuleParserRuleCall_0; }
+
+ //DateTimeLiteralRule
+ public RuleCall getDateTimeLiteralRuleParserRuleCall_1() { return cDateTimeLiteralRuleParserRuleCall_1; }
+
+ //BooleanLiteralRule
+ public RuleCall getBooleanLiteralRuleParserRuleCall_2() { return cBooleanLiteralRuleParserRuleCall_2; }
+
+ //NullLiteralRule
+ public RuleCall getNullLiteralRuleParserRuleCall_3() { return cNullLiteralRuleParserRuleCall_3; }
+
+ //DefaultLiteralRule
+ public RuleCall getDefaultLiteralRuleParserRuleCall_4() { return cDefaultLiteralRuleParserRuleCall_4; }
+
+ //StringLiteralRule
+ public RuleCall getStringLiteralRuleParserRuleCall_5() { return cStringLiteralRuleParserRuleCall_5; }
+ }
+
+ public class NameOrChoiceOrBehaviorCallElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "NameOrChoiceOrBehaviorCall");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Assignment cPathAssignment_0 = (Assignment)cGroup.eContents().get(0);
+ private final RuleCall cPathQualifiedNameParserRuleCall_0_0 = (RuleCall)cPathAssignment_0.eContents().get(0);
+ private final Assignment cIdAssignment_1 = (Assignment)cGroup.eContents().get(1);
+ private final CrossReference cIdNamedElementCrossReference_1_0 = (CrossReference)cIdAssignment_1.eContents().get(0);
+ private final RuleCall cIdNamedElementIDTerminalRuleCall_1_0_1 = (RuleCall)cIdNamedElementCrossReference_1_0.eContents().get(1);
+ private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
+ private final Keyword cLeftParenthesisKeyword_2_0 = (Keyword)cGroup_2.eContents().get(0);
+ private final Assignment cArgumentsAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
+ private final RuleCall cArgumentsListOfValuesParserRuleCall_2_1_0 = (RuleCall)cArgumentsAssignment_2_1.eContents().get(0);
+ private final Keyword cRightParenthesisKeyword_2_2 = (Keyword)cGroup_2.eContents().get(2);
+
+ //NameOrChoiceOrBehaviorCall:
+ // path=QualifiedName? // can resolve to :
+ // // - EnumSpecification,
+ // // - VariableCallExpression
+ // // - PropertyCallExpression
+ // // - ChoiceExpression
+ // id=[uml::NamedElement] ("(" arguments=ListOfValues? ")")?;
+ public ParserRule getRule() { return rule; }
+
+ //path=QualifiedName? // can resolve to :
+ //// - EnumSpecification,
+ //// - VariableCallExpression
+ //// - PropertyCallExpression
+ //// - ChoiceExpression
+ //id=[uml::NamedElement] ("(" arguments=ListOfValues? ")")?
+ public Group getGroup() { return cGroup; }
+
+ //path=QualifiedName?
+ public Assignment getPathAssignment_0() { return cPathAssignment_0; }
+
+ //QualifiedName
+ public RuleCall getPathQualifiedNameParserRuleCall_0_0() { return cPathQualifiedNameParserRuleCall_0_0; }
+
+ //id=[uml::NamedElement]
+ public Assignment getIdAssignment_1() { return cIdAssignment_1; }
+
+ //[uml::NamedElement]
+ public CrossReference getIdNamedElementCrossReference_1_0() { return cIdNamedElementCrossReference_1_0; }
+
+ //ID
+ public RuleCall getIdNamedElementIDTerminalRuleCall_1_0_1() { return cIdNamedElementIDTerminalRuleCall_1_0_1; }
+
+ //("(" arguments=ListOfValues? ")")?
+ public Group getGroup_2() { return cGroup_2; }
+
+ //"("
+ public Keyword getLeftParenthesisKeyword_2_0() { return cLeftParenthesisKeyword_2_0; }
+
+ //arguments=ListOfValues?
+ public Assignment getArgumentsAssignment_2_1() { return cArgumentsAssignment_2_1; }
+
+ //ListOfValues
+ public RuleCall getArgumentsListOfValuesParserRuleCall_2_1_0() { return cArgumentsListOfValuesParserRuleCall_2_1_0; }
+
+ //")"
+ public Keyword getRightParenthesisKeyword_2_2() { return cRightParenthesisKeyword_2_2; }
+ }
+
+ public class QualifiedNameElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "QualifiedName");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Assignment cPathAssignment_0 = (Assignment)cGroup.eContents().get(0);
+ private final CrossReference cPathNamespaceCrossReference_0_0 = (CrossReference)cPathAssignment_0.eContents().get(0);
+ private final RuleCall cPathNamespaceIDTerminalRuleCall_0_0_1 = (RuleCall)cPathNamespaceCrossReference_0_0.eContents().get(1);
+ private final Keyword cColonColonKeyword_1 = (Keyword)cGroup.eContents().get(1);
+ private final Assignment cRemainingAssignment_2 = (Assignment)cGroup.eContents().get(2);
+ private final RuleCall cRemainingQualifiedNameParserRuleCall_2_0 = (RuleCall)cRemainingAssignment_2.eContents().get(0);
+
+ //QualifiedName:
+ // path=[uml::Namespace] "::" remaining=QualifiedName?;
+ public ParserRule getRule() { return rule; }
+
+ //path=[uml::Namespace] "::" remaining=QualifiedName?
+ public Group getGroup() { return cGroup; }
+
+ //path=[uml::Namespace]
+ public Assignment getPathAssignment_0() { return cPathAssignment_0; }
+
+ //[uml::Namespace]
+ public CrossReference getPathNamespaceCrossReference_0_0() { return cPathNamespaceCrossReference_0_0; }
+
+ //ID
+ public RuleCall getPathNamespaceIDTerminalRuleCall_0_0_1() { return cPathNamespaceIDTerminalRuleCall_0_0_1; }
+
+ //"::"
+ public Keyword getColonColonKeyword_1() { return cColonColonKeyword_1; }
+
+ //remaining=QualifiedName?
+ public Assignment getRemainingAssignment_2() { return cRemainingAssignment_2; }
+
+ //QualifiedName
+ public RuleCall getRemainingQualifiedNameParserRuleCall_2_0() { return cRemainingQualifiedNameParserRuleCall_2_0; }
+ }
+
+ public class IntervalElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Interval");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Alternatives cAlternatives_0 = (Alternatives)cGroup.eContents().get(0);
+ private final Keyword cRightSquareBracketKeyword_0_0 = (Keyword)cAlternatives_0.eContents().get(0);
+ private final Assignment cIsLowerIncludedAssignment_0_1 = (Assignment)cAlternatives_0.eContents().get(1);
+ private final Keyword cIsLowerIncludedLeftSquareBracketKeyword_0_1_0 = (Keyword)cIsLowerIncludedAssignment_0_1.eContents().get(0);
+ private final Assignment cLowerAssignment_1 = (Assignment)cGroup.eContents().get(1);
+ private final RuleCall cLowerExpressionParserRuleCall_1_0 = (RuleCall)cLowerAssignment_1.eContents().get(0);
+ private final Keyword cFullStopFullStopKeyword_2 = (Keyword)cGroup.eContents().get(2);
+ private final Assignment cUpperAssignment_3 = (Assignment)cGroup.eContents().get(3);
+ private final RuleCall cUpperExpressionParserRuleCall_3_0 = (RuleCall)cUpperAssignment_3.eContents().get(0);
+ private final Alternatives cAlternatives_4 = (Alternatives)cGroup.eContents().get(4);
+ private final Assignment cIsUpperIncludedAssignment_4_0 = (Assignment)cAlternatives_4.eContents().get(0);
+ private final Keyword cIsUpperIncludedRightSquareBracketKeyword_4_0_0 = (Keyword)cIsUpperIncludedAssignment_4_0.eContents().get(0);
+ private final Keyword cLeftSquareBracketKeyword_4_1 = (Keyword)cAlternatives_4.eContents().get(1);
+
+ //Interval:
+ // ("]" | isLowerIncluded="[") lower=Expression ".." upper=Expression (isUpperIncluded="]" | "[");
+ public ParserRule getRule() { return rule; }
+
+ //("]" | isLowerIncluded="[") lower=Expression ".." upper=Expression (isUpperIncluded="]" | "[")
+ public Group getGroup() { return cGroup; }
+
+ //"]" | isLowerIncluded="["
+ public Alternatives getAlternatives_0() { return cAlternatives_0; }
+
+ //"]"
+ public Keyword getRightSquareBracketKeyword_0_0() { return cRightSquareBracketKeyword_0_0; }
+
+ //isLowerIncluded="["
+ public Assignment getIsLowerIncludedAssignment_0_1() { return cIsLowerIncludedAssignment_0_1; }
+
+ //"["
+ public Keyword getIsLowerIncludedLeftSquareBracketKeyword_0_1_0() { return cIsLowerIncludedLeftSquareBracketKeyword_0_1_0; }
+
+ //lower=Expression
+ public Assignment getLowerAssignment_1() { return cLowerAssignment_1; }
+
+ //Expression
+ public RuleCall getLowerExpressionParserRuleCall_1_0() { return cLowerExpressionParserRuleCall_1_0; }
+
+ //".."
+ public Keyword getFullStopFullStopKeyword_2() { return cFullStopFullStopKeyword_2; }
+
+ //upper=Expression
+ public Assignment getUpperAssignment_3() { return cUpperAssignment_3; }
+
+ //Expression
+ public RuleCall getUpperExpressionParserRuleCall_3_0() { return cUpperExpressionParserRuleCall_3_0; }
+
+ //isUpperIncluded="]" | "["
+ public Alternatives getAlternatives_4() { return cAlternatives_4; }
+
+ //isUpperIncluded="]"
+ public Assignment getIsUpperIncludedAssignment_4_0() { return cIsUpperIncludedAssignment_4_0; }
+
+ //"]"
+ public Keyword getIsUpperIncludedRightSquareBracketKeyword_4_0_0() { return cIsUpperIncludedRightSquareBracketKeyword_4_0_0; }
+
+ //"["
+ public Keyword getLeftSquareBracketKeyword_4_1() { return cLeftSquareBracketKeyword_4_1; }
+ }
+
+ public class CollectionOrTupleElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "CollectionOrTuple");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Keyword cLeftCurlyBracketKeyword_0 = (Keyword)cGroup.eContents().get(0);
+ private final Assignment cListOfValuesAssignment_1 = (Assignment)cGroup.eContents().get(1);
+ private final RuleCall cListOfValuesListOfValuesParserRuleCall_1_0 = (RuleCall)cListOfValuesAssignment_1.eContents().get(0);
+ private final Keyword cRightCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
+
+ //CollectionOrTuple:
+ // "{" listOfValues=ListOfValues "}";
+ public ParserRule getRule() { return rule; }
+
+ //"{" listOfValues=ListOfValues "}"
+ public Group getGroup() { return cGroup; }
+
+ //"{"
+ public Keyword getLeftCurlyBracketKeyword_0() { return cLeftCurlyBracketKeyword_0; }
+
+ //listOfValues=ListOfValues
+ public Assignment getListOfValuesAssignment_1() { return cListOfValuesAssignment_1; }
+
+ //ListOfValues
+ public RuleCall getListOfValuesListOfValuesParserRuleCall_1_0() { return cListOfValuesListOfValuesParserRuleCall_1_0; }
+
+ //"}"
+ public Keyword getRightCurlyBracketKeyword_2() { return cRightCurlyBracketKeyword_2; }
+ }
+
+ public class TupleElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Tuple");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Keyword cLeftCurlyBracketKeyword_0 = (Keyword)cGroup.eContents().get(0);
+ private final Assignment cListOfValueNamePairsAssignment_1 = (Assignment)cGroup.eContents().get(1);
+ private final RuleCall cListOfValueNamePairsListOfValueNamePairsParserRuleCall_1_0 = (RuleCall)cListOfValueNamePairsAssignment_1.eContents().get(0);
+ private final Keyword cRightCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
+
+ //Tuple:
+ // "{" listOfValueNamePairs=ListOfValueNamePairs "}";
+ public ParserRule getRule() { return rule; }
+
+ //"{" listOfValueNamePairs=ListOfValueNamePairs "}"
+ public Group getGroup() { return cGroup; }
+
+ //"{"
+ public Keyword getLeftCurlyBracketKeyword_0() { return cLeftCurlyBracketKeyword_0; }
+
+ //listOfValueNamePairs=ListOfValueNamePairs
+ public Assignment getListOfValueNamePairsAssignment_1() { return cListOfValueNamePairsAssignment_1; }
+
+ //ListOfValueNamePairs
+ public RuleCall getListOfValueNamePairsListOfValueNamePairsParserRuleCall_1_0() { return cListOfValueNamePairsListOfValueNamePairsParserRuleCall_1_0; }
+
+ //"}"
+ public Keyword getRightCurlyBracketKeyword_2() { return cRightCurlyBracketKeyword_2; }
+ }
+
+ public class ListOfValuesElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ListOfValues");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Assignment cValuesAssignment_0 = (Assignment)cGroup.eContents().get(0);
+ private final RuleCall cValuesExpressionParserRuleCall_0_0 = (RuleCall)cValuesAssignment_0.eContents().get(0);
+ private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
+ private final Keyword cCommaKeyword_1_0 = (Keyword)cGroup_1.eContents().get(0);
+ private final Assignment cValuesAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1);
+ private final RuleCall cValuesExpressionParserRuleCall_1_1_0 = (RuleCall)cValuesAssignment_1_1.eContents().get(0);
+
+ //ListOfValues:
+ // values+=Expression ("," values+=Expression)*;
+ public ParserRule getRule() { return rule; }
+
+ //values+=Expression ("," values+=Expression)*
+ public Group getGroup() { return cGroup; }
+
+ //values+=Expression
+ public Assignment getValuesAssignment_0() { return cValuesAssignment_0; }
+
+ //Expression
+ public RuleCall getValuesExpressionParserRuleCall_0_0() { return cValuesExpressionParserRuleCall_0_0; }
+
+ //("," values+=Expression)*
+ public Group getGroup_1() { return cGroup_1; }
+
+ //","
+ public Keyword getCommaKeyword_1_0() { return cCommaKeyword_1_0; }
+
+ //values+=Expression
+ public Assignment getValuesAssignment_1_1() { return cValuesAssignment_1_1; }
+
+ //Expression
+ public RuleCall getValuesExpressionParserRuleCall_1_1_0() { return cValuesExpressionParserRuleCall_1_1_0; }
+ }
+
+ public class ListOfValueNamePairsElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ListOfValueNamePairs");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Assignment cValueNamePairsAssignment_0 = (Assignment)cGroup.eContents().get(0);
+ private final RuleCall cValueNamePairsValueNamePairParserRuleCall_0_0 = (RuleCall)cValueNamePairsAssignment_0.eContents().get(0);
+ private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
+ private final Keyword cCommaKeyword_1_0 = (Keyword)cGroup_1.eContents().get(0);
+ private final Assignment cValueNamePairsAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1);
+ private final RuleCall cValueNamePairsValueNamePairParserRuleCall_1_1_0 = (RuleCall)cValueNamePairsAssignment_1_1.eContents().get(0);
+
+ //ListOfValueNamePairs:
+ // valueNamePairs+=ValueNamePair ("," valueNamePairs+=ValueNamePair)*;
+ public ParserRule getRule() { return rule; }
+
+ //valueNamePairs+=ValueNamePair ("," valueNamePairs+=ValueNamePair)*
+ public Group getGroup() { return cGroup; }
+
+ //valueNamePairs+=ValueNamePair
+ public Assignment getValueNamePairsAssignment_0() { return cValueNamePairsAssignment_0; }
+
+ //ValueNamePair
+ public RuleCall getValueNamePairsValueNamePairParserRuleCall_0_0() { return cValueNamePairsValueNamePairParserRuleCall_0_0; }
+
+ //("," valueNamePairs+=ValueNamePair)*
+ public Group getGroup_1() { return cGroup_1; }
+
+ //","
+ public Keyword getCommaKeyword_1_0() { return cCommaKeyword_1_0; }
+
+ //valueNamePairs+=ValueNamePair
+ public Assignment getValueNamePairsAssignment_1_1() { return cValueNamePairsAssignment_1_1; }
+
+ //ValueNamePair
+ public RuleCall getValueNamePairsValueNamePairParserRuleCall_1_1_0() { return cValueNamePairsValueNamePairParserRuleCall_1_1_0; }
+ }
+
+ public class ValueNamePairElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ValueNamePair");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Assignment cPropertyAssignment_0 = (Assignment)cGroup.eContents().get(0);
+ private final CrossReference cPropertyPropertyCrossReference_0_0 = (CrossReference)cPropertyAssignment_0.eContents().get(0);
+ private final RuleCall cPropertyPropertyIDTerminalRuleCall_0_0_1 = (RuleCall)cPropertyPropertyCrossReference_0_0.eContents().get(1);
+ private final Keyword cEqualsSignKeyword_1 = (Keyword)cGroup.eContents().get(1);
+ private final Assignment cValueAssignment_2 = (Assignment)cGroup.eContents().get(2);
+ private final RuleCall cValueExpressionParserRuleCall_2_0 = (RuleCall)cValueAssignment_2.eContents().get(0);
+
+ //ValueNamePair:
+ // property=[uml::Property] "=" value=Expression;
+ public ParserRule getRule() { return rule; }
+
+ //property=[uml::Property] "=" value=Expression
+ public Group getGroup() { return cGroup; }
+
+ //property=[uml::Property]
+ public Assignment getPropertyAssignment_0() { return cPropertyAssignment_0; }
+
+ //[uml::Property]
+ public CrossReference getPropertyPropertyCrossReference_0_0() { return cPropertyPropertyCrossReference_0_0; }
+
+ //ID
+ public RuleCall getPropertyPropertyIDTerminalRuleCall_0_0_1() { return cPropertyPropertyIDTerminalRuleCall_0_0_1; }
+
+ //"="
+ public Keyword getEqualsSignKeyword_1() { return cEqualsSignKeyword_1; }
+
+ //value=Expression
+ public Assignment getValueAssignment_2() { return cValueAssignment_2; }
+
+ //Expression
+ public RuleCall getValueExpressionParserRuleCall_2_0() { return cValueExpressionParserRuleCall_2_0; }
+ }
+
+ public class TimeExpressionElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "TimeExpression");
+ private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+ private final RuleCall cInstantObsExpressionParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
+ private final RuleCall cDurationObsExpressionParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
+ private final RuleCall cJitterExpParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
+
+ //TimeExpression:
+ // InstantObsExpression | DurationObsExpression | JitterExp;
+ public ParserRule getRule() { return rule; }
+
+ //InstantObsExpression | DurationObsExpression | JitterExp
+ public Alternatives getAlternatives() { return cAlternatives; }
+
+ //InstantObsExpression
+ public RuleCall getInstantObsExpressionParserRuleCall_0() { return cInstantObsExpressionParserRuleCall_0; }
+
+ //DurationObsExpression
+ public RuleCall getDurationObsExpressionParserRuleCall_1() { return cDurationObsExpressionParserRuleCall_1; }
+
+ //JitterExp
+ public RuleCall getJitterExpParserRuleCall_2() { return cJitterExpParserRuleCall_2; }
+ }
+
+ public class InstantObsExpressionElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "InstantObsExpression");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Keyword cCommercialAtKeyword_0 = (Keyword)cGroup.eContents().get(0);
+ private final Assignment cIdAssignment_1 = (Assignment)cGroup.eContents().get(1);
+ private final RuleCall cIdInstantObsNameParserRuleCall_1_0 = (RuleCall)cIdAssignment_1.eContents().get(0);
+ private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
+ private final Keyword cLeftParenthesisKeyword_2_0 = (Keyword)cGroup_2.eContents().get(0);
+ private final Assignment cIndexAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
+ private final RuleCall cIndexExpressionParserRuleCall_2_1_0 = (RuleCall)cIndexAssignment_2_1.eContents().get(0);
+ private final Keyword cRightParenthesisKeyword_2_2 = (Keyword)cGroup_2.eContents().get(2);
+ private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
+ private final Keyword cWhenKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
+ private final Keyword cLeftParenthesisKeyword_3_1 = (Keyword)cGroup_3.eContents().get(1);
+ private final Assignment cConditionAssignment_3_2 = (Assignment)cGroup_3.eContents().get(2);
+ private final RuleCall cConditionExpressionParserRuleCall_3_2_0 = (RuleCall)cConditionAssignment_3_2.eContents().get(0);
+ private final Keyword cRightParenthesisKeyword_3_3 = (Keyword)cGroup_3.eContents().get(3);
+
+ //InstantObsExpression:
+ // "@" id=InstantObsName ("(" index=Expression ")")? ("when" "(" condition=Expression ")")?;
+ public ParserRule getRule() { return rule; }
+
+ //"@" id=InstantObsName ("(" index=Expression ")")? ("when" "(" condition=Expression ")")?
+ public Group getGroup() { return cGroup; }
+
+ //"@"
+ public Keyword getCommercialAtKeyword_0() { return cCommercialAtKeyword_0; }
+
+ //id=InstantObsName
+ public Assignment getIdAssignment_1() { return cIdAssignment_1; }
+
+ //InstantObsName
+ public RuleCall getIdInstantObsNameParserRuleCall_1_0() { return cIdInstantObsNameParserRuleCall_1_0; }
+
+ //("(" index=Expression ")")?
+ public Group getGroup_2() { return cGroup_2; }
+
+ //"("
+ public Keyword getLeftParenthesisKeyword_2_0() { return cLeftParenthesisKeyword_2_0; }
+
+ //index=Expression
+ public Assignment getIndexAssignment_2_1() { return cIndexAssignment_2_1; }
+
+ //Expression
+ public RuleCall getIndexExpressionParserRuleCall_2_1_0() { return cIndexExpressionParserRuleCall_2_1_0; }
+
+ //")"
+ public Keyword getRightParenthesisKeyword_2_2() { return cRightParenthesisKeyword_2_2; }
+
+ //("when" "(" condition=Expression ")")?
+ public Group getGroup_3() { return cGroup_3; }
+
+ //"when"
+ public Keyword getWhenKeyword_3_0() { return cWhenKeyword_3_0; }
+
+ //"("
+ public Keyword getLeftParenthesisKeyword_3_1() { return cLeftParenthesisKeyword_3_1; }
+
+ //condition=Expression
+ public Assignment getConditionAssignment_3_2() { return cConditionAssignment_3_2; }
+
+ //Expression
+ public RuleCall getConditionExpressionParserRuleCall_3_2_0() { return cConditionExpressionParserRuleCall_3_2_0; }
+
+ //")"
+ public Keyword getRightParenthesisKeyword_3_3() { return cRightParenthesisKeyword_3_3; }
+ }
+
+ public class InstantObsNameElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "InstantObsName");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Assignment cPathAssignment_0 = (Assignment)cGroup.eContents().get(0);
+ private final RuleCall cPathQualifiedNameParserRuleCall_0_0 = (RuleCall)cPathAssignment_0.eContents().get(0);
+ private final Assignment cInstantIdAssignment_1 = (Assignment)cGroup.eContents().get(1);
+ private final CrossReference cInstantIdTimeObservationCrossReference_1_0 = (CrossReference)cInstantIdAssignment_1.eContents().get(0);
+ private final RuleCall cInstantIdTimeObservationIDTerminalRuleCall_1_0_1 = (RuleCall)cInstantIdTimeObservationCrossReference_1_0.eContents().get(1);
+
+ //InstantObsName:
+ // path=QualifiedName? instantId=[uml::TimeObservation];
+ public ParserRule getRule() { return rule; }
+
+ //path=QualifiedName? instantId=[uml::TimeObservation]
+ public Group getGroup() { return cGroup; }
+
+ //path=QualifiedName?
+ public Assignment getPathAssignment_0() { return cPathAssignment_0; }
+
+ //QualifiedName
+ public RuleCall getPathQualifiedNameParserRuleCall_0_0() { return cPathQualifiedNameParserRuleCall_0_0; }
+
+ //instantId=[uml::TimeObservation]
+ public Assignment getInstantIdAssignment_1() { return cInstantIdAssignment_1; }
+
+ //[uml::TimeObservation]
+ public CrossReference getInstantIdTimeObservationCrossReference_1_0() { return cInstantIdTimeObservationCrossReference_1_0; }
+
+ //ID
+ public RuleCall getInstantIdTimeObservationIDTerminalRuleCall_1_0_1() { return cInstantIdTimeObservationIDTerminalRuleCall_1_0_1; }
+ }
+
+ public class DurationObsExpressionElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DurationObsExpression");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Keyword cAmpersandKeyword_0 = (Keyword)cGroup.eContents().get(0);
+ private final Assignment cIdAssignment_1 = (Assignment)cGroup.eContents().get(1);
+ private final RuleCall cIdDurationObsNameParserRuleCall_1_0 = (RuleCall)cIdAssignment_1.eContents().get(0);
+ private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
+ private final Keyword cLeftParenthesisKeyword_2_0 = (Keyword)cGroup_2.eContents().get(0);
+ private final Assignment cIndexAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
+ private final RuleCall cIndexExpressionParserRuleCall_2_1_0 = (RuleCall)cIndexAssignment_2_1.eContents().get(0);
+ private final Keyword cRightParenthesisKeyword_2_2 = (Keyword)cGroup_2.eContents().get(2);
+ private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
+ private final Keyword cWhenKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
+ private final Keyword cLeftParenthesisKeyword_3_1 = (Keyword)cGroup_3.eContents().get(1);
+ private final Assignment cConditionAssignment_3_2 = (Assignment)cGroup_3.eContents().get(2);
+ private final RuleCall cConditionExpressionParserRuleCall_3_2_0 = (RuleCall)cConditionAssignment_3_2.eContents().get(0);
+ private final Keyword cRightParenthesisKeyword_3_3 = (Keyword)cGroup_3.eContents().get(3);
+
+ //DurationObsExpression:
+ // "&" id=DurationObsName ("(" index=Expression ")")? ("when" "(" condition=Expression ")")?;
+ public ParserRule getRule() { return rule; }
+
+ //"&" id=DurationObsName ("(" index=Expression ")")? ("when" "(" condition=Expression ")")?
+ public Group getGroup() { return cGroup; }
+
+ //"&"
+ public Keyword getAmpersandKeyword_0() { return cAmpersandKeyword_0; }
+
+ //id=DurationObsName
+ public Assignment getIdAssignment_1() { return cIdAssignment_1; }
+
+ //DurationObsName
+ public RuleCall getIdDurationObsNameParserRuleCall_1_0() { return cIdDurationObsNameParserRuleCall_1_0; }
+
+ //("(" index=Expression ")")?
+ public Group getGroup_2() { return cGroup_2; }
+
+ //"("
+ public Keyword getLeftParenthesisKeyword_2_0() { return cLeftParenthesisKeyword_2_0; }
+
+ //index=Expression
+ public Assignment getIndexAssignment_2_1() { return cIndexAssignment_2_1; }
+
+ //Expression
+ public RuleCall getIndexExpressionParserRuleCall_2_1_0() { return cIndexExpressionParserRuleCall_2_1_0; }
+
+ //")"
+ public Keyword getRightParenthesisKeyword_2_2() { return cRightParenthesisKeyword_2_2; }
+
+ //("when" "(" condition=Expression ")")?
+ public Group getGroup_3() { return cGroup_3; }
+
+ //"when"
+ public Keyword getWhenKeyword_3_0() { return cWhenKeyword_3_0; }
+
+ //"("
+ public Keyword getLeftParenthesisKeyword_3_1() { return cLeftParenthesisKeyword_3_1; }
+
+ //condition=Expression
+ public Assignment getConditionAssignment_3_2() { return cConditionAssignment_3_2; }
+
+ //Expression
+ public RuleCall getConditionExpressionParserRuleCall_3_2_0() { return cConditionExpressionParserRuleCall_3_2_0; }
+
+ //")"
+ public Keyword getRightParenthesisKeyword_3_3() { return cRightParenthesisKeyword_3_3; }
+ }
+
+ public class DurationObsNameElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DurationObsName");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Assignment cPathAssignment_0 = (Assignment)cGroup.eContents().get(0);
+ private final RuleCall cPathQualifiedNameParserRuleCall_0_0 = (RuleCall)cPathAssignment_0.eContents().get(0);
+ private final Assignment cDurationIdAssignment_1 = (Assignment)cGroup.eContents().get(1);
+ private final CrossReference cDurationIdDurationObservationCrossReference_1_0 = (CrossReference)cDurationIdAssignment_1.eContents().get(0);
+ private final RuleCall cDurationIdDurationObservationIDTerminalRuleCall_1_0_1 = (RuleCall)cDurationIdDurationObservationCrossReference_1_0.eContents().get(1);
+
+ //DurationObsName:
+ // path=QualifiedName? durationId=[uml::DurationObservation];
+ public ParserRule getRule() { return rule; }
+
+ //path=QualifiedName? durationId=[uml::DurationObservation]
+ public Group getGroup() { return cGroup; }
+
+ //path=QualifiedName?
+ public Assignment getPathAssignment_0() { return cPathAssignment_0; }
+
+ //QualifiedName
+ public RuleCall getPathQualifiedNameParserRuleCall_0_0() { return cPathQualifiedNameParserRuleCall_0_0; }
+
+ //durationId=[uml::DurationObservation]
+ public Assignment getDurationIdAssignment_1() { return cDurationIdAssignment_1; }
+
+ //[uml::DurationObservation]
+ public CrossReference getDurationIdDurationObservationCrossReference_1_0() { return cDurationIdDurationObservationCrossReference_1_0; }
+
+ //ID
+ public RuleCall getDurationIdDurationObservationIDTerminalRuleCall_1_0_1() { return cDurationIdDurationObservationIDTerminalRuleCall_1_0_1; }
+ }
+
+ public class JitterExpElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "JitterExp");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Keyword cJitterKeyword_0 = (Keyword)cGroup.eContents().get(0);
+ private final Assignment cFirstInstantAssignment_1 = (Assignment)cGroup.eContents().get(1);
+ private final RuleCall cFirstInstantInstantObsExpressionParserRuleCall_1_0 = (RuleCall)cFirstInstantAssignment_1.eContents().get(0);
+ private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
+ private final Keyword cHyphenMinusKeyword_2_0 = (Keyword)cGroup_2.eContents().get(0);
+ private final Assignment cSecondInstantAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
+ private final RuleCall cSecondInstantInstantObsExpressionParserRuleCall_2_1_0 = (RuleCall)cSecondInstantAssignment_2_1.eContents().get(0);
+ private final Keyword cRightParenthesisKeyword_3 = (Keyword)cGroup.eContents().get(3);
+
+ //JitterExp:
+ // "jitter(" firstInstant=InstantObsExpression ("-" secondInstant=InstantObsExpression)? ")";
+ public ParserRule getRule() { return rule; }
+
+ //"jitter(" firstInstant=InstantObsExpression ("-" secondInstant=InstantObsExpression)? ")"
+ public Group getGroup() { return cGroup; }
+
+ //"jitter("
+ public Keyword getJitterKeyword_0() { return cJitterKeyword_0; }
+
+ //firstInstant=InstantObsExpression
+ public Assignment getFirstInstantAssignment_1() { return cFirstInstantAssignment_1; }
+
+ //InstantObsExpression
+ public RuleCall getFirstInstantInstantObsExpressionParserRuleCall_1_0() { return cFirstInstantInstantObsExpressionParserRuleCall_1_0; }
+
+ //("-" secondInstant=InstantObsExpression)?
+ public Group getGroup_2() { return cGroup_2; }
+
+ //"-"
+ public Keyword getHyphenMinusKeyword_2_0() { return cHyphenMinusKeyword_2_0; }
+
+ //secondInstant=InstantObsExpression
+ public Assignment getSecondInstantAssignment_2_1() { return cSecondInstantAssignment_2_1; }
+
+ //InstantObsExpression
+ public RuleCall getSecondInstantInstantObsExpressionParserRuleCall_2_1_0() { return cSecondInstantInstantObsExpressionParserRuleCall_2_1_0; }
+
+ //")"
+ public Keyword getRightParenthesisKeyword_3() { return cRightParenthesisKeyword_3; }
+ }
+
+ public class VariableDeclarationElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "VariableDeclaration");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Assignment cVariableDeclarationAssignment_0 = (Assignment)cGroup.eContents().get(0);
+ private final RuleCall cVariableDeclarationVariableDirectionKindParserRuleCall_0_0 = (RuleCall)cVariableDeclarationAssignment_0.eContents().get(0);
+ private final Keyword cDollarSignKeyword_1 = (Keyword)cGroup.eContents().get(1);
+ private final Assignment cNameAssignment_2 = (Assignment)cGroup.eContents().get(2);
+ private final RuleCall cNameIDTerminalRuleCall_2_0 = (RuleCall)cNameAssignment_2.eContents().get(0);
+ private final Alternatives cAlternatives_3 = (Alternatives)cGroup.eContents().get(3);
+ private final Group cGroup_3_0 = (Group)cAlternatives_3.eContents().get(0);
+ private final Keyword cColonKeyword_3_0_0 = (Keyword)cGroup_3_0.eContents().get(0);
+ private final Assignment cTypeAssignment_3_0_1 = (Assignment)cGroup_3_0.eContents().get(1);
+ private final RuleCall cTypeDataTypeNameParserRuleCall_3_0_1_0 = (RuleCall)cTypeAssignment_3_0_1.eContents().get(0);
+ private final Group cGroup_3_0_2 = (Group)cGroup_3_0.eContents().get(2);
+ private final Keyword cEqualsSignKeyword_3_0_2_0 = (Keyword)cGroup_3_0_2.eContents().get(0);
+ private final Keyword cLeftParenthesisKeyword_3_0_2_1 = (Keyword)cGroup_3_0_2.eContents().get(1);
+ private final Assignment cInitValueAssignment_3_0_2_2 = (Assignment)cGroup_3_0_2.eContents().get(2);
+ private final RuleCall cInitValueExpressionParserRuleCall_3_0_2_2_0 = (RuleCall)cInitValueAssignment_3_0_2_2.eContents().get(0);
+ private final Keyword cRightParenthesisKeyword_3_0_2_3 = (Keyword)cGroup_3_0_2.eContents().get(3);
+ private final Group cGroup_3_1 = (Group)cAlternatives_3.eContents().get(1);
+ private final Keyword cEqualsSignKeyword_3_1_0 = (Keyword)cGroup_3_1.eContents().get(0);
+ private final Keyword cLeftParenthesisKeyword_3_1_1 = (Keyword)cGroup_3_1.eContents().get(1);
+ private final Assignment cInitValueAssignment_3_1_2 = (Assignment)cGroup_3_1.eContents().get(2);
+ private final RuleCall cInitValueExpressionParserRuleCall_3_1_2_0 = (RuleCall)cInitValueAssignment_3_1_2.eContents().get(0);
+ private final Keyword cRightParenthesisKeyword_3_1_3 = (Keyword)cGroup_3_1.eContents().get(3);
+
+ //VariableDeclaration:
+ // variableDeclaration=VariableDirectionKind? "$" name=ID (":" type=DataTypeName ("=" "(" initValue=Expression ")")? |
+ // "=" "(" initValue=Expression ")");
+ public ParserRule getRule() { return rule; }
+
+ //variableDeclaration=VariableDirectionKind? "$" name=ID (":" type=DataTypeName ("=" "(" initValue=Expression ")")? | "="
+ //"(" initValue=Expression ")")
+ public Group getGroup() { return cGroup; }
+
+ //variableDeclaration=VariableDirectionKind?
+ public Assignment getVariableDeclarationAssignment_0() { return cVariableDeclarationAssignment_0; }
+
+ //VariableDirectionKind
+ public RuleCall getVariableDeclarationVariableDirectionKindParserRuleCall_0_0() { return cVariableDeclarationVariableDirectionKindParserRuleCall_0_0; }
+
+ //"$"
+ public Keyword getDollarSignKeyword_1() { return cDollarSignKeyword_1; }
+
+ //name=ID
+ public Assignment getNameAssignment_2() { return cNameAssignment_2; }
+
+ //ID
+ public RuleCall getNameIDTerminalRuleCall_2_0() { return cNameIDTerminalRuleCall_2_0; }
+
+ //":" type=DataTypeName ("=" "(" initValue=Expression ")")? | "=" "(" initValue=Expression ")"
+ public Alternatives getAlternatives_3() { return cAlternatives_3; }
+
+ //":" type=DataTypeName ("=" "(" initValue=Expression ")")?
+ public Group getGroup_3_0() { return cGroup_3_0; }
+
+ //":"
+ public Keyword getColonKeyword_3_0_0() { return cColonKeyword_3_0_0; }
+
+ //type=DataTypeName
+ public Assignment getTypeAssignment_3_0_1() { return cTypeAssignment_3_0_1; }
+
+ //DataTypeName
+ public RuleCall getTypeDataTypeNameParserRuleCall_3_0_1_0() { return cTypeDataTypeNameParserRuleCall_3_0_1_0; }
+
+ //("=" "(" initValue=Expression ")")?
+ public Group getGroup_3_0_2() { return cGroup_3_0_2; }
+
+ //"="
+ public Keyword getEqualsSignKeyword_3_0_2_0() { return cEqualsSignKeyword_3_0_2_0; }
+
+ //"("
+ public Keyword getLeftParenthesisKeyword_3_0_2_1() { return cLeftParenthesisKeyword_3_0_2_1; }
+
+ //initValue=Expression
+ public Assignment getInitValueAssignment_3_0_2_2() { return cInitValueAssignment_3_0_2_2; }
+
+ //Expression
+ public RuleCall getInitValueExpressionParserRuleCall_3_0_2_2_0() { return cInitValueExpressionParserRuleCall_3_0_2_2_0; }
+
+ //")"
+ public Keyword getRightParenthesisKeyword_3_0_2_3() { return cRightParenthesisKeyword_3_0_2_3; }
+
+ //"=" "(" initValue=Expression ")"
+ public Group getGroup_3_1() { return cGroup_3_1; }
+
+ //"="
+ public Keyword getEqualsSignKeyword_3_1_0() { return cEqualsSignKeyword_3_1_0; }
+
+ //"("
+ public Keyword getLeftParenthesisKeyword_3_1_1() { return cLeftParenthesisKeyword_3_1_1; }
+
+ //initValue=Expression
+ public Assignment getInitValueAssignment_3_1_2() { return cInitValueAssignment_3_1_2; }
+
+ //Expression
+ public RuleCall getInitValueExpressionParserRuleCall_3_1_2_0() { return cInitValueExpressionParserRuleCall_3_1_2_0; }
+
+ //")"
+ public Keyword getRightParenthesisKeyword_3_1_3() { return cRightParenthesisKeyword_3_1_3; }
+ }
+
+ public class VariableDirectionKindElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "VariableDirectionKind");
+ private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+ private final Keyword cInKeyword_0 = (Keyword)cAlternatives.eContents().get(0);
+ private final Keyword cOutKeyword_1 = (Keyword)cAlternatives.eContents().get(1);
+ private final Keyword cInoutKeyword_2 = (Keyword)cAlternatives.eContents().get(2);
+
+ //VariableDirectionKind:
+ // "in" | "out" | "inout";
+ public ParserRule getRule() { return rule; }
+
+ //"in" | "out" | "inout"
+ public Alternatives getAlternatives() { return cAlternatives; }
+
+ //"in"
+ public Keyword getInKeyword_0() { return cInKeyword_0; }
+
+ //"out"
+ public Keyword getOutKeyword_1() { return cOutKeyword_1; }
+
+ //"inout"
+ public Keyword getInoutKeyword_2() { return cInoutKeyword_2; }
+ }
+
+ public class DataTypeNameElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DataTypeName");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Assignment cPathAssignment_0 = (Assignment)cGroup.eContents().get(0);
+ private final RuleCall cPathQualifiedNameParserRuleCall_0_0 = (RuleCall)cPathAssignment_0.eContents().get(0);
+ private final Assignment cTypeAssignment_1 = (Assignment)cGroup.eContents().get(1);
+ private final CrossReference cTypeDataTypeCrossReference_1_0 = (CrossReference)cTypeAssignment_1.eContents().get(0);
+ private final RuleCall cTypeDataTypeIDTerminalRuleCall_1_0_1 = (RuleCall)cTypeDataTypeCrossReference_1_0.eContents().get(1);
+
+ //DataTypeName:
+ // path=QualifiedName? type=[uml::DataType];
+ public ParserRule getRule() { return rule; }
+
+ //path=QualifiedName? type=[uml::DataType]
+ public Group getGroup() { return cGroup; }
+
+ //path=QualifiedName?
+ public Assignment getPathAssignment_0() { return cPathAssignment_0; }
+
+ //QualifiedName
+ public RuleCall getPathQualifiedNameParserRuleCall_0_0() { return cPathQualifiedNameParserRuleCall_0_0; }
+
+ //type=[uml::DataType]
+ public Assignment getTypeAssignment_1() { return cTypeAssignment_1; }
+
+ //[uml::DataType]
+ public CrossReference getTypeDataTypeCrossReference_1_0() { return cTypeDataTypeCrossReference_1_0; }
+
+ //ID
+ public RuleCall getTypeDataTypeIDTerminalRuleCall_1_0_1() { return cTypeDataTypeIDTerminalRuleCall_1_0_1; }
+ }
+
+ public class NumberLiteralRuleElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "NumberLiteralRule");
+ private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+ private final RuleCall cIntegerLiteralRuleParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
+ private final RuleCall cUnlimitedLiteralRuleParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
+ private final RuleCall cRealLiteralRuleParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
+
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////
+ ////LITERAL
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////
+ //NumberLiteralRule:
+ // IntegerLiteralRule | UnlimitedLiteralRule | RealLiteralRule;
+ public ParserRule getRule() { return rule; }
+
+ //IntegerLiteralRule | UnlimitedLiteralRule | RealLiteralRule
+ public Alternatives getAlternatives() { return cAlternatives; }
+
+ //IntegerLiteralRule
+ public RuleCall getIntegerLiteralRuleParserRuleCall_0() { return cIntegerLiteralRuleParserRuleCall_0; }
+
+ //UnlimitedLiteralRule
+ public RuleCall getUnlimitedLiteralRuleParserRuleCall_1() { return cUnlimitedLiteralRuleParserRuleCall_1; }
+
+ //RealLiteralRule
+ public RuleCall getRealLiteralRuleParserRuleCall_2() { return cRealLiteralRuleParserRuleCall_2; }
+ }
+
+ public class IntegerLiteralRuleElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "IntegerLiteralRule");
+ private final Assignment cValueAssignment = (Assignment)rule.eContents().get(1);
+ private final RuleCall cValueIntegerLiteralTerminalRuleCall_0 = (RuleCall)cValueAssignment.eContents().get(0);
+
+ //IntegerLiteralRule:
+ // value=IntegerLiteral;
+ public ParserRule getRule() { return rule; }
+
+ //value=IntegerLiteral
+ public Assignment getValueAssignment() { return cValueAssignment; }
+
+ //IntegerLiteral
+ public RuleCall getValueIntegerLiteralTerminalRuleCall_0() { return cValueIntegerLiteralTerminalRuleCall_0; }
+ }
+
+ public class UnlimitedLiteralRuleElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "UnlimitedLiteralRule");
+ private final Assignment cValueAssignment = (Assignment)rule.eContents().get(1);
+ private final Keyword cValueAsteriskKeyword_0 = (Keyword)cValueAssignment.eContents().get(0);
+
+ ////UnlimitedLiteralRule :
+ //// value = UnlimitedLiteral ;
+ ////terminal UnlimitedLiteral :
+ //// '*' ;
+ //UnlimitedLiteralRule:
+ // value="*";
+ public ParserRule getRule() { return rule; }
+
+ //value="*"
+ public Assignment getValueAssignment() { return cValueAssignment; }
+
+ //"*"
+ public Keyword getValueAsteriskKeyword_0() { return cValueAsteriskKeyword_0; }
+ }
+
+ public class RealLiteralRuleElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "RealLiteralRule");
+ private final Assignment cValueAssignment = (Assignment)rule.eContents().get(1);
+ private final RuleCall cValueRealLiteralTerminalRuleCall_0 = (RuleCall)cValueAssignment.eContents().get(0);
+
+ //RealLiteralRule:
+ // value=RealLiteral;
+ public ParserRule getRule() { return rule; }
+
+ //value=RealLiteral
+ public Assignment getValueAssignment() { return cValueAssignment; }
+
+ //RealLiteral
+ public RuleCall getValueRealLiteralTerminalRuleCall_0() { return cValueRealLiteralTerminalRuleCall_0; }
+ }
+
+ public class DateTimeLiteralRuleElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DateTimeLiteralRule");
+ private final Assignment cValueAssignment = (Assignment)rule.eContents().get(1);
+ private final RuleCall cValueDateTimeLiteralTerminalRuleCall_0 = (RuleCall)cValueAssignment.eContents().get(0);
+
+ ////DateTimeLiteral:
+ //// TimeString (DateString)? (DayString)? |
+ //// DateString (DayString)? |
+ //// DayString ;
+ ////terminal DateString :
+ //// ('0'..'9')('0'..'9')('0'..'9')('0'..'9')'/'('0'('0'..'9')|'1'('0'..'2'))'/'(('0'..'2')('0'..'9')|'3' ('0'|'1')) ;
+ ////terminal TimeString :
+ //// (('0'..'1')('0'..'9')|'2'('0'..'3'))':'('0'..'5')('0'..'9')(':'('0'..'5')('0'..'9')(':'('0'..'9')('0'..'9'))?)? ;
+ ////terminal DayString :
+ //// "Mon" | "Tue" | "Wed" | "Thr" | "Fri" | "Sat" | "Sun" ;
+ //DateTimeLiteralRule:
+ // value=DateTimeLiteral;
+ public ParserRule getRule() { return rule; }
+
+ //value=DateTimeLiteral
+ public Assignment getValueAssignment() { return cValueAssignment; }
+
+ //DateTimeLiteral
+ public RuleCall getValueDateTimeLiteralTerminalRuleCall_0() { return cValueDateTimeLiteralTerminalRuleCall_0; }
+ }
+
+ public class BooleanLiteralRuleElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "BooleanLiteralRule");
+ private final Assignment cValueAssignment = (Assignment)rule.eContents().get(1);
+ private final RuleCall cValueBooleanLiteralTerminalRuleCall_0 = (RuleCall)cValueAssignment.eContents().get(0);
+
+ //BooleanLiteralRule:
+ // value=BooleanLiteral;
+ public ParserRule getRule() { return rule; }
+
+ //value=BooleanLiteral
+ public Assignment getValueAssignment() { return cValueAssignment; }
+
+ //BooleanLiteral
+ public RuleCall getValueBooleanLiteralTerminalRuleCall_0() { return cValueBooleanLiteralTerminalRuleCall_0; }
+ }
+
+ public class NullLiteralRuleElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "NullLiteralRule");
+ private final Assignment cValueAssignment = (Assignment)rule.eContents().get(1);
+ private final RuleCall cValueNullLiteralTerminalRuleCall_0 = (RuleCall)cValueAssignment.eContents().get(0);
+
+ //NullLiteralRule:
+ // value=NullLiteral;
+ public ParserRule getRule() { return rule; }
+
+ //value=NullLiteral
+ public Assignment getValueAssignment() { return cValueAssignment; }
+
+ //NullLiteral
+ public RuleCall getValueNullLiteralTerminalRuleCall_0() { return cValueNullLiteralTerminalRuleCall_0; }
+ }
+
+ public class DefaultLiteralRuleElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DefaultLiteralRule");
+ private final Assignment cValueAssignment = (Assignment)rule.eContents().get(1);
+ private final Keyword cValueSolidusKeyword_0 = (Keyword)cValueAssignment.eContents().get(0);
+
+ ////DefaultLiteralRule :
+ //// value = DefaultLiteral ;
+ ////terminal DefaultLiteral :
+ //// '/' ;
+ //DefaultLiteralRule:
+ // value="/";
+ public ParserRule getRule() { return rule; }
+
+ //value="/"
+ public Assignment getValueAssignment() { return cValueAssignment; }
+
+ //"/"
+ public Keyword getValueSolidusKeyword_0() { return cValueSolidusKeyword_0; }
+ }
+
+ public class StringLiteralRuleElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StringLiteralRule");
+ private final Assignment cValueAssignment = (Assignment)rule.eContents().get(1);
+ private final RuleCall cValueSTRINGTerminalRuleCall_0 = (RuleCall)cValueAssignment.eContents().get(0);
+
+ //StringLiteralRule:
+ // value=STRING;
+ public ParserRule getRule() { return rule; }
+
+ //value=STRING
+ public Assignment getValueAssignment() { return cValueAssignment; }
+
+ //STRING
+ public RuleCall getValueSTRINGTerminalRuleCall_0() { return cValueSTRINGTerminalRuleCall_0; }
+ }
+
+
+ private ExpressionElements pExpression;
+ private AndOrXorExpressionElements pAndOrXorExpression;
+ private EqualityExpressionElements pEqualityExpression;
+ private RelationalExpressionElements pRelationalExpression;
+ private ConditionalExpressionElements pConditionalExpression;
+ private AdditiveExpressionElements pAdditiveExpression;
+ private MultiplicativeExpressionElements pMultiplicativeExpression;
+ private UnaryExpressionElements pUnaryExpression;
+ private PrimaryExpressionElements pPrimaryExpression;
+ private ValueSpecificationElements pValueSpecification;
+ private SuffixExpressionElements pSuffixExpression;
+ private PropertyCallExpressionElements pPropertyCallExpression;
+ private OperationCallExpressionElements pOperationCallExpression;
+ private LiteralElements pLiteral;
+ private NameOrChoiceOrBehaviorCallElements pNameOrChoiceOrBehaviorCall;
+ private QualifiedNameElements pQualifiedName;
+ private IntervalElements pInterval;
+ private CollectionOrTupleElements pCollectionOrTuple;
+ private TupleElements pTuple;
+ private ListOfValuesElements pListOfValues;
+ private ListOfValueNamePairsElements pListOfValueNamePairs;
+ private ValueNamePairElements pValueNamePair;
+ private TimeExpressionElements pTimeExpression;
+ private InstantObsExpressionElements pInstantObsExpression;
+ private InstantObsNameElements pInstantObsName;
+ private DurationObsExpressionElements pDurationObsExpression;
+ private DurationObsNameElements pDurationObsName;
+ private JitterExpElements pJitterExp;
+ private VariableDeclarationElements pVariableDeclaration;
+ private VariableDirectionKindElements pVariableDirectionKind;
+ private DataTypeNameElements pDataTypeName;
+ private NumberLiteralRuleElements pNumberLiteralRule;
+ private IntegerLiteralRuleElements pIntegerLiteralRule;
+ private TerminalRule tIntegerLiteral;
+ private UnlimitedLiteralRuleElements pUnlimitedLiteralRule;
+ private RealLiteralRuleElements pRealLiteralRule;
+ private TerminalRule tRealLiteral;
+ private DateTimeLiteralRuleElements pDateTimeLiteralRule;
+ private TerminalRule tDateTimeLiteral;
+ private BooleanLiteralRuleElements pBooleanLiteralRule;
+ private TerminalRule tBooleanLiteral;
+ private NullLiteralRuleElements pNullLiteralRule;
+ private TerminalRule tNullLiteral;
+ private DefaultLiteralRuleElements pDefaultLiteralRule;
+ private StringLiteralRuleElements pStringLiteralRule;
+
+ private final GrammarProvider grammarProvider;
+
+ private TerminalsGrammarAccess gaTerminals;
+
+ @Inject
+ public VSLGrammarAccess(GrammarProvider grammarProvider,
+ TerminalsGrammarAccess gaTerminals) {
+ this.grammarProvider = grammarProvider;
+ this.gaTerminals = gaTerminals;
+ }
+
+ public Grammar getGrammar() {
+ return grammarProvider.getGrammar(this);
+ }
+
+
+ public TerminalsGrammarAccess getTerminalsGrammarAccess() {
+ return gaTerminals;
+ }
+
+
+ //Expression:
+ // exp=AndOrXorExpression;
+ public ExpressionElements getExpressionAccess() {
+ return (pExpression != null) ? pExpression : (pExpression = new ExpressionElements());
+ }
+
+ public ParserRule getExpressionRule() {
+ return getExpressionAccess().getRule();
+ }
+
+ //AndOrXorExpression:
+ // exp+=EqualityExpression (op+=("and" | "or" | "xor") exp+=EqualityExpression)*;
+ public AndOrXorExpressionElements getAndOrXorExpressionAccess() {
+ return (pAndOrXorExpression != null) ? pAndOrXorExpression : (pAndOrXorExpression = new AndOrXorExpressionElements());
+ }
+
+ public ParserRule getAndOrXorExpressionRule() {
+ return getAndOrXorExpressionAccess().getRule();
+ }
+
+ //EqualityExpression:
+ // exp+=RelationalExpression (op+=("==" | "<>") exp+=RelationalExpression)*;
+ public EqualityExpressionElements getEqualityExpressionAccess() {
+ return (pEqualityExpression != null) ? pEqualityExpression : (pEqualityExpression = new EqualityExpressionElements());
+ }
+
+ public ParserRule getEqualityExpressionRule() {
+ return getEqualityExpressionAccess().getRule();
+ }
+
+ //RelationalExpression:
+ // exp+=ConditionalExpression (op+=("<" | ">" | "<=" | ">=") exp+=ConditionalExpression)*;
+ public RelationalExpressionElements getRelationalExpressionAccess() {
+ return (pRelationalExpression != null) ? pRelationalExpression : (pRelationalExpression = new RelationalExpressionElements());
+ }
+
+ public ParserRule getRelationalExpressionRule() {
+ return getRelationalExpressionAccess().getRule();
+ }
+
+ //ConditionalExpression:
+ // exp+=AdditiveExpression (op+="?" exp+=AdditiveExpression ":" exp+=AdditiveExpression)?;
+ public ConditionalExpressionElements getConditionalExpressionAccess() {
+ return (pConditionalExpression != null) ? pConditionalExpression : (pConditionalExpression = new ConditionalExpressionElements());
+ }
+
+ public ParserRule getConditionalExpressionRule() {
+ return getConditionalExpressionAccess().getRule();
+ }
+
+ //AdditiveExpression:
+ // exp+=MultiplicativeExpression (op+=("+" | "-") exp+=MultiplicativeExpression)*;
+ public AdditiveExpressionElements getAdditiveExpressionAccess() {
+ return (pAdditiveExpression != null) ? pAdditiveExpression : (pAdditiveExpression = new AdditiveExpressionElements());
+ }
+
+ public ParserRule getAdditiveExpressionRule() {
+ return getAdditiveExpressionAccess().getRule();
+ }
+
+ //MultiplicativeExpression:
+ // exp+=UnaryExpression (op+=("*" | "/" | "mod") exp+=UnaryExpression)*;
+ public MultiplicativeExpressionElements getMultiplicativeExpressionAccess() {
+ return (pMultiplicativeExpression != null) ? pMultiplicativeExpression : (pMultiplicativeExpression = new MultiplicativeExpressionElements());
+ }
+
+ public ParserRule getMultiplicativeExpressionRule() {
+ return getMultiplicativeExpressionAccess().getRule();
+ }
+
+ //UnaryExpression:
+ // op=("not" | "-" | "+") unary=UnaryExpression | exp=PrimaryExpression;
+ public UnaryExpressionElements getUnaryExpressionAccess() {
+ return (pUnaryExpression != null) ? pUnaryExpression : (pUnaryExpression = new UnaryExpressionElements());
+ }
+
+ public ParserRule getUnaryExpressionRule() {
+ return getUnaryExpressionAccess().getRule();
+ }
+
+ //PrimaryExpression:
+ // prefix=ValueSpecification ("." suffix=SuffixExpression)?;
+ public PrimaryExpressionElements getPrimaryExpressionAccess() {
+ return (pPrimaryExpression != null) ? pPrimaryExpression : (pPrimaryExpression = new PrimaryExpressionElements());
+ }
+
+ public ParserRule getPrimaryExpressionRule() {
+ return getPrimaryExpressionAccess().getRule();
+ }
+
+ //ValueSpecification:
+ // Literal | NameOrChoiceOrBehaviorCall | Interval | CollectionOrTuple | Tuple | TimeExpression | VariableDeclaration |
+ // "(" Expression ")";
+ public ValueSpecificationElements getValueSpecificationAccess() {
+ return (pValueSpecification != null) ? pValueSpecification : (pValueSpecification = new ValueSpecificationElements());
+ }
+
+ public ParserRule getValueSpecificationRule() {
+ return getValueSpecificationAccess().getRule();
+ }
+
+ //SuffixExpression:
+ // PropertyCallExpression | OperationCallExpression;
+ public SuffixExpressionElements getSuffixExpressionAccess() {
+ return (pSuffixExpression != null) ? pSuffixExpression : (pSuffixExpression = new SuffixExpressionElements());
+ }
+
+ public ParserRule getSuffixExpressionRule() {
+ return getSuffixExpressionAccess().getRule();
+ }
+
+ //PropertyCallExpression:
+ // property=[uml::Property] ("." suffix=SuffixExpression)?;
+ public PropertyCallExpressionElements getPropertyCallExpressionAccess() {
+ return (pPropertyCallExpression != null) ? pPropertyCallExpression : (pPropertyCallExpression = new PropertyCallExpressionElements());
+ }
+
+ public ParserRule getPropertyCallExpressionRule() {
+ return getPropertyCallExpressionAccess().getRule();
+ }
+
+ //OperationCallExpression:
+ // operation=[uml::Operation] "(" arguments=ListOfValues? ")" ("." suffix=SuffixExpression)?;
+ public OperationCallExpressionElements getOperationCallExpressionAccess() {
+ return (pOperationCallExpression != null) ? pOperationCallExpression : (pOperationCallExpression = new OperationCallExpressionElements());
+ }
+
+ public ParserRule getOperationCallExpressionRule() {
+ return getOperationCallExpressionAccess().getRule();
+ }
+
+ //Literal:
+ // NumberLiteralRule | DateTimeLiteralRule | BooleanLiteralRule | NullLiteralRule | DefaultLiteralRule |
+ // StringLiteralRule;
+ public LiteralElements getLiteralAccess() {
+ return (pLiteral != null) ? pLiteral : (pLiteral = new LiteralElements());
+ }
+
+ public ParserRule getLiteralRule() {
+ return getLiteralAccess().getRule();
+ }
+
+ //NameOrChoiceOrBehaviorCall:
+ // path=QualifiedName? // can resolve to :
+ // // - EnumSpecification,
+ // // - VariableCallExpression
+ // // - PropertyCallExpression
+ // // - ChoiceExpression
+ // id=[uml::NamedElement] ("(" arguments=ListOfValues? ")")?;
+ public NameOrChoiceOrBehaviorCallElements getNameOrChoiceOrBehaviorCallAccess() {
+ return (pNameOrChoiceOrBehaviorCall != null) ? pNameOrChoiceOrBehaviorCall : (pNameOrChoiceOrBehaviorCall = new NameOrChoiceOrBehaviorCallElements());
+ }
+
+ public ParserRule getNameOrChoiceOrBehaviorCallRule() {
+ return getNameOrChoiceOrBehaviorCallAccess().getRule();
+ }
+
+ //QualifiedName:
+ // path=[uml::Namespace] "::" remaining=QualifiedName?;
+ public QualifiedNameElements getQualifiedNameAccess() {
+ return (pQualifiedName != null) ? pQualifiedName : (pQualifiedName = new QualifiedNameElements());
+ }
+
+ public ParserRule getQualifiedNameRule() {
+ return getQualifiedNameAccess().getRule();
+ }
+
+ //Interval:
+ // ("]" | isLowerIncluded="[") lower=Expression ".." upper=Expression (isUpperIncluded="]" | "[");
+ public IntervalElements getIntervalAccess() {
+ return (pInterval != null) ? pInterval : (pInterval = new IntervalElements());
+ }
+
+ public ParserRule getIntervalRule() {
+ return getIntervalAccess().getRule();
+ }
+
+ //CollectionOrTuple:
+ // "{" listOfValues=ListOfValues "}";
+ public CollectionOrTupleElements getCollectionOrTupleAccess() {
+ return (pCollectionOrTuple != null) ? pCollectionOrTuple : (pCollectionOrTuple = new CollectionOrTupleElements());
+ }
+
+ public ParserRule getCollectionOrTupleRule() {
+ return getCollectionOrTupleAccess().getRule();
+ }
+
+ //Tuple:
+ // "{" listOfValueNamePairs=ListOfValueNamePairs "}";
+ public TupleElements getTupleAccess() {
+ return (pTuple != null) ? pTuple : (pTuple = new TupleElements());
+ }
+
+ public ParserRule getTupleRule() {
+ return getTupleAccess().getRule();
+ }
+
+ //ListOfValues:
+ // values+=Expression ("," values+=Expression)*;
+ public ListOfValuesElements getListOfValuesAccess() {
+ return (pListOfValues != null) ? pListOfValues : (pListOfValues = new ListOfValuesElements());
+ }
+
+ public ParserRule getListOfValuesRule() {
+ return getListOfValuesAccess().getRule();
+ }
+
+ //ListOfValueNamePairs:
+ // valueNamePairs+=ValueNamePair ("," valueNamePairs+=ValueNamePair)*;
+ public ListOfValueNamePairsElements getListOfValueNamePairsAccess() {
+ return (pListOfValueNamePairs != null) ? pListOfValueNamePairs : (pListOfValueNamePairs = new ListOfValueNamePairsElements());
+ }
+
+ public ParserRule getListOfValueNamePairsRule() {
+ return getListOfValueNamePairsAccess().getRule();
+ }
+
+ //ValueNamePair:
+ // property=[uml::Property] "=" value=Expression;
+ public ValueNamePairElements getValueNamePairAccess() {
+ return (pValueNamePair != null) ? pValueNamePair : (pValueNamePair = new ValueNamePairElements());
+ }
+
+ public ParserRule getValueNamePairRule() {
+ return getValueNamePairAccess().getRule();
+ }
+
+ //TimeExpression:
+ // InstantObsExpression | DurationObsExpression | JitterExp;
+ public TimeExpressionElements getTimeExpressionAccess() {
+ return (pTimeExpression != null) ? pTimeExpression : (pTimeExpression = new TimeExpressionElements());
+ }
+
+ public ParserRule getTimeExpressionRule() {
+ return getTimeExpressionAccess().getRule();
+ }
+
+ //InstantObsExpression:
+ // "@" id=InstantObsName ("(" index=Expression ")")? ("when" "(" condition=Expression ")")?;
+ public InstantObsExpressionElements getInstantObsExpressionAccess() {
+ return (pInstantObsExpression != null) ? pInstantObsExpression : (pInstantObsExpression = new InstantObsExpressionElements());
+ }
+
+ public ParserRule getInstantObsExpressionRule() {
+ return getInstantObsExpressionAccess().getRule();
+ }
+
+ //InstantObsName:
+ // path=QualifiedName? instantId=[uml::TimeObservation];
+ public InstantObsNameElements getInstantObsNameAccess() {
+ return (pInstantObsName != null) ? pInstantObsName : (pInstantObsName = new InstantObsNameElements());
+ }
+
+ public ParserRule getInstantObsNameRule() {
+ return getInstantObsNameAccess().getRule();
+ }
+
+ //DurationObsExpression:
+ // "&" id=DurationObsName ("(" index=Expression ")")? ("when" "(" condition=Expression ")")?;
+ public DurationObsExpressionElements getDurationObsExpressionAccess() {
+ return (pDurationObsExpression != null) ? pDurationObsExpression : (pDurationObsExpression = new DurationObsExpressionElements());
+ }
+
+ public ParserRule getDurationObsExpressionRule() {
+ return getDurationObsExpressionAccess().getRule();
+ }
+
+ //DurationObsName:
+ // path=QualifiedName? durationId=[uml::DurationObservation];
+ public DurationObsNameElements getDurationObsNameAccess() {
+ return (pDurationObsName != null) ? pDurationObsName : (pDurationObsName = new DurationObsNameElements());
+ }
+
+ public ParserRule getDurationObsNameRule() {
+ return getDurationObsNameAccess().getRule();
+ }
+
+ //JitterExp:
+ // "jitter(" firstInstant=InstantObsExpression ("-" secondInstant=InstantObsExpression)? ")";
+ public JitterExpElements getJitterExpAccess() {
+ return (pJitterExp != null) ? pJitterExp : (pJitterExp = new JitterExpElements());
+ }
+
+ public ParserRule getJitterExpRule() {
+ return getJitterExpAccess().getRule();
+ }
+
+ //VariableDeclaration:
+ // variableDeclaration=VariableDirectionKind? "$" name=ID (":" type=DataTypeName ("=" "(" initValue=Expression ")")? |
+ // "=" "(" initValue=Expression ")");
+ public VariableDeclarationElements getVariableDeclarationAccess() {
+ return (pVariableDeclaration != null) ? pVariableDeclaration : (pVariableDeclaration = new VariableDeclarationElements());
+ }
+
+ public ParserRule getVariableDeclarationRule() {
+ return getVariableDeclarationAccess().getRule();
+ }
+
+ //VariableDirectionKind:
+ // "in" | "out" | "inout";
+ public VariableDirectionKindElements getVariableDirectionKindAccess() {
+ return (pVariableDirectionKind != null) ? pVariableDirectionKind : (pVariableDirectionKind = new VariableDirectionKindElements());
+ }
+
+ public ParserRule getVariableDirectionKindRule() {
+ return getVariableDirectionKindAccess().getRule();
+ }
+
+ //DataTypeName:
+ // path=QualifiedName? type=[uml::DataType];
+ public DataTypeNameElements getDataTypeNameAccess() {
+ return (pDataTypeName != null) ? pDataTypeName : (pDataTypeName = new DataTypeNameElements());
+ }
+
+ public ParserRule getDataTypeNameRule() {
+ return getDataTypeNameAccess().getRule();
+ }
+
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////
+ ////LITERAL
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////
+ //NumberLiteralRule:
+ // IntegerLiteralRule | UnlimitedLiteralRule | RealLiteralRule;
+ public NumberLiteralRuleElements getNumberLiteralRuleAccess() {
+ return (pNumberLiteralRule != null) ? pNumberLiteralRule : (pNumberLiteralRule = new NumberLiteralRuleElements());
+ }
+
+ public ParserRule getNumberLiteralRuleRule() {
+ return getNumberLiteralRuleAccess().getRule();
+ }
+
+ //IntegerLiteralRule:
+ // value=IntegerLiteral;
+ public IntegerLiteralRuleElements getIntegerLiteralRuleAccess() {
+ return (pIntegerLiteralRule != null) ? pIntegerLiteralRule : (pIntegerLiteralRule = new IntegerLiteralRuleElements());
+ }
+
+ public ParserRule getIntegerLiteralRuleRule() {
+ return getIntegerLiteralRuleAccess().getRule();
+ }
+
+ //terminal IntegerLiteral:
+ // ("+" | "-")? ("0".."9"+ | "0x" ("0".."9" | "A".."F" | "a".."f")+ | "0b" "0".."1"+);
+ public TerminalRule getIntegerLiteralRule() {
+ return (tIntegerLiteral != null) ? tIntegerLiteral : (tIntegerLiteral = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "IntegerLiteral"));
+ }
+
+ ////UnlimitedLiteralRule :
+ //// value = UnlimitedLiteral ;
+ ////terminal UnlimitedLiteral :
+ //// '*' ;
+ //UnlimitedLiteralRule:
+ // value="*";
+ public UnlimitedLiteralRuleElements getUnlimitedLiteralRuleAccess() {
+ return (pUnlimitedLiteralRule != null) ? pUnlimitedLiteralRule : (pUnlimitedLiteralRule = new UnlimitedLiteralRuleElements());
+ }
+
+ public ParserRule getUnlimitedLiteralRuleRule() {
+ return getUnlimitedLiteralRuleAccess().getRule();
+ }
+
+ //RealLiteralRule:
+ // value=RealLiteral;
+ public RealLiteralRuleElements getRealLiteralRuleAccess() {
+ return (pRealLiteralRule != null) ? pRealLiteralRule : (pRealLiteralRule = new RealLiteralRuleElements());
+ }
+
+ public ParserRule getRealLiteralRuleRule() {
+ return getRealLiteralRuleAccess().getRule();
+ }
+
+ //terminal RealLiteral:
+ // ("+" | "-")? "0".."9"+ "." "0".."9"+ ("E" ("+" | "-")? "0".."9"+)?;
+ public TerminalRule getRealLiteralRule() {
+ return (tRealLiteral != null) ? tRealLiteral : (tRealLiteral = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "RealLiteral"));
+ }
+
+ ////DateTimeLiteral:
+ //// TimeString (DateString)? (DayString)? |
+ //// DateString (DayString)? |
+ //// DayString ;
+ ////terminal DateString :
+ //// ('0'..'9')('0'..'9')('0'..'9')('0'..'9')'/'('0'('0'..'9')|'1'('0'..'2'))'/'(('0'..'2')('0'..'9')|'3' ('0'|'1')) ;
+ ////terminal TimeString :
+ //// (('0'..'1')('0'..'9')|'2'('0'..'3'))':'('0'..'5')('0'..'9')(':'('0'..'5')('0'..'9')(':'('0'..'9')('0'..'9'))?)? ;
+ ////terminal DayString :
+ //// "Mon" | "Tue" | "Wed" | "Thr" | "Fri" | "Sat" | "Sun" ;
+ //DateTimeLiteralRule:
+ // value=DateTimeLiteral;
+ public DateTimeLiteralRuleElements getDateTimeLiteralRuleAccess() {
+ return (pDateTimeLiteralRule != null) ? pDateTimeLiteralRule : (pDateTimeLiteralRule = new DateTimeLiteralRuleElements());
+ }
+
+ public ParserRule getDateTimeLiteralRuleRule() {
+ return getDateTimeLiteralRuleAccess().getRule();
+ }
+
+ //terminal DateTimeLiteral:
+ // (("0".."1" "0".."9" | "2" "0".."3") ":" "0".."5" "0".."9" (":" "0".."5" "0".."9" (":" "0".."9" "0".."9")?)?) (" "
+ // "0".."9" "0".."9" "0".."9" "0".."9" "/" ("0" "0".."9" | "1" "0".."2") "/" ("0".."2" "0".."9" | "3" ("0" | "1")))? (" "
+ // ("Mon" | "Tue" | "Wed" | "Thr" | "Fri" | "Sat" | "Sun"))? | ("0".."9" "0".."9" "0".."9" "0".."9" "/" ("0" "0".."9" |
+ // "1" "0".."2") "/" ("0".."2" "0".."9" | "3" ("0" | "1"))) (" " ("Mon" | "Tue" | "Wed" | "Thr" | "Fri" | "Sat" |
+ // "Sun"))? | ("Mon" | "Tue" | "Wed" | "Thr" | "Fri" | "Sat" | "Sun");
+ public TerminalRule getDateTimeLiteralRule() {
+ return (tDateTimeLiteral != null) ? tDateTimeLiteral : (tDateTimeLiteral = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "DateTimeLiteral"));
+ }
+
+ //BooleanLiteralRule:
+ // value=BooleanLiteral;
+ public BooleanLiteralRuleElements getBooleanLiteralRuleAccess() {
+ return (pBooleanLiteralRule != null) ? pBooleanLiteralRule : (pBooleanLiteralRule = new BooleanLiteralRuleElements());
+ }
+
+ public ParserRule getBooleanLiteralRuleRule() {
+ return getBooleanLiteralRuleAccess().getRule();
+ }
+
+ //terminal BooleanLiteral:
+ // "true" | "false";
+ public TerminalRule getBooleanLiteralRule() {
+ return (tBooleanLiteral != null) ? tBooleanLiteral : (tBooleanLiteral = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "BooleanLiteral"));
+ }
+
+ //NullLiteralRule:
+ // value=NullLiteral;
+ public NullLiteralRuleElements getNullLiteralRuleAccess() {
+ return (pNullLiteralRule != null) ? pNullLiteralRule : (pNullLiteralRule = new NullLiteralRuleElements());
+ }
+
+ public ParserRule getNullLiteralRuleRule() {
+ return getNullLiteralRuleAccess().getRule();
+ }
+
+ //terminal NullLiteral:
+ // "null";
+ public TerminalRule getNullLiteralRule() {
+ return (tNullLiteral != null) ? tNullLiteral : (tNullLiteral = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "NullLiteral"));
+ }
+
+ ////DefaultLiteralRule :
+ //// value = DefaultLiteral ;
+ ////terminal DefaultLiteral :
+ //// '/' ;
+ //DefaultLiteralRule:
+ // value="/";
+ public DefaultLiteralRuleElements getDefaultLiteralRuleAccess() {
+ return (pDefaultLiteralRule != null) ? pDefaultLiteralRule : (pDefaultLiteralRule = new DefaultLiteralRuleElements());
+ }
+
+ public ParserRule getDefaultLiteralRuleRule() {
+ return getDefaultLiteralRuleAccess().getRule();
+ }
+
+ //StringLiteralRule:
+ // value=STRING;
+ public StringLiteralRuleElements getStringLiteralRuleAccess() {
+ return (pStringLiteralRule != null) ? pStringLiteralRule : (pStringLiteralRule = new StringLiteralRuleElements());
+ }
+
+ public ParserRule getStringLiteralRuleRule() {
+ return getStringLiteralRuleAccess().getRule();
+ }
+
+ //terminal ID:
+ // "^"? ("a".."z" | "A".."Z" | "_") ("a".."z" | "A".."Z" | "_" | "0".."9")*;
+ public TerminalRule getIDRule() {
+ return gaTerminals.getIDRule();
+ }
+
+ //terminal INT returns ecore::EInt:
+ // "0".."9"+;
+ public TerminalRule getINTRule() {
+ return gaTerminals.getINTRule();
+ }
+
+ //terminal STRING:
+ // "\"" ("\\" ("b" | "t" | "n" | "f" | "r" | "u" | "\"" | "\'" | "\\") | !("\\" | "\""))* "\"" | "\'" ("\\" ("b" | "t" |
+ // "n" | "f" | "r" | "u" | "\"" | "\'" | "\\") | !("\\" | "\'"))* "\'";
+ public TerminalRule getSTRINGRule() {
+ return gaTerminals.getSTRINGRule();
+ }
+
+ //terminal ML_COMMENT:
+ // "/ *"->"* /";
+ public TerminalRule getML_COMMENTRule() {
+ return gaTerminals.getML_COMMENTRule();
+ }
+
+ //terminal SL_COMMENT:
+ // "//" !("\n" | "\r")* ("\r"? "\n")?;
+ public TerminalRule getSL_COMMENTRule() {
+ return gaTerminals.getSL_COMMENTRule();
+ }
+
+ //terminal WS:
+ // (" " | "\t" | "\r" | "\n")+;
+ public TerminalRule getWSRule() {
+ return gaTerminals.getWSRule();
+ }
+
+ //terminal ANY_OTHER:
+ // .;
+ public TerminalRule getANY_OTHERRule() {
+ return gaTerminals.getANY_OTHERRule();
+ }
+}
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/AdditiveExpression.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/AdditiveExpression.java
new file mode 100644
index 00000000000..c32d9edc9de
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/AdditiveExpression.java
@@ -0,0 +1,94 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Additive Expression</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.AdditiveExpression#getExp <em>Exp</em>}</li>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.AdditiveExpression#getOp <em>Op</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getAdditiveExpression()
+ * @model
+ * @generated
+ */
+public interface AdditiveExpression extends EObject
+{
+ /**
+ * Returns the value of the '<em><b>Exp</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.papyrus.marte.vsl.vSL.MultiplicativeExpression}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Exp</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>Exp</em>' containment reference list.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getAdditiveExpression_Exp()
+ * @model containment="true"
+ * @generated
+ */
+ EList<MultiplicativeExpression> getExp();
+
+ /**
+ * Returns the value of the '<em><b>Op</b></em>' attribute list.
+ * The list contents are of type {@link java.lang.String}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Op</em>' attribute list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Op</em>' attribute list.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getAdditiveExpression_Op()
+ * @model unique="false"
+ * @generated
+ */
+ EList<String> getOp();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;'"
+ * @generated
+ */
+ EObject getFilteredParentRule(EClass filter);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;'"
+ * @generated
+ */
+ Type getExpectedType();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;'"
+ * @generated
+ */
+ Element getContextElement();
+
+} // AdditiveExpression
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/AndOrXorExpression.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/AndOrXorExpression.java
new file mode 100644
index 00000000000..02d717229e4
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/AndOrXorExpression.java
@@ -0,0 +1,94 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>And Or Xor Expression</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.AndOrXorExpression#getExp <em>Exp</em>}</li>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.AndOrXorExpression#getOp <em>Op</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getAndOrXorExpression()
+ * @model
+ * @generated
+ */
+public interface AndOrXorExpression extends EObject
+{
+ /**
+ * Returns the value of the '<em><b>Exp</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.papyrus.marte.vsl.vSL.EqualityExpression}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Exp</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>Exp</em>' containment reference list.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getAndOrXorExpression_Exp()
+ * @model containment="true"
+ * @generated
+ */
+ EList<EqualityExpression> getExp();
+
+ /**
+ * Returns the value of the '<em><b>Op</b></em>' attribute list.
+ * The list contents are of type {@link java.lang.String}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Op</em>' attribute list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Op</em>' attribute list.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getAndOrXorExpression_Op()
+ * @model unique="false"
+ * @generated
+ */
+ EList<String> getOp();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;'"
+ * @generated
+ */
+ EObject getFilteredParentRule(EClass filter);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;'"
+ * @generated
+ */
+ Type getExpectedType();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;'"
+ * @generated
+ */
+ Element getContextElement();
+
+} // AndOrXorExpression
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/BooleanLiteralRule.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/BooleanLiteralRule.java
new file mode 100644
index 00000000000..46079315ba8
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/BooleanLiteralRule.java
@@ -0,0 +1,53 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Boolean Literal Rule</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getBooleanLiteralRule()
+ * @model
+ * @generated
+ */
+public interface BooleanLiteralRule extends Literal
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;'"
+ * @generated
+ */
+ EObject getFilteredParentRule(EClass filter);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;'"
+ * @generated
+ */
+ Type getExpectedType();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;'"
+ * @generated
+ */
+ Element getContextElement();
+
+} // BooleanLiteralRule
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/CollectionOrTuple.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/CollectionOrTuple.java
new file mode 100644
index 00000000000..6462414cf90
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/CollectionOrTuple.java
@@ -0,0 +1,85 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Collection Or Tuple</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.CollectionOrTuple#getListOfValues <em>List Of Values</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getCollectionOrTuple()
+ * @model
+ * @generated
+ */
+public interface CollectionOrTuple extends ValueSpecification
+{
+ /**
+ * Returns the value of the '<em><b>List Of Values</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>List Of Values</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>List Of Values</em>' containment reference.
+ * @see #setListOfValues(ListOfValues)
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getCollectionOrTuple_ListOfValues()
+ * @model containment="true"
+ * @generated
+ */
+ ListOfValues getListOfValues();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.marte.vsl.vSL.CollectionOrTuple#getListOfValues <em>List Of Values</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>List Of Values</em>' containment reference.
+ * @see #getListOfValues()
+ * @generated
+ */
+ void setListOfValues(ListOfValues value);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;'"
+ * @generated
+ */
+ EObject getFilteredParentRule(EClass filter);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;'"
+ * @generated
+ */
+ Type getExpectedType();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;'"
+ * @generated
+ */
+ Element getContextElement();
+
+} // CollectionOrTuple
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/ConditionalExpression.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/ConditionalExpression.java
new file mode 100644
index 00000000000..30fc3650ca2
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/ConditionalExpression.java
@@ -0,0 +1,94 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Conditional Expression</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.ConditionalExpression#getExp <em>Exp</em>}</li>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.ConditionalExpression#getOp <em>Op</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getConditionalExpression()
+ * @model
+ * @generated
+ */
+public interface ConditionalExpression extends EObject
+{
+ /**
+ * Returns the value of the '<em><b>Exp</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.papyrus.marte.vsl.vSL.AdditiveExpression}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Exp</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>Exp</em>' containment reference list.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getConditionalExpression_Exp()
+ * @model containment="true"
+ * @generated
+ */
+ EList<AdditiveExpression> getExp();
+
+ /**
+ * Returns the value of the '<em><b>Op</b></em>' attribute list.
+ * The list contents are of type {@link java.lang.String}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Op</em>' attribute list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Op</em>' attribute list.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getConditionalExpression_Op()
+ * @model unique="false"
+ * @generated
+ */
+ EList<String> getOp();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;'"
+ * @generated
+ */
+ EObject getFilteredParentRule(EClass filter);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;'"
+ * @generated
+ */
+ Type getExpectedType();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;'"
+ * @generated
+ */
+ Element getContextElement();
+
+} // ConditionalExpression
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/DataTypeName.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/DataTypeName.java
new file mode 100644
index 00000000000..68a70c8c1c8
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/DataTypeName.java
@@ -0,0 +1,113 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.DataType;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Data Type Name</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.DataTypeName#getPath <em>Path</em>}</li>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.DataTypeName#getType <em>Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getDataTypeName()
+ * @model
+ * @generated
+ */
+public interface DataTypeName extends EObject
+{
+ /**
+ * Returns the value of the '<em><b>Path</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Path</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>Path</em>' containment reference.
+ * @see #setPath(QualifiedName)
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getDataTypeName_Path()
+ * @model containment="true"
+ * @generated
+ */
+ QualifiedName getPath();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.marte.vsl.vSL.DataTypeName#getPath <em>Path</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Path</em>' containment reference.
+ * @see #getPath()
+ * @generated
+ */
+ void setPath(QualifiedName value);
+
+ /**
+ * Returns the value of the '<em><b>Type</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Type</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Type</em>' reference.
+ * @see #setType(DataType)
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getDataTypeName_Type()
+ * @model
+ * @generated
+ */
+ DataType getType();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.marte.vsl.vSL.DataTypeName#getType <em>Type</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Type</em>' reference.
+ * @see #getType()
+ * @generated
+ */
+ void setType(DataType value);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;'"
+ * @generated
+ */
+ EObject getFilteredParentRule(EClass filter);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;'"
+ * @generated
+ */
+ Type getExpectedType();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;'"
+ * @generated
+ */
+ Element getContextElement();
+
+} // DataTypeName
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/DateTimeLiteralRule.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/DateTimeLiteralRule.java
new file mode 100644
index 00000000000..159c047cbff
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/DateTimeLiteralRule.java
@@ -0,0 +1,53 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Date Time Literal Rule</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getDateTimeLiteralRule()
+ * @model
+ * @generated
+ */
+public interface DateTimeLiteralRule extends Literal
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;'"
+ * @generated
+ */
+ EObject getFilteredParentRule(EClass filter);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;'"
+ * @generated
+ */
+ Type getExpectedType();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;'"
+ * @generated
+ */
+ Element getContextElement();
+
+} // DateTimeLiteralRule
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/DefaultLiteralRule.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/DefaultLiteralRule.java
new file mode 100644
index 00000000000..149873f0992
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/DefaultLiteralRule.java
@@ -0,0 +1,53 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Default Literal Rule</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getDefaultLiteralRule()
+ * @model
+ * @generated
+ */
+public interface DefaultLiteralRule extends Literal
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;'"
+ * @generated
+ */
+ EObject getFilteredParentRule(EClass filter);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;'"
+ * @generated
+ */
+ Type getExpectedType();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;'"
+ * @generated
+ */
+ Element getContextElement();
+
+} // DefaultLiteralRule
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/DurationObsExpression.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/DurationObsExpression.java
new file mode 100644
index 00000000000..b50dbada085
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/DurationObsExpression.java
@@ -0,0 +1,139 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Duration Obs Expression</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.DurationObsExpression#getId <em>Id</em>}</li>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.DurationObsExpression#getIndex <em>Index</em>}</li>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.DurationObsExpression#getCondition <em>Condition</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getDurationObsExpression()
+ * @model
+ * @generated
+ */
+public interface DurationObsExpression extends TimeExpression
+{
+ /**
+ * Returns the value of the '<em><b>Id</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>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>Id</em>' containment reference.
+ * @see #setId(DurationObsName)
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getDurationObsExpression_Id()
+ * @model containment="true"
+ * @generated
+ */
+ DurationObsName getId();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.marte.vsl.vSL.DurationObsExpression#getId <em>Id</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Id</em>' containment reference.
+ * @see #getId()
+ * @generated
+ */
+ void setId(DurationObsName value);
+
+ /**
+ * Returns the value of the '<em><b>Index</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Index</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>Index</em>' containment reference.
+ * @see #setIndex(Expression)
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getDurationObsExpression_Index()
+ * @model containment="true"
+ * @generated
+ */
+ Expression getIndex();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.marte.vsl.vSL.DurationObsExpression#getIndex <em>Index</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Index</em>' containment reference.
+ * @see #getIndex()
+ * @generated
+ */
+ void setIndex(Expression value);
+
+ /**
+ * 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(Expression)
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getDurationObsExpression_Condition()
+ * @model containment="true"
+ * @generated
+ */
+ Expression getCondition();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.marte.vsl.vSL.DurationObsExpression#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(Expression value);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;'"
+ * @generated
+ */
+ EObject getFilteredParentRule(EClass filter);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;'"
+ * @generated
+ */
+ Type getExpectedType();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;'"
+ * @generated
+ */
+ Element getContextElement();
+
+} // DurationObsExpression
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/DurationObsName.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/DurationObsName.java
new file mode 100644
index 00000000000..fcaa10eb359
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/DurationObsName.java
@@ -0,0 +1,113 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.DurationObservation;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Duration Obs Name</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.DurationObsName#getPath <em>Path</em>}</li>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.DurationObsName#getDurationId <em>Duration Id</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getDurationObsName()
+ * @model
+ * @generated
+ */
+public interface DurationObsName extends EObject
+{
+ /**
+ * Returns the value of the '<em><b>Path</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Path</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>Path</em>' containment reference.
+ * @see #setPath(QualifiedName)
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getDurationObsName_Path()
+ * @model containment="true"
+ * @generated
+ */
+ QualifiedName getPath();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.marte.vsl.vSL.DurationObsName#getPath <em>Path</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Path</em>' containment reference.
+ * @see #getPath()
+ * @generated
+ */
+ void setPath(QualifiedName value);
+
+ /**
+ * Returns the value of the '<em><b>Duration Id</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Duration Id</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Duration Id</em>' reference.
+ * @see #setDurationId(DurationObservation)
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getDurationObsName_DurationId()
+ * @model
+ * @generated
+ */
+ DurationObservation getDurationId();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.marte.vsl.vSL.DurationObsName#getDurationId <em>Duration Id</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Duration Id</em>' reference.
+ * @see #getDurationId()
+ * @generated
+ */
+ void setDurationId(DurationObservation value);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;'"
+ * @generated
+ */
+ EObject getFilteredParentRule(EClass filter);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;'"
+ * @generated
+ */
+ Type getExpectedType();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;'"
+ * @generated
+ */
+ Element getContextElement();
+
+} // DurationObsName
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/EqualityExpression.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/EqualityExpression.java
new file mode 100644
index 00000000000..0e7676ac832
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/EqualityExpression.java
@@ -0,0 +1,94 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Equality Expression</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.EqualityExpression#getExp <em>Exp</em>}</li>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.EqualityExpression#getOp <em>Op</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getEqualityExpression()
+ * @model
+ * @generated
+ */
+public interface EqualityExpression extends EObject
+{
+ /**
+ * Returns the value of the '<em><b>Exp</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.papyrus.marte.vsl.vSL.RelationalExpression}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Exp</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>Exp</em>' containment reference list.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getEqualityExpression_Exp()
+ * @model containment="true"
+ * @generated
+ */
+ EList<RelationalExpression> getExp();
+
+ /**
+ * Returns the value of the '<em><b>Op</b></em>' attribute list.
+ * The list contents are of type {@link java.lang.String}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Op</em>' attribute list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Op</em>' attribute list.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getEqualityExpression_Op()
+ * @model unique="false"
+ * @generated
+ */
+ EList<String> getOp();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;'"
+ * @generated
+ */
+ EObject getFilteredParentRule(EClass filter);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;'"
+ * @generated
+ */
+ Type getExpectedType();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;'"
+ * @generated
+ */
+ Element getContextElement();
+
+} // EqualityExpression
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/Expression.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/Expression.java
new file mode 100644
index 00000000000..b552c9da8ad
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/Expression.java
@@ -0,0 +1,85 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Expression</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.Expression#getExp <em>Exp</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getExpression()
+ * @model
+ * @generated
+ */
+public interface Expression extends ValueSpecification
+{
+ /**
+ * Returns the value of the '<em><b>Exp</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Exp</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>Exp</em>' containment reference.
+ * @see #setExp(AndOrXorExpression)
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getExpression_Exp()
+ * @model containment="true"
+ * @generated
+ */
+ AndOrXorExpression getExp();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.marte.vsl.vSL.Expression#getExp <em>Exp</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Exp</em>' containment reference.
+ * @see #getExp()
+ * @generated
+ */
+ void setExp(AndOrXorExpression value);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;'"
+ * @generated
+ */
+ EObject getFilteredParentRule(EClass filter);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;'"
+ * @generated
+ */
+ Type getExpectedType();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;'"
+ * @generated
+ */
+ Element getContextElement();
+
+} // Expression
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/InstantObsExpression.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/InstantObsExpression.java
new file mode 100644
index 00000000000..1c49e4483e7
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/InstantObsExpression.java
@@ -0,0 +1,139 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Instant Obs Expression</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.InstantObsExpression#getId <em>Id</em>}</li>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.InstantObsExpression#getIndex <em>Index</em>}</li>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.InstantObsExpression#getCondition <em>Condition</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getInstantObsExpression()
+ * @model
+ * @generated
+ */
+public interface InstantObsExpression extends TimeExpression
+{
+ /**
+ * Returns the value of the '<em><b>Id</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>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>Id</em>' containment reference.
+ * @see #setId(InstantObsName)
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getInstantObsExpression_Id()
+ * @model containment="true"
+ * @generated
+ */
+ InstantObsName getId();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.marte.vsl.vSL.InstantObsExpression#getId <em>Id</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Id</em>' containment reference.
+ * @see #getId()
+ * @generated
+ */
+ void setId(InstantObsName value);
+
+ /**
+ * Returns the value of the '<em><b>Index</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Index</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>Index</em>' containment reference.
+ * @see #setIndex(Expression)
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getInstantObsExpression_Index()
+ * @model containment="true"
+ * @generated
+ */
+ Expression getIndex();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.marte.vsl.vSL.InstantObsExpression#getIndex <em>Index</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Index</em>' containment reference.
+ * @see #getIndex()
+ * @generated
+ */
+ void setIndex(Expression value);
+
+ /**
+ * 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(Expression)
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getInstantObsExpression_Condition()
+ * @model containment="true"
+ * @generated
+ */
+ Expression getCondition();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.marte.vsl.vSL.InstantObsExpression#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(Expression value);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;'"
+ * @generated
+ */
+ EObject getFilteredParentRule(EClass filter);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;'"
+ * @generated
+ */
+ Type getExpectedType();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;'"
+ * @generated
+ */
+ Element getContextElement();
+
+} // InstantObsExpression
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/InstantObsName.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/InstantObsName.java
new file mode 100644
index 00000000000..b29b703ca46
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/InstantObsName.java
@@ -0,0 +1,113 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.TimeObservation;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Instant Obs Name</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.InstantObsName#getPath <em>Path</em>}</li>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.InstantObsName#getInstantId <em>Instant Id</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getInstantObsName()
+ * @model
+ * @generated
+ */
+public interface InstantObsName extends EObject
+{
+ /**
+ * Returns the value of the '<em><b>Path</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Path</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>Path</em>' containment reference.
+ * @see #setPath(QualifiedName)
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getInstantObsName_Path()
+ * @model containment="true"
+ * @generated
+ */
+ QualifiedName getPath();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.marte.vsl.vSL.InstantObsName#getPath <em>Path</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Path</em>' containment reference.
+ * @see #getPath()
+ * @generated
+ */
+ void setPath(QualifiedName value);
+
+ /**
+ * Returns the value of the '<em><b>Instant Id</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Instant Id</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Instant Id</em>' reference.
+ * @see #setInstantId(TimeObservation)
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getInstantObsName_InstantId()
+ * @model
+ * @generated
+ */
+ TimeObservation getInstantId();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.marte.vsl.vSL.InstantObsName#getInstantId <em>Instant Id</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Instant Id</em>' reference.
+ * @see #getInstantId()
+ * @generated
+ */
+ void setInstantId(TimeObservation value);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;'"
+ * @generated
+ */
+ EObject getFilteredParentRule(EClass filter);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;'"
+ * @generated
+ */
+ Type getExpectedType();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;'"
+ * @generated
+ */
+ Element getContextElement();
+
+} // InstantObsName
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/IntegerLiteralRule.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/IntegerLiteralRule.java
new file mode 100644
index 00000000000..15c934d4090
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/IntegerLiteralRule.java
@@ -0,0 +1,53 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Integer Literal Rule</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getIntegerLiteralRule()
+ * @model
+ * @generated
+ */
+public interface IntegerLiteralRule extends NumberLiteralRule
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;'"
+ * @generated
+ */
+ EObject getFilteredParentRule(EClass filter);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;'"
+ * @generated
+ */
+ Type getExpectedType();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;'"
+ * @generated
+ */
+ Element getContextElement();
+
+} // IntegerLiteralRule
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/Interval.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/Interval.java
new file mode 100644
index 00000000000..ebef858483e
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/Interval.java
@@ -0,0 +1,166 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Interval</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.Interval#getIsLowerIncluded <em>Is Lower Included</em>}</li>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.Interval#getLower <em>Lower</em>}</li>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.Interval#getUpper <em>Upper</em>}</li>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.Interval#getIsUpperIncluded <em>Is Upper Included</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getInterval()
+ * @model
+ * @generated
+ */
+public interface Interval extends ValueSpecification
+{
+ /**
+ * Returns the value of the '<em><b>Is Lower Included</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Is Lower Included</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 Lower Included</em>' attribute.
+ * @see #setIsLowerIncluded(String)
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getInterval_IsLowerIncluded()
+ * @model
+ * @generated
+ */
+ String getIsLowerIncluded();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.marte.vsl.vSL.Interval#getIsLowerIncluded <em>Is Lower Included</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Is Lower Included</em>' attribute.
+ * @see #getIsLowerIncluded()
+ * @generated
+ */
+ void setIsLowerIncluded(String value);
+
+ /**
+ * Returns the value of the '<em><b>Lower</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Lower</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>Lower</em>' containment reference.
+ * @see #setLower(Expression)
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getInterval_Lower()
+ * @model containment="true"
+ * @generated
+ */
+ Expression getLower();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.marte.vsl.vSL.Interval#getLower <em>Lower</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Lower</em>' containment reference.
+ * @see #getLower()
+ * @generated
+ */
+ void setLower(Expression value);
+
+ /**
+ * Returns the value of the '<em><b>Upper</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Upper</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>Upper</em>' containment reference.
+ * @see #setUpper(Expression)
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getInterval_Upper()
+ * @model containment="true"
+ * @generated
+ */
+ Expression getUpper();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.marte.vsl.vSL.Interval#getUpper <em>Upper</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Upper</em>' containment reference.
+ * @see #getUpper()
+ * @generated
+ */
+ void setUpper(Expression value);
+
+ /**
+ * Returns the value of the '<em><b>Is Upper Included</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Is Upper Included</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 Upper Included</em>' attribute.
+ * @see #setIsUpperIncluded(String)
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getInterval_IsUpperIncluded()
+ * @model
+ * @generated
+ */
+ String getIsUpperIncluded();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.marte.vsl.vSL.Interval#getIsUpperIncluded <em>Is Upper Included</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Is Upper Included</em>' attribute.
+ * @see #getIsUpperIncluded()
+ * @generated
+ */
+ void setIsUpperIncluded(String value);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;'"
+ * @generated
+ */
+ EObject getFilteredParentRule(EClass filter);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;'"
+ * @generated
+ */
+ Type getExpectedType();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;'"
+ * @generated
+ */
+ Element getContextElement();
+
+} // Interval
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/JitterExp.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/JitterExp.java
new file mode 100644
index 00000000000..6a3dd10bc29
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/JitterExp.java
@@ -0,0 +1,112 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Jitter Exp</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.JitterExp#getFirstInstant <em>First Instant</em>}</li>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.JitterExp#getSecondInstant <em>Second Instant</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getJitterExp()
+ * @model
+ * @generated
+ */
+public interface JitterExp extends TimeExpression
+{
+ /**
+ * Returns the value of the '<em><b>First Instant</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>First Instant</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 Instant</em>' containment reference.
+ * @see #setFirstInstant(InstantObsExpression)
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getJitterExp_FirstInstant()
+ * @model containment="true"
+ * @generated
+ */
+ InstantObsExpression getFirstInstant();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.marte.vsl.vSL.JitterExp#getFirstInstant <em>First Instant</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>First Instant</em>' containment reference.
+ * @see #getFirstInstant()
+ * @generated
+ */
+ void setFirstInstant(InstantObsExpression value);
+
+ /**
+ * Returns the value of the '<em><b>Second Instant</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Second Instant</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>Second Instant</em>' containment reference.
+ * @see #setSecondInstant(InstantObsExpression)
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getJitterExp_SecondInstant()
+ * @model containment="true"
+ * @generated
+ */
+ InstantObsExpression getSecondInstant();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.marte.vsl.vSL.JitterExp#getSecondInstant <em>Second Instant</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Second Instant</em>' containment reference.
+ * @see #getSecondInstant()
+ * @generated
+ */
+ void setSecondInstant(InstantObsExpression value);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;'"
+ * @generated
+ */
+ EObject getFilteredParentRule(EClass filter);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;'"
+ * @generated
+ */
+ Type getExpectedType();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;'"
+ * @generated
+ */
+ Element getContextElement();
+
+} // JitterExp
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/ListOfValueNamePairs.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/ListOfValueNamePairs.java
new file mode 100644
index 00000000000..92507020346
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/ListOfValueNamePairs.java
@@ -0,0 +1,77 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>List Of Value Name Pairs</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.ListOfValueNamePairs#getValueNamePairs <em>Value Name Pairs</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getListOfValueNamePairs()
+ * @model
+ * @generated
+ */
+public interface ListOfValueNamePairs extends EObject
+{
+ /**
+ * Returns the value of the '<em><b>Value Name Pairs</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.papyrus.marte.vsl.vSL.ValueNamePair}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Value Name Pairs</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>Value Name Pairs</em>' containment reference list.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getListOfValueNamePairs_ValueNamePairs()
+ * @model containment="true"
+ * @generated
+ */
+ EList<ValueNamePair> getValueNamePairs();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;'"
+ * @generated
+ */
+ EObject getFilteredParentRule(EClass filter);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;'"
+ * @generated
+ */
+ Type getExpectedType();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;'"
+ * @generated
+ */
+ Element getContextElement();
+
+} // ListOfValueNamePairs
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/ListOfValues.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/ListOfValues.java
new file mode 100644
index 00000000000..c24046407f4
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/ListOfValues.java
@@ -0,0 +1,77 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>List Of Values</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.ListOfValues#getValues <em>Values</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getListOfValues()
+ * @model
+ * @generated
+ */
+public interface ListOfValues extends EObject
+{
+ /**
+ * Returns the value of the '<em><b>Values</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.papyrus.marte.vsl.vSL.Expression}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Values</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>Values</em>' containment reference list.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getListOfValues_Values()
+ * @model containment="true"
+ * @generated
+ */
+ EList<Expression> getValues();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;'"
+ * @generated
+ */
+ EObject getFilteredParentRule(EClass filter);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;'"
+ * @generated
+ */
+ Type getExpectedType();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;'"
+ * @generated
+ */
+ Element getContextElement();
+
+} // ListOfValues
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/Literal.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/Literal.java
new file mode 100644
index 00000000000..7187f658849
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/Literal.java
@@ -0,0 +1,85 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * <!-- 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.papyrus.marte.vsl.vSL.Literal#getValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getLiteral()
+ * @model
+ * @generated
+ */
+public interface Literal extends ValueSpecification
+{
+ /**
+ * 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.papyrus.marte.vsl.vSL.VSLPackage#getLiteral_Value()
+ * @model
+ * @generated
+ */
+ String getValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.marte.vsl.vSL.Literal#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);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;'"
+ * @generated
+ */
+ EObject getFilteredParentRule(EClass filter);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;'"
+ * @generated
+ */
+ Type getExpectedType();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;'"
+ * @generated
+ */
+ Element getContextElement();
+
+} // Literal
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/MultiplicativeExpression.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/MultiplicativeExpression.java
new file mode 100644
index 00000000000..ece3b229b46
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/MultiplicativeExpression.java
@@ -0,0 +1,94 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Multiplicative Expression</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.MultiplicativeExpression#getExp <em>Exp</em>}</li>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.MultiplicativeExpression#getOp <em>Op</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getMultiplicativeExpression()
+ * @model
+ * @generated
+ */
+public interface MultiplicativeExpression extends EObject
+{
+ /**
+ * Returns the value of the '<em><b>Exp</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.papyrus.marte.vsl.vSL.UnaryExpression}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Exp</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>Exp</em>' containment reference list.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getMultiplicativeExpression_Exp()
+ * @model containment="true"
+ * @generated
+ */
+ EList<UnaryExpression> getExp();
+
+ /**
+ * Returns the value of the '<em><b>Op</b></em>' attribute list.
+ * The list contents are of type {@link java.lang.String}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Op</em>' attribute list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Op</em>' attribute list.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getMultiplicativeExpression_Op()
+ * @model unique="false"
+ * @generated
+ */
+ EList<String> getOp();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;'"
+ * @generated
+ */
+ EObject getFilteredParentRule(EClass filter);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;'"
+ * @generated
+ */
+ Type getExpectedType();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;'"
+ * @generated
+ */
+ Element getContextElement();
+
+} // MultiplicativeExpression
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/NameOrChoiceOrBehaviorCall.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/NameOrChoiceOrBehaviorCall.java
new file mode 100644
index 00000000000..2951fdb92a6
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/NameOrChoiceOrBehaviorCall.java
@@ -0,0 +1,140 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Name Or Choice Or Behavior Call</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.NameOrChoiceOrBehaviorCall#getPath <em>Path</em>}</li>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.NameOrChoiceOrBehaviorCall#getId <em>Id</em>}</li>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.NameOrChoiceOrBehaviorCall#getArguments <em>Arguments</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getNameOrChoiceOrBehaviorCall()
+ * @model
+ * @generated
+ */
+public interface NameOrChoiceOrBehaviorCall extends ValueSpecification
+{
+ /**
+ * Returns the value of the '<em><b>Path</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Path</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>Path</em>' containment reference.
+ * @see #setPath(QualifiedName)
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getNameOrChoiceOrBehaviorCall_Path()
+ * @model containment="true"
+ * @generated
+ */
+ QualifiedName getPath();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.marte.vsl.vSL.NameOrChoiceOrBehaviorCall#getPath <em>Path</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Path</em>' containment reference.
+ * @see #getPath()
+ * @generated
+ */
+ void setPath(QualifiedName value);
+
+ /**
+ * Returns the value of the '<em><b>Id</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Id</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Id</em>' reference.
+ * @see #setId(NamedElement)
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getNameOrChoiceOrBehaviorCall_Id()
+ * @model
+ * @generated
+ */
+ NamedElement getId();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.marte.vsl.vSL.NameOrChoiceOrBehaviorCall#getId <em>Id</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Id</em>' reference.
+ * @see #getId()
+ * @generated
+ */
+ void setId(NamedElement value);
+
+ /**
+ * Returns the value of the '<em><b>Arguments</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Arguments</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>Arguments</em>' containment reference.
+ * @see #setArguments(ListOfValues)
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getNameOrChoiceOrBehaviorCall_Arguments()
+ * @model containment="true"
+ * @generated
+ */
+ ListOfValues getArguments();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.marte.vsl.vSL.NameOrChoiceOrBehaviorCall#getArguments <em>Arguments</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Arguments</em>' containment reference.
+ * @see #getArguments()
+ * @generated
+ */
+ void setArguments(ListOfValues value);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;'"
+ * @generated
+ */
+ EObject getFilteredParentRule(EClass filter);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;'"
+ * @generated
+ */
+ Type getExpectedType();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;'"
+ * @generated
+ */
+ Element getContextElement();
+
+} // NameOrChoiceOrBehaviorCall
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/NullLiteralRule.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/NullLiteralRule.java
new file mode 100644
index 00000000000..7cc42e3769d
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/NullLiteralRule.java
@@ -0,0 +1,53 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Null Literal Rule</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getNullLiteralRule()
+ * @model
+ * @generated
+ */
+public interface NullLiteralRule extends Literal
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;'"
+ * @generated
+ */
+ EObject getFilteredParentRule(EClass filter);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;'"
+ * @generated
+ */
+ Type getExpectedType();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;'"
+ * @generated
+ */
+ Element getContextElement();
+
+} // NullLiteralRule
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/NumberLiteralRule.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/NumberLiteralRule.java
new file mode 100644
index 00000000000..ed6dc45f9e7
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/NumberLiteralRule.java
@@ -0,0 +1,53 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Number Literal Rule</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getNumberLiteralRule()
+ * @model
+ * @generated
+ */
+public interface NumberLiteralRule extends Literal
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;'"
+ * @generated
+ */
+ EObject getFilteredParentRule(EClass filter);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;'"
+ * @generated
+ */
+ Type getExpectedType();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;'"
+ * @generated
+ */
+ Element getContextElement();
+
+} // NumberLiteralRule
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/OperationCallExpression.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/OperationCallExpression.java
new file mode 100644
index 00000000000..a72ffcd604b
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/OperationCallExpression.java
@@ -0,0 +1,113 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Operation;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Operation Call Expression</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.OperationCallExpression#getOperation <em>Operation</em>}</li>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.OperationCallExpression#getArguments <em>Arguments</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getOperationCallExpression()
+ * @model
+ * @generated
+ */
+public interface OperationCallExpression extends SuffixExpression
+{
+ /**
+ * Returns the value of the '<em><b>Operation</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Operation</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Operation</em>' reference.
+ * @see #setOperation(Operation)
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getOperationCallExpression_Operation()
+ * @model
+ * @generated
+ */
+ Operation getOperation();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.marte.vsl.vSL.OperationCallExpression#getOperation <em>Operation</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Operation</em>' reference.
+ * @see #getOperation()
+ * @generated
+ */
+ void setOperation(Operation value);
+
+ /**
+ * Returns the value of the '<em><b>Arguments</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Arguments</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>Arguments</em>' containment reference.
+ * @see #setArguments(ListOfValues)
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getOperationCallExpression_Arguments()
+ * @model containment="true"
+ * @generated
+ */
+ ListOfValues getArguments();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.marte.vsl.vSL.OperationCallExpression#getArguments <em>Arguments</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Arguments</em>' containment reference.
+ * @see #getArguments()
+ * @generated
+ */
+ void setArguments(ListOfValues value);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;'"
+ * @generated
+ */
+ EObject getFilteredParentRule(EClass filter);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;'"
+ * @generated
+ */
+ Type getExpectedType();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;'"
+ * @generated
+ */
+ Element getContextElement();
+
+} // OperationCallExpression
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/PrimaryExpression.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/PrimaryExpression.java
new file mode 100644
index 00000000000..db8c7095cdc
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/PrimaryExpression.java
@@ -0,0 +1,112 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Primary Expression</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.PrimaryExpression#getPrefix <em>Prefix</em>}</li>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.PrimaryExpression#getSuffix <em>Suffix</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getPrimaryExpression()
+ * @model
+ * @generated
+ */
+public interface PrimaryExpression extends EObject
+{
+ /**
+ * Returns the value of the '<em><b>Prefix</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Prefix</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>Prefix</em>' containment reference.
+ * @see #setPrefix(ValueSpecification)
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getPrimaryExpression_Prefix()
+ * @model containment="true"
+ * @generated
+ */
+ ValueSpecification getPrefix();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.marte.vsl.vSL.PrimaryExpression#getPrefix <em>Prefix</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Prefix</em>' containment reference.
+ * @see #getPrefix()
+ * @generated
+ */
+ void setPrefix(ValueSpecification value);
+
+ /**
+ * Returns the value of the '<em><b>Suffix</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Suffix</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>Suffix</em>' containment reference.
+ * @see #setSuffix(SuffixExpression)
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getPrimaryExpression_Suffix()
+ * @model containment="true"
+ * @generated
+ */
+ SuffixExpression getSuffix();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.marte.vsl.vSL.PrimaryExpression#getSuffix <em>Suffix</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Suffix</em>' containment reference.
+ * @see #getSuffix()
+ * @generated
+ */
+ void setSuffix(SuffixExpression value);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;'"
+ * @generated
+ */
+ EObject getFilteredParentRule(EClass filter);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;'"
+ * @generated
+ */
+ Type getExpectedType();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;'"
+ * @generated
+ */
+ Element getContextElement();
+
+} // PrimaryExpression
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/PropertyCallExpression.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/PropertyCallExpression.java
new file mode 100644
index 00000000000..7b1290b2dc0
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/PropertyCallExpression.java
@@ -0,0 +1,86 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Property Call Expression</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.PropertyCallExpression#getProperty <em>Property</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getPropertyCallExpression()
+ * @model
+ * @generated
+ */
+public interface PropertyCallExpression extends SuffixExpression
+{
+ /**
+ * Returns the value of the '<em><b>Property</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Property</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Property</em>' reference.
+ * @see #setProperty(Property)
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getPropertyCallExpression_Property()
+ * @model
+ * @generated
+ */
+ Property getProperty();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.marte.vsl.vSL.PropertyCallExpression#getProperty <em>Property</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Property</em>' reference.
+ * @see #getProperty()
+ * @generated
+ */
+ void setProperty(Property value);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;'"
+ * @generated
+ */
+ EObject getFilteredParentRule(EClass filter);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;'"
+ * @generated
+ */
+ Type getExpectedType();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;'"
+ * @generated
+ */
+ Element getContextElement();
+
+} // PropertyCallExpression
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/QualifiedName.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/QualifiedName.java
new file mode 100644
index 00000000000..149d248f5c9
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/QualifiedName.java
@@ -0,0 +1,113 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Namespace;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Qualified Name</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.QualifiedName#getPath <em>Path</em>}</li>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.QualifiedName#getRemaining <em>Remaining</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getQualifiedName()
+ * @model
+ * @generated
+ */
+public interface QualifiedName extends EObject
+{
+ /**
+ * Returns the value of the '<em><b>Path</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Path</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Path</em>' reference.
+ * @see #setPath(Namespace)
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getQualifiedName_Path()
+ * @model
+ * @generated
+ */
+ Namespace getPath();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.marte.vsl.vSL.QualifiedName#getPath <em>Path</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Path</em>' reference.
+ * @see #getPath()
+ * @generated
+ */
+ void setPath(Namespace value);
+
+ /**
+ * Returns the value of the '<em><b>Remaining</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Remaining</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>Remaining</em>' containment reference.
+ * @see #setRemaining(QualifiedName)
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getQualifiedName_Remaining()
+ * @model containment="true"
+ * @generated
+ */
+ QualifiedName getRemaining();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.marte.vsl.vSL.QualifiedName#getRemaining <em>Remaining</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Remaining</em>' containment reference.
+ * @see #getRemaining()
+ * @generated
+ */
+ void setRemaining(QualifiedName value);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;'"
+ * @generated
+ */
+ EObject getFilteredParentRule(EClass filter);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;'"
+ * @generated
+ */
+ Type getExpectedType();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;'"
+ * @generated
+ */
+ Element getContextElement();
+
+} // QualifiedName
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/RealLiteralRule.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/RealLiteralRule.java
new file mode 100644
index 00000000000..b481260763d
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/RealLiteralRule.java
@@ -0,0 +1,53 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Real Literal Rule</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getRealLiteralRule()
+ * @model
+ * @generated
+ */
+public interface RealLiteralRule extends NumberLiteralRule
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;'"
+ * @generated
+ */
+ EObject getFilteredParentRule(EClass filter);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;'"
+ * @generated
+ */
+ Type getExpectedType();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;'"
+ * @generated
+ */
+ Element getContextElement();
+
+} // RealLiteralRule
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/RelationalExpression.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/RelationalExpression.java
new file mode 100644
index 00000000000..ffc922b8d73
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/RelationalExpression.java
@@ -0,0 +1,94 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Relational Expression</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.RelationalExpression#getExp <em>Exp</em>}</li>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.RelationalExpression#getOp <em>Op</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getRelationalExpression()
+ * @model
+ * @generated
+ */
+public interface RelationalExpression extends EObject
+{
+ /**
+ * Returns the value of the '<em><b>Exp</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.papyrus.marte.vsl.vSL.ConditionalExpression}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Exp</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>Exp</em>' containment reference list.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getRelationalExpression_Exp()
+ * @model containment="true"
+ * @generated
+ */
+ EList<ConditionalExpression> getExp();
+
+ /**
+ * Returns the value of the '<em><b>Op</b></em>' attribute list.
+ * The list contents are of type {@link java.lang.String}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Op</em>' attribute list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Op</em>' attribute list.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getRelationalExpression_Op()
+ * @model unique="false"
+ * @generated
+ */
+ EList<String> getOp();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;'"
+ * @generated
+ */
+ EObject getFilteredParentRule(EClass filter);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;'"
+ * @generated
+ */
+ Type getExpectedType();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;'"
+ * @generated
+ */
+ Element getContextElement();
+
+} // RelationalExpression
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/StringLiteralRule.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/StringLiteralRule.java
new file mode 100644
index 00000000000..060274a0930
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/StringLiteralRule.java
@@ -0,0 +1,53 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>String Literal Rule</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getStringLiteralRule()
+ * @model
+ * @generated
+ */
+public interface StringLiteralRule extends Literal
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;'"
+ * @generated
+ */
+ EObject getFilteredParentRule(EClass filter);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;'"
+ * @generated
+ */
+ Type getExpectedType();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;'"
+ * @generated
+ */
+ Element getContextElement();
+
+} // StringLiteralRule
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/SuffixExpression.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/SuffixExpression.java
new file mode 100644
index 00000000000..b6628ca4d01
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/SuffixExpression.java
@@ -0,0 +1,85 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Suffix Expression</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.SuffixExpression#getSuffix <em>Suffix</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getSuffixExpression()
+ * @model
+ * @generated
+ */
+public interface SuffixExpression extends EObject
+{
+ /**
+ * Returns the value of the '<em><b>Suffix</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Suffix</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>Suffix</em>' containment reference.
+ * @see #setSuffix(SuffixExpression)
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getSuffixExpression_Suffix()
+ * @model containment="true"
+ * @generated
+ */
+ SuffixExpression getSuffix();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.marte.vsl.vSL.SuffixExpression#getSuffix <em>Suffix</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Suffix</em>' containment reference.
+ * @see #getSuffix()
+ * @generated
+ */
+ void setSuffix(SuffixExpression value);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;'"
+ * @generated
+ */
+ EObject getFilteredParentRule(EClass filter);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;'"
+ * @generated
+ */
+ Type getExpectedType();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;'"
+ * @generated
+ */
+ Element getContextElement();
+
+} // SuffixExpression
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/TimeExpression.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/TimeExpression.java
new file mode 100644
index 00000000000..f405371c076
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/TimeExpression.java
@@ -0,0 +1,53 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Time Expression</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getTimeExpression()
+ * @model
+ * @generated
+ */
+public interface TimeExpression extends ValueSpecification
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;'"
+ * @generated
+ */
+ EObject getFilteredParentRule(EClass filter);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;'"
+ * @generated
+ */
+ Type getExpectedType();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;'"
+ * @generated
+ */
+ Element getContextElement();
+
+} // TimeExpression
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/Tuple.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/Tuple.java
new file mode 100644
index 00000000000..40b2067439b
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/Tuple.java
@@ -0,0 +1,85 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Tuple</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.Tuple#getListOfValueNamePairs <em>List Of Value Name Pairs</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getTuple()
+ * @model
+ * @generated
+ */
+public interface Tuple extends ValueSpecification
+{
+ /**
+ * Returns the value of the '<em><b>List Of Value Name Pairs</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>List Of Value Name Pairs</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>List Of Value Name Pairs</em>' containment reference.
+ * @see #setListOfValueNamePairs(ListOfValueNamePairs)
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getTuple_ListOfValueNamePairs()
+ * @model containment="true"
+ * @generated
+ */
+ ListOfValueNamePairs getListOfValueNamePairs();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.marte.vsl.vSL.Tuple#getListOfValueNamePairs <em>List Of Value Name Pairs</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>List Of Value Name Pairs</em>' containment reference.
+ * @see #getListOfValueNamePairs()
+ * @generated
+ */
+ void setListOfValueNamePairs(ListOfValueNamePairs value);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;'"
+ * @generated
+ */
+ EObject getFilteredParentRule(EClass filter);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;'"
+ * @generated
+ */
+ Type getExpectedType();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;'"
+ * @generated
+ */
+ Element getContextElement();
+
+} // Tuple
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/UnaryExpression.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/UnaryExpression.java
new file mode 100644
index 00000000000..6694dfce686
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/UnaryExpression.java
@@ -0,0 +1,139 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Unary Expression</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.UnaryExpression#getOp <em>Op</em>}</li>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.UnaryExpression#getUnary <em>Unary</em>}</li>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.UnaryExpression#getExp <em>Exp</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getUnaryExpression()
+ * @model
+ * @generated
+ */
+public interface UnaryExpression extends EObject
+{
+ /**
+ * Returns the value of the '<em><b>Op</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Op</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Op</em>' attribute.
+ * @see #setOp(String)
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getUnaryExpression_Op()
+ * @model
+ * @generated
+ */
+ String getOp();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.marte.vsl.vSL.UnaryExpression#getOp <em>Op</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Op</em>' attribute.
+ * @see #getOp()
+ * @generated
+ */
+ void setOp(String value);
+
+ /**
+ * Returns the value of the '<em><b>Unary</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Unary</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>Unary</em>' containment reference.
+ * @see #setUnary(UnaryExpression)
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getUnaryExpression_Unary()
+ * @model containment="true"
+ * @generated
+ */
+ UnaryExpression getUnary();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.marte.vsl.vSL.UnaryExpression#getUnary <em>Unary</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Unary</em>' containment reference.
+ * @see #getUnary()
+ * @generated
+ */
+ void setUnary(UnaryExpression value);
+
+ /**
+ * Returns the value of the '<em><b>Exp</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Exp</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>Exp</em>' containment reference.
+ * @see #setExp(PrimaryExpression)
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getUnaryExpression_Exp()
+ * @model containment="true"
+ * @generated
+ */
+ PrimaryExpression getExp();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.marte.vsl.vSL.UnaryExpression#getExp <em>Exp</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Exp</em>' containment reference.
+ * @see #getExp()
+ * @generated
+ */
+ void setExp(PrimaryExpression value);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;'"
+ * @generated
+ */
+ EObject getFilteredParentRule(EClass filter);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;'"
+ * @generated
+ */
+ Type getExpectedType();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;'"
+ * @generated
+ */
+ Element getContextElement();
+
+} // UnaryExpression
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/UnlimitedLiteralRule.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/UnlimitedLiteralRule.java
new file mode 100644
index 00000000000..7ddb66fca37
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/UnlimitedLiteralRule.java
@@ -0,0 +1,53 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Unlimited Literal Rule</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getUnlimitedLiteralRule()
+ * @model
+ * @generated
+ */
+public interface UnlimitedLiteralRule extends NumberLiteralRule
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;'"
+ * @generated
+ */
+ EObject getFilteredParentRule(EClass filter);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;'"
+ * @generated
+ */
+ Type getExpectedType();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;'"
+ * @generated
+ */
+ Element getContextElement();
+
+} // UnlimitedLiteralRule
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/VSLFactory.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/VSLFactory.java
new file mode 100644
index 00000000000..8c8b60a9293
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/VSLFactory.java
@@ -0,0 +1,389 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL;
+
+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.papyrus.marte.vsl.vSL.VSLPackage
+ * @generated
+ */
+public interface VSLFactory extends EFactory
+{
+ /**
+ * The singleton instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ VSLFactory eINSTANCE = org.eclipse.papyrus.marte.vsl.vSL.impl.VSLFactoryImpl.init();
+
+ /**
+ * Returns a new object of class '<em>Expression</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Expression</em>'.
+ * @generated
+ */
+ Expression createExpression();
+
+ /**
+ * Returns a new object of class '<em>And Or Xor Expression</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>And Or Xor Expression</em>'.
+ * @generated
+ */
+ AndOrXorExpression createAndOrXorExpression();
+
+ /**
+ * Returns a new object of class '<em>Equality Expression</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Equality Expression</em>'.
+ * @generated
+ */
+ EqualityExpression createEqualityExpression();
+
+ /**
+ * Returns a new object of class '<em>Relational Expression</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Relational Expression</em>'.
+ * @generated
+ */
+ RelationalExpression createRelationalExpression();
+
+ /**
+ * Returns a new object of class '<em>Conditional Expression</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Conditional Expression</em>'.
+ * @generated
+ */
+ ConditionalExpression createConditionalExpression();
+
+ /**
+ * Returns a new object of class '<em>Additive Expression</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Additive Expression</em>'.
+ * @generated
+ */
+ AdditiveExpression createAdditiveExpression();
+
+ /**
+ * Returns a new object of class '<em>Multiplicative Expression</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Multiplicative Expression</em>'.
+ * @generated
+ */
+ MultiplicativeExpression createMultiplicativeExpression();
+
+ /**
+ * Returns a new object of class '<em>Unary Expression</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Unary Expression</em>'.
+ * @generated
+ */
+ UnaryExpression createUnaryExpression();
+
+ /**
+ * Returns a new object of class '<em>Primary Expression</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Primary Expression</em>'.
+ * @generated
+ */
+ PrimaryExpression createPrimaryExpression();
+
+ /**
+ * Returns a new object of class '<em>Value Specification</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Value Specification</em>'.
+ * @generated
+ */
+ ValueSpecification createValueSpecification();
+
+ /**
+ * Returns a new object of class '<em>Suffix Expression</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Suffix Expression</em>'.
+ * @generated
+ */
+ SuffixExpression createSuffixExpression();
+
+ /**
+ * Returns a new object of class '<em>Property Call Expression</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Property Call Expression</em>'.
+ * @generated
+ */
+ PropertyCallExpression createPropertyCallExpression();
+
+ /**
+ * Returns a new object of class '<em>Operation Call Expression</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Operation Call Expression</em>'.
+ * @generated
+ */
+ OperationCallExpression createOperationCallExpression();
+
+ /**
+ * Returns a new object of class '<em>Literal</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Literal</em>'.
+ * @generated
+ */
+ Literal createLiteral();
+
+ /**
+ * Returns a new object of class '<em>Name Or Choice Or Behavior Call</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Name Or Choice Or Behavior Call</em>'.
+ * @generated
+ */
+ NameOrChoiceOrBehaviorCall createNameOrChoiceOrBehaviorCall();
+
+ /**
+ * Returns a new object of class '<em>Qualified Name</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Qualified Name</em>'.
+ * @generated
+ */
+ QualifiedName createQualifiedName();
+
+ /**
+ * Returns a new object of class '<em>Interval</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Interval</em>'.
+ * @generated
+ */
+ Interval createInterval();
+
+ /**
+ * Returns a new object of class '<em>Collection Or Tuple</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Collection Or Tuple</em>'.
+ * @generated
+ */
+ CollectionOrTuple createCollectionOrTuple();
+
+ /**
+ * Returns a new object of class '<em>Tuple</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Tuple</em>'.
+ * @generated
+ */
+ Tuple createTuple();
+
+ /**
+ * Returns a new object of class '<em>List Of Values</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>List Of Values</em>'.
+ * @generated
+ */
+ ListOfValues createListOfValues();
+
+ /**
+ * Returns a new object of class '<em>List Of Value Name Pairs</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>List Of Value Name Pairs</em>'.
+ * @generated
+ */
+ ListOfValueNamePairs createListOfValueNamePairs();
+
+ /**
+ * Returns a new object of class '<em>Value Name Pair</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Value Name Pair</em>'.
+ * @generated
+ */
+ ValueNamePair createValueNamePair();
+
+ /**
+ * Returns a new object of class '<em>Time Expression</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Time Expression</em>'.
+ * @generated
+ */
+ TimeExpression createTimeExpression();
+
+ /**
+ * Returns a new object of class '<em>Instant Obs Expression</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Instant Obs Expression</em>'.
+ * @generated
+ */
+ InstantObsExpression createInstantObsExpression();
+
+ /**
+ * Returns a new object of class '<em>Instant Obs Name</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Instant Obs Name</em>'.
+ * @generated
+ */
+ InstantObsName createInstantObsName();
+
+ /**
+ * Returns a new object of class '<em>Duration Obs Expression</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Duration Obs Expression</em>'.
+ * @generated
+ */
+ DurationObsExpression createDurationObsExpression();
+
+ /**
+ * Returns a new object of class '<em>Duration Obs Name</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Duration Obs Name</em>'.
+ * @generated
+ */
+ DurationObsName createDurationObsName();
+
+ /**
+ * Returns a new object of class '<em>Jitter Exp</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Jitter Exp</em>'.
+ * @generated
+ */
+ JitterExp createJitterExp();
+
+ /**
+ * Returns a new object of class '<em>Variable Declaration</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Variable Declaration</em>'.
+ * @generated
+ */
+ VariableDeclaration createVariableDeclaration();
+
+ /**
+ * Returns a new object of class '<em>Data Type Name</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Data Type Name</em>'.
+ * @generated
+ */
+ DataTypeName createDataTypeName();
+
+ /**
+ * Returns a new object of class '<em>Number Literal Rule</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Number Literal Rule</em>'.
+ * @generated
+ */
+ NumberLiteralRule createNumberLiteralRule();
+
+ /**
+ * Returns a new object of class '<em>Integer Literal Rule</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Integer Literal Rule</em>'.
+ * @generated
+ */
+ IntegerLiteralRule createIntegerLiteralRule();
+
+ /**
+ * Returns a new object of class '<em>Unlimited Literal Rule</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Unlimited Literal Rule</em>'.
+ * @generated
+ */
+ UnlimitedLiteralRule createUnlimitedLiteralRule();
+
+ /**
+ * Returns a new object of class '<em>Real Literal Rule</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Real Literal Rule</em>'.
+ * @generated
+ */
+ RealLiteralRule createRealLiteralRule();
+
+ /**
+ * Returns a new object of class '<em>Date Time Literal Rule</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Date Time Literal Rule</em>'.
+ * @generated
+ */
+ DateTimeLiteralRule createDateTimeLiteralRule();
+
+ /**
+ * Returns a new object of class '<em>Boolean Literal Rule</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Boolean Literal Rule</em>'.
+ * @generated
+ */
+ BooleanLiteralRule createBooleanLiteralRule();
+
+ /**
+ * Returns a new object of class '<em>Null Literal Rule</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Null Literal Rule</em>'.
+ * @generated
+ */
+ NullLiteralRule createNullLiteralRule();
+
+ /**
+ * Returns a new object of class '<em>Default Literal Rule</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Default Literal Rule</em>'.
+ * @generated
+ */
+ DefaultLiteralRule createDefaultLiteralRule();
+
+ /**
+ * Returns a new object of class '<em>String Literal Rule</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>String Literal Rule</em>'.
+ * @generated
+ */
+ StringLiteralRule createStringLiteralRule();
+
+ /**
+ * Returns the package supported by this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the package supported by this factory.
+ * @generated
+ */
+ VSLPackage getVSLPackage();
+
+} //VSLFactory
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/VSLPackage.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/VSLPackage.java
new file mode 100644
index 00000000000..9559799fe33
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/VSLPackage.java
@@ -0,0 +1,3277 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL;
+
+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.papyrus.marte.vsl.vSL.VSLFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface VSLPackage extends EPackage
+{
+ /**
+ * The package name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNAME = "vSL";
+
+ /**
+ * The package namespace URI.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_URI = "http://www.eclipse.org/papyrus/marte/vsl/VSL";
+
+ /**
+ * The package namespace name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_PREFIX = "vSL";
+
+ /**
+ * The singleton instance of the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ VSLPackage eINSTANCE = org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl.init();
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.marte.vsl.vSL.impl.ValueSpecificationImpl <em>Value Specification</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.ValueSpecificationImpl
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl#getValueSpecification()
+ * @generated
+ */
+ int VALUE_SPECIFICATION = 9;
+
+ /**
+ * The number of structural features of the '<em>Value Specification</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int VALUE_SPECIFICATION_FEATURE_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.marte.vsl.vSL.impl.ExpressionImpl <em>Expression</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.ExpressionImpl
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl#getExpression()
+ * @generated
+ */
+ int EXPRESSION = 0;
+
+ /**
+ * The feature id for the '<em><b>Exp</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXPRESSION__EXP = VALUE_SPECIFICATION_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Expression</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXPRESSION_FEATURE_COUNT = VALUE_SPECIFICATION_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.marte.vsl.vSL.impl.AndOrXorExpressionImpl <em>And Or Xor Expression</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.AndOrXorExpressionImpl
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl#getAndOrXorExpression()
+ * @generated
+ */
+ int AND_OR_XOR_EXPRESSION = 1;
+
+ /**
+ * The feature id for the '<em><b>Exp</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int AND_OR_XOR_EXPRESSION__EXP = 0;
+
+ /**
+ * The feature id for the '<em><b>Op</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int AND_OR_XOR_EXPRESSION__OP = 1;
+
+ /**
+ * The number of structural features of the '<em>And Or Xor Expression</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int AND_OR_XOR_EXPRESSION_FEATURE_COUNT = 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.marte.vsl.vSL.impl.EqualityExpressionImpl <em>Equality Expression</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.EqualityExpressionImpl
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl#getEqualityExpression()
+ * @generated
+ */
+ int EQUALITY_EXPRESSION = 2;
+
+ /**
+ * The feature id for the '<em><b>Exp</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EQUALITY_EXPRESSION__EXP = 0;
+
+ /**
+ * The feature id for the '<em><b>Op</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EQUALITY_EXPRESSION__OP = 1;
+
+ /**
+ * The number of structural features of the '<em>Equality Expression</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EQUALITY_EXPRESSION_FEATURE_COUNT = 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.marte.vsl.vSL.impl.RelationalExpressionImpl <em>Relational Expression</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.RelationalExpressionImpl
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl#getRelationalExpression()
+ * @generated
+ */
+ int RELATIONAL_EXPRESSION = 3;
+
+ /**
+ * The feature id for the '<em><b>Exp</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int RELATIONAL_EXPRESSION__EXP = 0;
+
+ /**
+ * The feature id for the '<em><b>Op</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int RELATIONAL_EXPRESSION__OP = 1;
+
+ /**
+ * The number of structural features of the '<em>Relational Expression</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int RELATIONAL_EXPRESSION_FEATURE_COUNT = 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.marte.vsl.vSL.impl.ConditionalExpressionImpl <em>Conditional Expression</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.ConditionalExpressionImpl
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl#getConditionalExpression()
+ * @generated
+ */
+ int CONDITIONAL_EXPRESSION = 4;
+
+ /**
+ * The feature id for the '<em><b>Exp</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CONDITIONAL_EXPRESSION__EXP = 0;
+
+ /**
+ * The feature id for the '<em><b>Op</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CONDITIONAL_EXPRESSION__OP = 1;
+
+ /**
+ * The number of structural features of the '<em>Conditional Expression</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CONDITIONAL_EXPRESSION_FEATURE_COUNT = 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.marte.vsl.vSL.impl.AdditiveExpressionImpl <em>Additive Expression</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.AdditiveExpressionImpl
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl#getAdditiveExpression()
+ * @generated
+ */
+ int ADDITIVE_EXPRESSION = 5;
+
+ /**
+ * The feature id for the '<em><b>Exp</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ADDITIVE_EXPRESSION__EXP = 0;
+
+ /**
+ * The feature id for the '<em><b>Op</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ADDITIVE_EXPRESSION__OP = 1;
+
+ /**
+ * The number of structural features of the '<em>Additive Expression</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ADDITIVE_EXPRESSION_FEATURE_COUNT = 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.marte.vsl.vSL.impl.MultiplicativeExpressionImpl <em>Multiplicative Expression</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.MultiplicativeExpressionImpl
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl#getMultiplicativeExpression()
+ * @generated
+ */
+ int MULTIPLICATIVE_EXPRESSION = 6;
+
+ /**
+ * The feature id for the '<em><b>Exp</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int MULTIPLICATIVE_EXPRESSION__EXP = 0;
+
+ /**
+ * The feature id for the '<em><b>Op</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int MULTIPLICATIVE_EXPRESSION__OP = 1;
+
+ /**
+ * The number of structural features of the '<em>Multiplicative Expression</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int MULTIPLICATIVE_EXPRESSION_FEATURE_COUNT = 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.marte.vsl.vSL.impl.UnaryExpressionImpl <em>Unary Expression</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.UnaryExpressionImpl
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl#getUnaryExpression()
+ * @generated
+ */
+ int UNARY_EXPRESSION = 7;
+
+ /**
+ * The feature id for the '<em><b>Op</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int UNARY_EXPRESSION__OP = 0;
+
+ /**
+ * The feature id for the '<em><b>Unary</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int UNARY_EXPRESSION__UNARY = 1;
+
+ /**
+ * The feature id for the '<em><b>Exp</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int UNARY_EXPRESSION__EXP = 2;
+
+ /**
+ * The number of structural features of the '<em>Unary Expression</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int UNARY_EXPRESSION_FEATURE_COUNT = 3;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.marte.vsl.vSL.impl.PrimaryExpressionImpl <em>Primary Expression</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.PrimaryExpressionImpl
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl#getPrimaryExpression()
+ * @generated
+ */
+ int PRIMARY_EXPRESSION = 8;
+
+ /**
+ * The feature id for the '<em><b>Prefix</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PRIMARY_EXPRESSION__PREFIX = 0;
+
+ /**
+ * The feature id for the '<em><b>Suffix</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PRIMARY_EXPRESSION__SUFFIX = 1;
+
+ /**
+ * The number of structural features of the '<em>Primary Expression</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PRIMARY_EXPRESSION_FEATURE_COUNT = 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.marte.vsl.vSL.impl.SuffixExpressionImpl <em>Suffix Expression</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.SuffixExpressionImpl
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl#getSuffixExpression()
+ * @generated
+ */
+ int SUFFIX_EXPRESSION = 10;
+
+ /**
+ * The feature id for the '<em><b>Suffix</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SUFFIX_EXPRESSION__SUFFIX = 0;
+
+ /**
+ * The number of structural features of the '<em>Suffix Expression</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SUFFIX_EXPRESSION_FEATURE_COUNT = 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.marte.vsl.vSL.impl.PropertyCallExpressionImpl <em>Property Call Expression</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.PropertyCallExpressionImpl
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl#getPropertyCallExpression()
+ * @generated
+ */
+ int PROPERTY_CALL_EXPRESSION = 11;
+
+ /**
+ * The feature id for the '<em><b>Suffix</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PROPERTY_CALL_EXPRESSION__SUFFIX = SUFFIX_EXPRESSION__SUFFIX;
+
+ /**
+ * The feature id for the '<em><b>Property</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PROPERTY_CALL_EXPRESSION__PROPERTY = SUFFIX_EXPRESSION_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Property Call Expression</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PROPERTY_CALL_EXPRESSION_FEATURE_COUNT = SUFFIX_EXPRESSION_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.marte.vsl.vSL.impl.OperationCallExpressionImpl <em>Operation Call Expression</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.OperationCallExpressionImpl
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl#getOperationCallExpression()
+ * @generated
+ */
+ int OPERATION_CALL_EXPRESSION = 12;
+
+ /**
+ * The feature id for the '<em><b>Suffix</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int OPERATION_CALL_EXPRESSION__SUFFIX = SUFFIX_EXPRESSION__SUFFIX;
+
+ /**
+ * The feature id for the '<em><b>Operation</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int OPERATION_CALL_EXPRESSION__OPERATION = SUFFIX_EXPRESSION_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Arguments</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int OPERATION_CALL_EXPRESSION__ARGUMENTS = SUFFIX_EXPRESSION_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Operation Call Expression</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int OPERATION_CALL_EXPRESSION_FEATURE_COUNT = SUFFIX_EXPRESSION_FEATURE_COUNT + 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.marte.vsl.vSL.impl.LiteralImpl <em>Literal</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.LiteralImpl
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl#getLiteral()
+ * @generated
+ */
+ int LITERAL = 13;
+
+ /**
+ * The feature id for the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LITERAL__VALUE = VALUE_SPECIFICATION_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 = VALUE_SPECIFICATION_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.marte.vsl.vSL.impl.NameOrChoiceOrBehaviorCallImpl <em>Name Or Choice Or Behavior Call</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.NameOrChoiceOrBehaviorCallImpl
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl#getNameOrChoiceOrBehaviorCall()
+ * @generated
+ */
+ int NAME_OR_CHOICE_OR_BEHAVIOR_CALL = 14;
+
+ /**
+ * The feature id for the '<em><b>Path</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NAME_OR_CHOICE_OR_BEHAVIOR_CALL__PATH = VALUE_SPECIFICATION_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Id</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NAME_OR_CHOICE_OR_BEHAVIOR_CALL__ID = VALUE_SPECIFICATION_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Arguments</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NAME_OR_CHOICE_OR_BEHAVIOR_CALL__ARGUMENTS = VALUE_SPECIFICATION_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>Name Or Choice Or Behavior Call</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NAME_OR_CHOICE_OR_BEHAVIOR_CALL_FEATURE_COUNT = VALUE_SPECIFICATION_FEATURE_COUNT + 3;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.marte.vsl.vSL.impl.QualifiedNameImpl <em>Qualified Name</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.QualifiedNameImpl
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl#getQualifiedName()
+ * @generated
+ */
+ int QUALIFIED_NAME = 15;
+
+ /**
+ * The feature id for the '<em><b>Path</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int QUALIFIED_NAME__PATH = 0;
+
+ /**
+ * The feature id for the '<em><b>Remaining</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int QUALIFIED_NAME__REMAINING = 1;
+
+ /**
+ * The number of structural features of the '<em>Qualified Name</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int QUALIFIED_NAME_FEATURE_COUNT = 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.marte.vsl.vSL.impl.IntervalImpl <em>Interval</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.IntervalImpl
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl#getInterval()
+ * @generated
+ */
+ int INTERVAL = 16;
+
+ /**
+ * The feature id for the '<em><b>Is Lower Included</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTERVAL__IS_LOWER_INCLUDED = VALUE_SPECIFICATION_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Lower</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTERVAL__LOWER = VALUE_SPECIFICATION_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Upper</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTERVAL__UPPER = VALUE_SPECIFICATION_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Is Upper Included</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTERVAL__IS_UPPER_INCLUDED = VALUE_SPECIFICATION_FEATURE_COUNT + 3;
+
+ /**
+ * The number of structural features of the '<em>Interval</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTERVAL_FEATURE_COUNT = VALUE_SPECIFICATION_FEATURE_COUNT + 4;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.marte.vsl.vSL.impl.CollectionOrTupleImpl <em>Collection Or Tuple</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.CollectionOrTupleImpl
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl#getCollectionOrTuple()
+ * @generated
+ */
+ int COLLECTION_OR_TUPLE = 17;
+
+ /**
+ * The feature id for the '<em><b>List Of Values</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int COLLECTION_OR_TUPLE__LIST_OF_VALUES = VALUE_SPECIFICATION_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Collection Or Tuple</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int COLLECTION_OR_TUPLE_FEATURE_COUNT = VALUE_SPECIFICATION_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.marte.vsl.vSL.impl.TupleImpl <em>Tuple</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.TupleImpl
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl#getTuple()
+ * @generated
+ */
+ int TUPLE = 18;
+
+ /**
+ * The feature id for the '<em><b>List Of Value Name Pairs</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TUPLE__LIST_OF_VALUE_NAME_PAIRS = VALUE_SPECIFICATION_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Tuple</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TUPLE_FEATURE_COUNT = VALUE_SPECIFICATION_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.marte.vsl.vSL.impl.ListOfValuesImpl <em>List Of Values</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.ListOfValuesImpl
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl#getListOfValues()
+ * @generated
+ */
+ int LIST_OF_VALUES = 19;
+
+ /**
+ * The feature id for the '<em><b>Values</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LIST_OF_VALUES__VALUES = 0;
+
+ /**
+ * The number of structural features of the '<em>List Of Values</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LIST_OF_VALUES_FEATURE_COUNT = 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.marte.vsl.vSL.impl.ListOfValueNamePairsImpl <em>List Of Value Name Pairs</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.ListOfValueNamePairsImpl
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl#getListOfValueNamePairs()
+ * @generated
+ */
+ int LIST_OF_VALUE_NAME_PAIRS = 20;
+
+ /**
+ * The feature id for the '<em><b>Value Name Pairs</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LIST_OF_VALUE_NAME_PAIRS__VALUE_NAME_PAIRS = 0;
+
+ /**
+ * The number of structural features of the '<em>List Of Value Name Pairs</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LIST_OF_VALUE_NAME_PAIRS_FEATURE_COUNT = 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.marte.vsl.vSL.impl.ValueNamePairImpl <em>Value Name Pair</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.ValueNamePairImpl
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl#getValueNamePair()
+ * @generated
+ */
+ int VALUE_NAME_PAIR = 21;
+
+ /**
+ * The feature id for the '<em><b>Property</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int VALUE_NAME_PAIR__PROPERTY = 0;
+
+ /**
+ * The feature id for the '<em><b>Value</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int VALUE_NAME_PAIR__VALUE = 1;
+
+ /**
+ * The number of structural features of the '<em>Value Name Pair</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int VALUE_NAME_PAIR_FEATURE_COUNT = 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.marte.vsl.vSL.impl.TimeExpressionImpl <em>Time Expression</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.TimeExpressionImpl
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl#getTimeExpression()
+ * @generated
+ */
+ int TIME_EXPRESSION = 22;
+
+ /**
+ * The number of structural features of the '<em>Time Expression</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TIME_EXPRESSION_FEATURE_COUNT = VALUE_SPECIFICATION_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.marte.vsl.vSL.impl.InstantObsExpressionImpl <em>Instant Obs Expression</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.InstantObsExpressionImpl
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl#getInstantObsExpression()
+ * @generated
+ */
+ int INSTANT_OBS_EXPRESSION = 23;
+
+ /**
+ * The feature id for the '<em><b>Id</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INSTANT_OBS_EXPRESSION__ID = TIME_EXPRESSION_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Index</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INSTANT_OBS_EXPRESSION__INDEX = TIME_EXPRESSION_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Condition</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INSTANT_OBS_EXPRESSION__CONDITION = TIME_EXPRESSION_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>Instant Obs Expression</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INSTANT_OBS_EXPRESSION_FEATURE_COUNT = TIME_EXPRESSION_FEATURE_COUNT + 3;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.marte.vsl.vSL.impl.InstantObsNameImpl <em>Instant Obs Name</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.InstantObsNameImpl
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl#getInstantObsName()
+ * @generated
+ */
+ int INSTANT_OBS_NAME = 24;
+
+ /**
+ * The feature id for the '<em><b>Path</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INSTANT_OBS_NAME__PATH = 0;
+
+ /**
+ * The feature id for the '<em><b>Instant Id</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INSTANT_OBS_NAME__INSTANT_ID = 1;
+
+ /**
+ * The number of structural features of the '<em>Instant Obs Name</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INSTANT_OBS_NAME_FEATURE_COUNT = 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.marte.vsl.vSL.impl.DurationObsExpressionImpl <em>Duration Obs Expression</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.DurationObsExpressionImpl
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl#getDurationObsExpression()
+ * @generated
+ */
+ int DURATION_OBS_EXPRESSION = 25;
+
+ /**
+ * The feature id for the '<em><b>Id</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DURATION_OBS_EXPRESSION__ID = TIME_EXPRESSION_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Index</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DURATION_OBS_EXPRESSION__INDEX = TIME_EXPRESSION_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Condition</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DURATION_OBS_EXPRESSION__CONDITION = TIME_EXPRESSION_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>Duration Obs Expression</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DURATION_OBS_EXPRESSION_FEATURE_COUNT = TIME_EXPRESSION_FEATURE_COUNT + 3;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.marte.vsl.vSL.impl.DurationObsNameImpl <em>Duration Obs Name</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.DurationObsNameImpl
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl#getDurationObsName()
+ * @generated
+ */
+ int DURATION_OBS_NAME = 26;
+
+ /**
+ * The feature id for the '<em><b>Path</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DURATION_OBS_NAME__PATH = 0;
+
+ /**
+ * The feature id for the '<em><b>Duration Id</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DURATION_OBS_NAME__DURATION_ID = 1;
+
+ /**
+ * The number of structural features of the '<em>Duration Obs Name</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DURATION_OBS_NAME_FEATURE_COUNT = 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.marte.vsl.vSL.impl.JitterExpImpl <em>Jitter Exp</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.JitterExpImpl
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl#getJitterExp()
+ * @generated
+ */
+ int JITTER_EXP = 27;
+
+ /**
+ * The feature id for the '<em><b>First Instant</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int JITTER_EXP__FIRST_INSTANT = TIME_EXPRESSION_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Second Instant</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int JITTER_EXP__SECOND_INSTANT = TIME_EXPRESSION_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Jitter Exp</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int JITTER_EXP_FEATURE_COUNT = TIME_EXPRESSION_FEATURE_COUNT + 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.marte.vsl.vSL.impl.VariableDeclarationImpl <em>Variable Declaration</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VariableDeclarationImpl
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl#getVariableDeclaration()
+ * @generated
+ */
+ int VARIABLE_DECLARATION = 28;
+
+ /**
+ * The feature id for the '<em><b>Variable Declaration</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int VARIABLE_DECLARATION__VARIABLE_DECLARATION = VALUE_SPECIFICATION_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int VARIABLE_DECLARATION__NAME = VALUE_SPECIFICATION_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Type</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int VARIABLE_DECLARATION__TYPE = VALUE_SPECIFICATION_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Init Value</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int VARIABLE_DECLARATION__INIT_VALUE = VALUE_SPECIFICATION_FEATURE_COUNT + 3;
+
+ /**
+ * The number of structural features of the '<em>Variable Declaration</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int VARIABLE_DECLARATION_FEATURE_COUNT = VALUE_SPECIFICATION_FEATURE_COUNT + 4;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.marte.vsl.vSL.impl.DataTypeNameImpl <em>Data Type Name</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.DataTypeNameImpl
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl#getDataTypeName()
+ * @generated
+ */
+ int DATA_TYPE_NAME = 29;
+
+ /**
+ * The feature id for the '<em><b>Path</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DATA_TYPE_NAME__PATH = 0;
+
+ /**
+ * The feature id for the '<em><b>Type</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DATA_TYPE_NAME__TYPE = 1;
+
+ /**
+ * The number of structural features of the '<em>Data Type Name</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DATA_TYPE_NAME_FEATURE_COUNT = 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.marte.vsl.vSL.impl.NumberLiteralRuleImpl <em>Number Literal Rule</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.NumberLiteralRuleImpl
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl#getNumberLiteralRule()
+ * @generated
+ */
+ int NUMBER_LITERAL_RULE = 30;
+
+ /**
+ * The feature id for the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NUMBER_LITERAL_RULE__VALUE = LITERAL__VALUE;
+
+ /**
+ * The number of structural features of the '<em>Number Literal Rule</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NUMBER_LITERAL_RULE_FEATURE_COUNT = LITERAL_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.marte.vsl.vSL.impl.IntegerLiteralRuleImpl <em>Integer Literal Rule</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.IntegerLiteralRuleImpl
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl#getIntegerLiteralRule()
+ * @generated
+ */
+ int INTEGER_LITERAL_RULE = 31;
+
+ /**
+ * The feature id for the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTEGER_LITERAL_RULE__VALUE = NUMBER_LITERAL_RULE__VALUE;
+
+ /**
+ * The number of structural features of the '<em>Integer Literal Rule</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTEGER_LITERAL_RULE_FEATURE_COUNT = NUMBER_LITERAL_RULE_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.marte.vsl.vSL.impl.UnlimitedLiteralRuleImpl <em>Unlimited Literal Rule</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.UnlimitedLiteralRuleImpl
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl#getUnlimitedLiteralRule()
+ * @generated
+ */
+ int UNLIMITED_LITERAL_RULE = 32;
+
+ /**
+ * The feature id for the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int UNLIMITED_LITERAL_RULE__VALUE = NUMBER_LITERAL_RULE__VALUE;
+
+ /**
+ * The number of structural features of the '<em>Unlimited Literal Rule</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int UNLIMITED_LITERAL_RULE_FEATURE_COUNT = NUMBER_LITERAL_RULE_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.marte.vsl.vSL.impl.RealLiteralRuleImpl <em>Real Literal Rule</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.RealLiteralRuleImpl
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl#getRealLiteralRule()
+ * @generated
+ */
+ int REAL_LITERAL_RULE = 33;
+
+ /**
+ * The feature id for the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REAL_LITERAL_RULE__VALUE = NUMBER_LITERAL_RULE__VALUE;
+
+ /**
+ * The number of structural features of the '<em>Real Literal Rule</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REAL_LITERAL_RULE_FEATURE_COUNT = NUMBER_LITERAL_RULE_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.marte.vsl.vSL.impl.DateTimeLiteralRuleImpl <em>Date Time Literal Rule</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.DateTimeLiteralRuleImpl
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl#getDateTimeLiteralRule()
+ * @generated
+ */
+ int DATE_TIME_LITERAL_RULE = 34;
+
+ /**
+ * The feature id for the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DATE_TIME_LITERAL_RULE__VALUE = LITERAL__VALUE;
+
+ /**
+ * The number of structural features of the '<em>Date Time Literal Rule</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DATE_TIME_LITERAL_RULE_FEATURE_COUNT = LITERAL_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.marte.vsl.vSL.impl.BooleanLiteralRuleImpl <em>Boolean Literal Rule</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.BooleanLiteralRuleImpl
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl#getBooleanLiteralRule()
+ * @generated
+ */
+ int BOOLEAN_LITERAL_RULE = 35;
+
+ /**
+ * The feature id for the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int BOOLEAN_LITERAL_RULE__VALUE = LITERAL__VALUE;
+
+ /**
+ * The number of structural features of the '<em>Boolean Literal Rule</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int BOOLEAN_LITERAL_RULE_FEATURE_COUNT = LITERAL_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.marte.vsl.vSL.impl.NullLiteralRuleImpl <em>Null Literal Rule</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.NullLiteralRuleImpl
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl#getNullLiteralRule()
+ * @generated
+ */
+ int NULL_LITERAL_RULE = 36;
+
+ /**
+ * The feature id for the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NULL_LITERAL_RULE__VALUE = LITERAL__VALUE;
+
+ /**
+ * The number of structural features of the '<em>Null Literal Rule</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NULL_LITERAL_RULE_FEATURE_COUNT = LITERAL_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.marte.vsl.vSL.impl.DefaultLiteralRuleImpl <em>Default Literal Rule</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.DefaultLiteralRuleImpl
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl#getDefaultLiteralRule()
+ * @generated
+ */
+ int DEFAULT_LITERAL_RULE = 37;
+
+ /**
+ * The feature id for the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DEFAULT_LITERAL_RULE__VALUE = LITERAL__VALUE;
+
+ /**
+ * The number of structural features of the '<em>Default Literal Rule</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DEFAULT_LITERAL_RULE_FEATURE_COUNT = LITERAL_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.marte.vsl.vSL.impl.StringLiteralRuleImpl <em>String Literal Rule</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.StringLiteralRuleImpl
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl#getStringLiteralRule()
+ * @generated
+ */
+ int STRING_LITERAL_RULE = 38;
+
+ /**
+ * The feature id for the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRING_LITERAL_RULE__VALUE = LITERAL__VALUE;
+
+ /**
+ * The number of structural features of the '<em>String Literal Rule</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRING_LITERAL_RULE_FEATURE_COUNT = LITERAL_FEATURE_COUNT + 0;
+
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.marte.vsl.vSL.Expression <em>Expression</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Expression</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.Expression
+ * @generated
+ */
+ EClass getExpression();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.papyrus.marte.vsl.vSL.Expression#getExp <em>Exp</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Exp</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.Expression#getExp()
+ * @see #getExpression()
+ * @generated
+ */
+ EReference getExpression_Exp();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.marte.vsl.vSL.AndOrXorExpression <em>And Or Xor Expression</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>And Or Xor Expression</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.AndOrXorExpression
+ * @generated
+ */
+ EClass getAndOrXorExpression();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.papyrus.marte.vsl.vSL.AndOrXorExpression#getExp <em>Exp</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Exp</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.AndOrXorExpression#getExp()
+ * @see #getAndOrXorExpression()
+ * @generated
+ */
+ EReference getAndOrXorExpression_Exp();
+
+ /**
+ * Returns the meta object for the attribute list '{@link org.eclipse.papyrus.marte.vsl.vSL.AndOrXorExpression#getOp <em>Op</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute list '<em>Op</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.AndOrXorExpression#getOp()
+ * @see #getAndOrXorExpression()
+ * @generated
+ */
+ EAttribute getAndOrXorExpression_Op();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.marte.vsl.vSL.EqualityExpression <em>Equality Expression</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Equality Expression</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.EqualityExpression
+ * @generated
+ */
+ EClass getEqualityExpression();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.papyrus.marte.vsl.vSL.EqualityExpression#getExp <em>Exp</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Exp</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.EqualityExpression#getExp()
+ * @see #getEqualityExpression()
+ * @generated
+ */
+ EReference getEqualityExpression_Exp();
+
+ /**
+ * Returns the meta object for the attribute list '{@link org.eclipse.papyrus.marte.vsl.vSL.EqualityExpression#getOp <em>Op</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute list '<em>Op</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.EqualityExpression#getOp()
+ * @see #getEqualityExpression()
+ * @generated
+ */
+ EAttribute getEqualityExpression_Op();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.marte.vsl.vSL.RelationalExpression <em>Relational Expression</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Relational Expression</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.RelationalExpression
+ * @generated
+ */
+ EClass getRelationalExpression();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.papyrus.marte.vsl.vSL.RelationalExpression#getExp <em>Exp</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Exp</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.RelationalExpression#getExp()
+ * @see #getRelationalExpression()
+ * @generated
+ */
+ EReference getRelationalExpression_Exp();
+
+ /**
+ * Returns the meta object for the attribute list '{@link org.eclipse.papyrus.marte.vsl.vSL.RelationalExpression#getOp <em>Op</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute list '<em>Op</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.RelationalExpression#getOp()
+ * @see #getRelationalExpression()
+ * @generated
+ */
+ EAttribute getRelationalExpression_Op();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.marte.vsl.vSL.ConditionalExpression <em>Conditional Expression</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Conditional Expression</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.ConditionalExpression
+ * @generated
+ */
+ EClass getConditionalExpression();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.papyrus.marte.vsl.vSL.ConditionalExpression#getExp <em>Exp</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Exp</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.ConditionalExpression#getExp()
+ * @see #getConditionalExpression()
+ * @generated
+ */
+ EReference getConditionalExpression_Exp();
+
+ /**
+ * Returns the meta object for the attribute list '{@link org.eclipse.papyrus.marte.vsl.vSL.ConditionalExpression#getOp <em>Op</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute list '<em>Op</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.ConditionalExpression#getOp()
+ * @see #getConditionalExpression()
+ * @generated
+ */
+ EAttribute getConditionalExpression_Op();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.marte.vsl.vSL.AdditiveExpression <em>Additive Expression</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Additive Expression</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.AdditiveExpression
+ * @generated
+ */
+ EClass getAdditiveExpression();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.papyrus.marte.vsl.vSL.AdditiveExpression#getExp <em>Exp</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Exp</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.AdditiveExpression#getExp()
+ * @see #getAdditiveExpression()
+ * @generated
+ */
+ EReference getAdditiveExpression_Exp();
+
+ /**
+ * Returns the meta object for the attribute list '{@link org.eclipse.papyrus.marte.vsl.vSL.AdditiveExpression#getOp <em>Op</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute list '<em>Op</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.AdditiveExpression#getOp()
+ * @see #getAdditiveExpression()
+ * @generated
+ */
+ EAttribute getAdditiveExpression_Op();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.marte.vsl.vSL.MultiplicativeExpression <em>Multiplicative Expression</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Multiplicative Expression</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.MultiplicativeExpression
+ * @generated
+ */
+ EClass getMultiplicativeExpression();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.papyrus.marte.vsl.vSL.MultiplicativeExpression#getExp <em>Exp</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Exp</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.MultiplicativeExpression#getExp()
+ * @see #getMultiplicativeExpression()
+ * @generated
+ */
+ EReference getMultiplicativeExpression_Exp();
+
+ /**
+ * Returns the meta object for the attribute list '{@link org.eclipse.papyrus.marte.vsl.vSL.MultiplicativeExpression#getOp <em>Op</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute list '<em>Op</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.MultiplicativeExpression#getOp()
+ * @see #getMultiplicativeExpression()
+ * @generated
+ */
+ EAttribute getMultiplicativeExpression_Op();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.marte.vsl.vSL.UnaryExpression <em>Unary Expression</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Unary Expression</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.UnaryExpression
+ * @generated
+ */
+ EClass getUnaryExpression();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.marte.vsl.vSL.UnaryExpression#getOp <em>Op</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Op</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.UnaryExpression#getOp()
+ * @see #getUnaryExpression()
+ * @generated
+ */
+ EAttribute getUnaryExpression_Op();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.papyrus.marte.vsl.vSL.UnaryExpression#getUnary <em>Unary</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Unary</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.UnaryExpression#getUnary()
+ * @see #getUnaryExpression()
+ * @generated
+ */
+ EReference getUnaryExpression_Unary();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.papyrus.marte.vsl.vSL.UnaryExpression#getExp <em>Exp</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Exp</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.UnaryExpression#getExp()
+ * @see #getUnaryExpression()
+ * @generated
+ */
+ EReference getUnaryExpression_Exp();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.marte.vsl.vSL.PrimaryExpression <em>Primary Expression</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Primary Expression</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.PrimaryExpression
+ * @generated
+ */
+ EClass getPrimaryExpression();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.papyrus.marte.vsl.vSL.PrimaryExpression#getPrefix <em>Prefix</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Prefix</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.PrimaryExpression#getPrefix()
+ * @see #getPrimaryExpression()
+ * @generated
+ */
+ EReference getPrimaryExpression_Prefix();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.papyrus.marte.vsl.vSL.PrimaryExpression#getSuffix <em>Suffix</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Suffix</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.PrimaryExpression#getSuffix()
+ * @see #getPrimaryExpression()
+ * @generated
+ */
+ EReference getPrimaryExpression_Suffix();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.marte.vsl.vSL.ValueSpecification <em>Value Specification</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Value Specification</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.ValueSpecification
+ * @generated
+ */
+ EClass getValueSpecification();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.marte.vsl.vSL.SuffixExpression <em>Suffix Expression</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Suffix Expression</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.SuffixExpression
+ * @generated
+ */
+ EClass getSuffixExpression();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.papyrus.marte.vsl.vSL.SuffixExpression#getSuffix <em>Suffix</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Suffix</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.SuffixExpression#getSuffix()
+ * @see #getSuffixExpression()
+ * @generated
+ */
+ EReference getSuffixExpression_Suffix();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.marte.vsl.vSL.PropertyCallExpression <em>Property Call Expression</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Property Call Expression</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.PropertyCallExpression
+ * @generated
+ */
+ EClass getPropertyCallExpression();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.papyrus.marte.vsl.vSL.PropertyCallExpression#getProperty <em>Property</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Property</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.PropertyCallExpression#getProperty()
+ * @see #getPropertyCallExpression()
+ * @generated
+ */
+ EReference getPropertyCallExpression_Property();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.marte.vsl.vSL.OperationCallExpression <em>Operation Call Expression</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Operation Call Expression</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.OperationCallExpression
+ * @generated
+ */
+ EClass getOperationCallExpression();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.papyrus.marte.vsl.vSL.OperationCallExpression#getOperation <em>Operation</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Operation</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.OperationCallExpression#getOperation()
+ * @see #getOperationCallExpression()
+ * @generated
+ */
+ EReference getOperationCallExpression_Operation();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.papyrus.marte.vsl.vSL.OperationCallExpression#getArguments <em>Arguments</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Arguments</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.OperationCallExpression#getArguments()
+ * @see #getOperationCallExpression()
+ * @generated
+ */
+ EReference getOperationCallExpression_Arguments();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.marte.vsl.vSL.Literal <em>Literal</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Literal</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.Literal
+ * @generated
+ */
+ EClass getLiteral();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.marte.vsl.vSL.Literal#getValue <em>Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Value</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.Literal#getValue()
+ * @see #getLiteral()
+ * @generated
+ */
+ EAttribute getLiteral_Value();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.marte.vsl.vSL.NameOrChoiceOrBehaviorCall <em>Name Or Choice Or Behavior Call</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Name Or Choice Or Behavior Call</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.NameOrChoiceOrBehaviorCall
+ * @generated
+ */
+ EClass getNameOrChoiceOrBehaviorCall();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.papyrus.marte.vsl.vSL.NameOrChoiceOrBehaviorCall#getPath <em>Path</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Path</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.NameOrChoiceOrBehaviorCall#getPath()
+ * @see #getNameOrChoiceOrBehaviorCall()
+ * @generated
+ */
+ EReference getNameOrChoiceOrBehaviorCall_Path();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.papyrus.marte.vsl.vSL.NameOrChoiceOrBehaviorCall#getId <em>Id</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Id</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.NameOrChoiceOrBehaviorCall#getId()
+ * @see #getNameOrChoiceOrBehaviorCall()
+ * @generated
+ */
+ EReference getNameOrChoiceOrBehaviorCall_Id();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.papyrus.marte.vsl.vSL.NameOrChoiceOrBehaviorCall#getArguments <em>Arguments</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Arguments</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.NameOrChoiceOrBehaviorCall#getArguments()
+ * @see #getNameOrChoiceOrBehaviorCall()
+ * @generated
+ */
+ EReference getNameOrChoiceOrBehaviorCall_Arguments();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.marte.vsl.vSL.QualifiedName <em>Qualified Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Qualified Name</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.QualifiedName
+ * @generated
+ */
+ EClass getQualifiedName();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.papyrus.marte.vsl.vSL.QualifiedName#getPath <em>Path</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Path</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.QualifiedName#getPath()
+ * @see #getQualifiedName()
+ * @generated
+ */
+ EReference getQualifiedName_Path();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.papyrus.marte.vsl.vSL.QualifiedName#getRemaining <em>Remaining</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Remaining</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.QualifiedName#getRemaining()
+ * @see #getQualifiedName()
+ * @generated
+ */
+ EReference getQualifiedName_Remaining();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.marte.vsl.vSL.Interval <em>Interval</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Interval</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.Interval
+ * @generated
+ */
+ EClass getInterval();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.marte.vsl.vSL.Interval#getIsLowerIncluded <em>Is Lower Included</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Is Lower Included</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.Interval#getIsLowerIncluded()
+ * @see #getInterval()
+ * @generated
+ */
+ EAttribute getInterval_IsLowerIncluded();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.papyrus.marte.vsl.vSL.Interval#getLower <em>Lower</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Lower</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.Interval#getLower()
+ * @see #getInterval()
+ * @generated
+ */
+ EReference getInterval_Lower();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.papyrus.marte.vsl.vSL.Interval#getUpper <em>Upper</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Upper</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.Interval#getUpper()
+ * @see #getInterval()
+ * @generated
+ */
+ EReference getInterval_Upper();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.marte.vsl.vSL.Interval#getIsUpperIncluded <em>Is Upper Included</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Is Upper Included</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.Interval#getIsUpperIncluded()
+ * @see #getInterval()
+ * @generated
+ */
+ EAttribute getInterval_IsUpperIncluded();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.marte.vsl.vSL.CollectionOrTuple <em>Collection Or Tuple</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Collection Or Tuple</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.CollectionOrTuple
+ * @generated
+ */
+ EClass getCollectionOrTuple();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.papyrus.marte.vsl.vSL.CollectionOrTuple#getListOfValues <em>List Of Values</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>List Of Values</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.CollectionOrTuple#getListOfValues()
+ * @see #getCollectionOrTuple()
+ * @generated
+ */
+ EReference getCollectionOrTuple_ListOfValues();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.marte.vsl.vSL.Tuple <em>Tuple</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Tuple</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.Tuple
+ * @generated
+ */
+ EClass getTuple();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.papyrus.marte.vsl.vSL.Tuple#getListOfValueNamePairs <em>List Of Value Name Pairs</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>List Of Value Name Pairs</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.Tuple#getListOfValueNamePairs()
+ * @see #getTuple()
+ * @generated
+ */
+ EReference getTuple_ListOfValueNamePairs();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.marte.vsl.vSL.ListOfValues <em>List Of Values</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>List Of Values</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.ListOfValues
+ * @generated
+ */
+ EClass getListOfValues();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.papyrus.marte.vsl.vSL.ListOfValues#getValues <em>Values</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Values</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.ListOfValues#getValues()
+ * @see #getListOfValues()
+ * @generated
+ */
+ EReference getListOfValues_Values();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.marte.vsl.vSL.ListOfValueNamePairs <em>List Of Value Name Pairs</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>List Of Value Name Pairs</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.ListOfValueNamePairs
+ * @generated
+ */
+ EClass getListOfValueNamePairs();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.papyrus.marte.vsl.vSL.ListOfValueNamePairs#getValueNamePairs <em>Value Name Pairs</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Value Name Pairs</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.ListOfValueNamePairs#getValueNamePairs()
+ * @see #getListOfValueNamePairs()
+ * @generated
+ */
+ EReference getListOfValueNamePairs_ValueNamePairs();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.marte.vsl.vSL.ValueNamePair <em>Value Name Pair</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Value Name Pair</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.ValueNamePair
+ * @generated
+ */
+ EClass getValueNamePair();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.papyrus.marte.vsl.vSL.ValueNamePair#getProperty <em>Property</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Property</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.ValueNamePair#getProperty()
+ * @see #getValueNamePair()
+ * @generated
+ */
+ EReference getValueNamePair_Property();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.papyrus.marte.vsl.vSL.ValueNamePair#getValue <em>Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Value</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.ValueNamePair#getValue()
+ * @see #getValueNamePair()
+ * @generated
+ */
+ EReference getValueNamePair_Value();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.marte.vsl.vSL.TimeExpression <em>Time Expression</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Time Expression</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.TimeExpression
+ * @generated
+ */
+ EClass getTimeExpression();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.marte.vsl.vSL.InstantObsExpression <em>Instant Obs Expression</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Instant Obs Expression</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.InstantObsExpression
+ * @generated
+ */
+ EClass getInstantObsExpression();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.papyrus.marte.vsl.vSL.InstantObsExpression#getId <em>Id</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Id</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.InstantObsExpression#getId()
+ * @see #getInstantObsExpression()
+ * @generated
+ */
+ EReference getInstantObsExpression_Id();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.papyrus.marte.vsl.vSL.InstantObsExpression#getIndex <em>Index</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Index</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.InstantObsExpression#getIndex()
+ * @see #getInstantObsExpression()
+ * @generated
+ */
+ EReference getInstantObsExpression_Index();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.papyrus.marte.vsl.vSL.InstantObsExpression#getCondition <em>Condition</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Condition</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.InstantObsExpression#getCondition()
+ * @see #getInstantObsExpression()
+ * @generated
+ */
+ EReference getInstantObsExpression_Condition();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.marte.vsl.vSL.InstantObsName <em>Instant Obs Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Instant Obs Name</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.InstantObsName
+ * @generated
+ */
+ EClass getInstantObsName();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.papyrus.marte.vsl.vSL.InstantObsName#getPath <em>Path</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Path</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.InstantObsName#getPath()
+ * @see #getInstantObsName()
+ * @generated
+ */
+ EReference getInstantObsName_Path();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.papyrus.marte.vsl.vSL.InstantObsName#getInstantId <em>Instant Id</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Instant Id</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.InstantObsName#getInstantId()
+ * @see #getInstantObsName()
+ * @generated
+ */
+ EReference getInstantObsName_InstantId();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.marte.vsl.vSL.DurationObsExpression <em>Duration Obs Expression</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Duration Obs Expression</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.DurationObsExpression
+ * @generated
+ */
+ EClass getDurationObsExpression();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.papyrus.marte.vsl.vSL.DurationObsExpression#getId <em>Id</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Id</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.DurationObsExpression#getId()
+ * @see #getDurationObsExpression()
+ * @generated
+ */
+ EReference getDurationObsExpression_Id();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.papyrus.marte.vsl.vSL.DurationObsExpression#getIndex <em>Index</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Index</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.DurationObsExpression#getIndex()
+ * @see #getDurationObsExpression()
+ * @generated
+ */
+ EReference getDurationObsExpression_Index();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.papyrus.marte.vsl.vSL.DurationObsExpression#getCondition <em>Condition</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Condition</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.DurationObsExpression#getCondition()
+ * @see #getDurationObsExpression()
+ * @generated
+ */
+ EReference getDurationObsExpression_Condition();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.marte.vsl.vSL.DurationObsName <em>Duration Obs Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Duration Obs Name</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.DurationObsName
+ * @generated
+ */
+ EClass getDurationObsName();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.papyrus.marte.vsl.vSL.DurationObsName#getPath <em>Path</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Path</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.DurationObsName#getPath()
+ * @see #getDurationObsName()
+ * @generated
+ */
+ EReference getDurationObsName_Path();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.papyrus.marte.vsl.vSL.DurationObsName#getDurationId <em>Duration Id</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Duration Id</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.DurationObsName#getDurationId()
+ * @see #getDurationObsName()
+ * @generated
+ */
+ EReference getDurationObsName_DurationId();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.marte.vsl.vSL.JitterExp <em>Jitter Exp</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Jitter Exp</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.JitterExp
+ * @generated
+ */
+ EClass getJitterExp();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.papyrus.marte.vsl.vSL.JitterExp#getFirstInstant <em>First Instant</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>First Instant</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.JitterExp#getFirstInstant()
+ * @see #getJitterExp()
+ * @generated
+ */
+ EReference getJitterExp_FirstInstant();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.papyrus.marte.vsl.vSL.JitterExp#getSecondInstant <em>Second Instant</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Second Instant</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.JitterExp#getSecondInstant()
+ * @see #getJitterExp()
+ * @generated
+ */
+ EReference getJitterExp_SecondInstant();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.marte.vsl.vSL.VariableDeclaration <em>Variable Declaration</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Variable Declaration</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VariableDeclaration
+ * @generated
+ */
+ EClass getVariableDeclaration();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.marte.vsl.vSL.VariableDeclaration#getVariableDeclaration <em>Variable Declaration</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Variable Declaration</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VariableDeclaration#getVariableDeclaration()
+ * @see #getVariableDeclaration()
+ * @generated
+ */
+ EAttribute getVariableDeclaration_VariableDeclaration();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.marte.vsl.vSL.VariableDeclaration#getName <em>Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Name</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VariableDeclaration#getName()
+ * @see #getVariableDeclaration()
+ * @generated
+ */
+ EAttribute getVariableDeclaration_Name();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.papyrus.marte.vsl.vSL.VariableDeclaration#getType <em>Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Type</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VariableDeclaration#getType()
+ * @see #getVariableDeclaration()
+ * @generated
+ */
+ EReference getVariableDeclaration_Type();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.papyrus.marte.vsl.vSL.VariableDeclaration#getInitValue <em>Init Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Init Value</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VariableDeclaration#getInitValue()
+ * @see #getVariableDeclaration()
+ * @generated
+ */
+ EReference getVariableDeclaration_InitValue();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.marte.vsl.vSL.DataTypeName <em>Data Type Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Data Type Name</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.DataTypeName
+ * @generated
+ */
+ EClass getDataTypeName();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.papyrus.marte.vsl.vSL.DataTypeName#getPath <em>Path</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Path</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.DataTypeName#getPath()
+ * @see #getDataTypeName()
+ * @generated
+ */
+ EReference getDataTypeName_Path();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.papyrus.marte.vsl.vSL.DataTypeName#getType <em>Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Type</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.DataTypeName#getType()
+ * @see #getDataTypeName()
+ * @generated
+ */
+ EReference getDataTypeName_Type();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.marte.vsl.vSL.NumberLiteralRule <em>Number Literal Rule</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Number Literal Rule</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.NumberLiteralRule
+ * @generated
+ */
+ EClass getNumberLiteralRule();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.marte.vsl.vSL.IntegerLiteralRule <em>Integer Literal Rule</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Integer Literal Rule</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.IntegerLiteralRule
+ * @generated
+ */
+ EClass getIntegerLiteralRule();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.marte.vsl.vSL.UnlimitedLiteralRule <em>Unlimited Literal Rule</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Unlimited Literal Rule</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.UnlimitedLiteralRule
+ * @generated
+ */
+ EClass getUnlimitedLiteralRule();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.marte.vsl.vSL.RealLiteralRule <em>Real Literal Rule</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Real Literal Rule</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.RealLiteralRule
+ * @generated
+ */
+ EClass getRealLiteralRule();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.marte.vsl.vSL.DateTimeLiteralRule <em>Date Time Literal Rule</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Date Time Literal Rule</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.DateTimeLiteralRule
+ * @generated
+ */
+ EClass getDateTimeLiteralRule();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.marte.vsl.vSL.BooleanLiteralRule <em>Boolean Literal Rule</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Boolean Literal Rule</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.BooleanLiteralRule
+ * @generated
+ */
+ EClass getBooleanLiteralRule();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.marte.vsl.vSL.NullLiteralRule <em>Null Literal Rule</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Null Literal Rule</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.NullLiteralRule
+ * @generated
+ */
+ EClass getNullLiteralRule();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.marte.vsl.vSL.DefaultLiteralRule <em>Default Literal Rule</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Default Literal Rule</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.DefaultLiteralRule
+ * @generated
+ */
+ EClass getDefaultLiteralRule();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.marte.vsl.vSL.StringLiteralRule <em>String Literal Rule</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>String Literal Rule</em>'.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.StringLiteralRule
+ * @generated
+ */
+ EClass getStringLiteralRule();
+
+ /**
+ * 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
+ */
+ VSLFactory getVSLFactory();
+
+ /**
+ * <!-- 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.papyrus.marte.vsl.vSL.impl.ExpressionImpl <em>Expression</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.ExpressionImpl
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl#getExpression()
+ * @generated
+ */
+ EClass EXPRESSION = eINSTANCE.getExpression();
+
+ /**
+ * The meta object literal for the '<em><b>Exp</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference EXPRESSION__EXP = eINSTANCE.getExpression_Exp();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.marte.vsl.vSL.impl.AndOrXorExpressionImpl <em>And Or Xor Expression</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.AndOrXorExpressionImpl
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl#getAndOrXorExpression()
+ * @generated
+ */
+ EClass AND_OR_XOR_EXPRESSION = eINSTANCE.getAndOrXorExpression();
+
+ /**
+ * The meta object literal for the '<em><b>Exp</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference AND_OR_XOR_EXPRESSION__EXP = eINSTANCE.getAndOrXorExpression_Exp();
+
+ /**
+ * The meta object literal for the '<em><b>Op</b></em>' attribute list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute AND_OR_XOR_EXPRESSION__OP = eINSTANCE.getAndOrXorExpression_Op();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.marte.vsl.vSL.impl.EqualityExpressionImpl <em>Equality Expression</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.EqualityExpressionImpl
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl#getEqualityExpression()
+ * @generated
+ */
+ EClass EQUALITY_EXPRESSION = eINSTANCE.getEqualityExpression();
+
+ /**
+ * The meta object literal for the '<em><b>Exp</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference EQUALITY_EXPRESSION__EXP = eINSTANCE.getEqualityExpression_Exp();
+
+ /**
+ * The meta object literal for the '<em><b>Op</b></em>' attribute list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute EQUALITY_EXPRESSION__OP = eINSTANCE.getEqualityExpression_Op();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.marte.vsl.vSL.impl.RelationalExpressionImpl <em>Relational Expression</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.RelationalExpressionImpl
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl#getRelationalExpression()
+ * @generated
+ */
+ EClass RELATIONAL_EXPRESSION = eINSTANCE.getRelationalExpression();
+
+ /**
+ * The meta object literal for the '<em><b>Exp</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference RELATIONAL_EXPRESSION__EXP = eINSTANCE.getRelationalExpression_Exp();
+
+ /**
+ * The meta object literal for the '<em><b>Op</b></em>' attribute list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute RELATIONAL_EXPRESSION__OP = eINSTANCE.getRelationalExpression_Op();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.marte.vsl.vSL.impl.ConditionalExpressionImpl <em>Conditional Expression</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.ConditionalExpressionImpl
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl#getConditionalExpression()
+ * @generated
+ */
+ EClass CONDITIONAL_EXPRESSION = eINSTANCE.getConditionalExpression();
+
+ /**
+ * The meta object literal for the '<em><b>Exp</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference CONDITIONAL_EXPRESSION__EXP = eINSTANCE.getConditionalExpression_Exp();
+
+ /**
+ * The meta object literal for the '<em><b>Op</b></em>' attribute list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute CONDITIONAL_EXPRESSION__OP = eINSTANCE.getConditionalExpression_Op();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.marte.vsl.vSL.impl.AdditiveExpressionImpl <em>Additive Expression</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.AdditiveExpressionImpl
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl#getAdditiveExpression()
+ * @generated
+ */
+ EClass ADDITIVE_EXPRESSION = eINSTANCE.getAdditiveExpression();
+
+ /**
+ * The meta object literal for the '<em><b>Exp</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference ADDITIVE_EXPRESSION__EXP = eINSTANCE.getAdditiveExpression_Exp();
+
+ /**
+ * The meta object literal for the '<em><b>Op</b></em>' attribute list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute ADDITIVE_EXPRESSION__OP = eINSTANCE.getAdditiveExpression_Op();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.marte.vsl.vSL.impl.MultiplicativeExpressionImpl <em>Multiplicative Expression</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.MultiplicativeExpressionImpl
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl#getMultiplicativeExpression()
+ * @generated
+ */
+ EClass MULTIPLICATIVE_EXPRESSION = eINSTANCE.getMultiplicativeExpression();
+
+ /**
+ * The meta object literal for the '<em><b>Exp</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference MULTIPLICATIVE_EXPRESSION__EXP = eINSTANCE.getMultiplicativeExpression_Exp();
+
+ /**
+ * The meta object literal for the '<em><b>Op</b></em>' attribute list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute MULTIPLICATIVE_EXPRESSION__OP = eINSTANCE.getMultiplicativeExpression_Op();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.marte.vsl.vSL.impl.UnaryExpressionImpl <em>Unary Expression</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.UnaryExpressionImpl
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl#getUnaryExpression()
+ * @generated
+ */
+ EClass UNARY_EXPRESSION = eINSTANCE.getUnaryExpression();
+
+ /**
+ * The meta object literal for the '<em><b>Op</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute UNARY_EXPRESSION__OP = eINSTANCE.getUnaryExpression_Op();
+
+ /**
+ * The meta object literal for the '<em><b>Unary</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference UNARY_EXPRESSION__UNARY = eINSTANCE.getUnaryExpression_Unary();
+
+ /**
+ * The meta object literal for the '<em><b>Exp</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference UNARY_EXPRESSION__EXP = eINSTANCE.getUnaryExpression_Exp();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.marte.vsl.vSL.impl.PrimaryExpressionImpl <em>Primary Expression</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.PrimaryExpressionImpl
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl#getPrimaryExpression()
+ * @generated
+ */
+ EClass PRIMARY_EXPRESSION = eINSTANCE.getPrimaryExpression();
+
+ /**
+ * The meta object literal for the '<em><b>Prefix</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference PRIMARY_EXPRESSION__PREFIX = eINSTANCE.getPrimaryExpression_Prefix();
+
+ /**
+ * The meta object literal for the '<em><b>Suffix</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference PRIMARY_EXPRESSION__SUFFIX = eINSTANCE.getPrimaryExpression_Suffix();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.marte.vsl.vSL.impl.ValueSpecificationImpl <em>Value Specification</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.ValueSpecificationImpl
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl#getValueSpecification()
+ * @generated
+ */
+ EClass VALUE_SPECIFICATION = eINSTANCE.getValueSpecification();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.marte.vsl.vSL.impl.SuffixExpressionImpl <em>Suffix Expression</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.SuffixExpressionImpl
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl#getSuffixExpression()
+ * @generated
+ */
+ EClass SUFFIX_EXPRESSION = eINSTANCE.getSuffixExpression();
+
+ /**
+ * The meta object literal for the '<em><b>Suffix</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference SUFFIX_EXPRESSION__SUFFIX = eINSTANCE.getSuffixExpression_Suffix();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.marte.vsl.vSL.impl.PropertyCallExpressionImpl <em>Property Call Expression</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.PropertyCallExpressionImpl
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl#getPropertyCallExpression()
+ * @generated
+ */
+ EClass PROPERTY_CALL_EXPRESSION = eINSTANCE.getPropertyCallExpression();
+
+ /**
+ * The meta object literal for the '<em><b>Property</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference PROPERTY_CALL_EXPRESSION__PROPERTY = eINSTANCE.getPropertyCallExpression_Property();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.marte.vsl.vSL.impl.OperationCallExpressionImpl <em>Operation Call Expression</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.OperationCallExpressionImpl
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl#getOperationCallExpression()
+ * @generated
+ */
+ EClass OPERATION_CALL_EXPRESSION = eINSTANCE.getOperationCallExpression();
+
+ /**
+ * The meta object literal for the '<em><b>Operation</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference OPERATION_CALL_EXPRESSION__OPERATION = eINSTANCE.getOperationCallExpression_Operation();
+
+ /**
+ * The meta object literal for the '<em><b>Arguments</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference OPERATION_CALL_EXPRESSION__ARGUMENTS = eINSTANCE.getOperationCallExpression_Arguments();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.marte.vsl.vSL.impl.LiteralImpl <em>Literal</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.LiteralImpl
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl#getLiteral()
+ * @generated
+ */
+ EClass LITERAL = eINSTANCE.getLiteral();
+
+ /**
+ * The meta object literal for the '<em><b>Value</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute LITERAL__VALUE = eINSTANCE.getLiteral_Value();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.marte.vsl.vSL.impl.NameOrChoiceOrBehaviorCallImpl <em>Name Or Choice Or Behavior Call</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.NameOrChoiceOrBehaviorCallImpl
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl#getNameOrChoiceOrBehaviorCall()
+ * @generated
+ */
+ EClass NAME_OR_CHOICE_OR_BEHAVIOR_CALL = eINSTANCE.getNameOrChoiceOrBehaviorCall();
+
+ /**
+ * The meta object literal for the '<em><b>Path</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference NAME_OR_CHOICE_OR_BEHAVIOR_CALL__PATH = eINSTANCE.getNameOrChoiceOrBehaviorCall_Path();
+
+ /**
+ * The meta object literal for the '<em><b>Id</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference NAME_OR_CHOICE_OR_BEHAVIOR_CALL__ID = eINSTANCE.getNameOrChoiceOrBehaviorCall_Id();
+
+ /**
+ * The meta object literal for the '<em><b>Arguments</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference NAME_OR_CHOICE_OR_BEHAVIOR_CALL__ARGUMENTS = eINSTANCE.getNameOrChoiceOrBehaviorCall_Arguments();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.marte.vsl.vSL.impl.QualifiedNameImpl <em>Qualified Name</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.QualifiedNameImpl
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl#getQualifiedName()
+ * @generated
+ */
+ EClass QUALIFIED_NAME = eINSTANCE.getQualifiedName();
+
+ /**
+ * The meta object literal for the '<em><b>Path</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference QUALIFIED_NAME__PATH = eINSTANCE.getQualifiedName_Path();
+
+ /**
+ * The meta object literal for the '<em><b>Remaining</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference QUALIFIED_NAME__REMAINING = eINSTANCE.getQualifiedName_Remaining();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.marte.vsl.vSL.impl.IntervalImpl <em>Interval</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.IntervalImpl
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl#getInterval()
+ * @generated
+ */
+ EClass INTERVAL = eINSTANCE.getInterval();
+
+ /**
+ * The meta object literal for the '<em><b>Is Lower Included</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute INTERVAL__IS_LOWER_INCLUDED = eINSTANCE.getInterval_IsLowerIncluded();
+
+ /**
+ * The meta object literal for the '<em><b>Lower</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference INTERVAL__LOWER = eINSTANCE.getInterval_Lower();
+
+ /**
+ * The meta object literal for the '<em><b>Upper</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference INTERVAL__UPPER = eINSTANCE.getInterval_Upper();
+
+ /**
+ * The meta object literal for the '<em><b>Is Upper Included</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute INTERVAL__IS_UPPER_INCLUDED = eINSTANCE.getInterval_IsUpperIncluded();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.marte.vsl.vSL.impl.CollectionOrTupleImpl <em>Collection Or Tuple</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.CollectionOrTupleImpl
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl#getCollectionOrTuple()
+ * @generated
+ */
+ EClass COLLECTION_OR_TUPLE = eINSTANCE.getCollectionOrTuple();
+
+ /**
+ * The meta object literal for the '<em><b>List Of Values</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference COLLECTION_OR_TUPLE__LIST_OF_VALUES = eINSTANCE.getCollectionOrTuple_ListOfValues();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.marte.vsl.vSL.impl.TupleImpl <em>Tuple</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.TupleImpl
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl#getTuple()
+ * @generated
+ */
+ EClass TUPLE = eINSTANCE.getTuple();
+
+ /**
+ * The meta object literal for the '<em><b>List Of Value Name Pairs</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference TUPLE__LIST_OF_VALUE_NAME_PAIRS = eINSTANCE.getTuple_ListOfValueNamePairs();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.marte.vsl.vSL.impl.ListOfValuesImpl <em>List Of Values</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.ListOfValuesImpl
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl#getListOfValues()
+ * @generated
+ */
+ EClass LIST_OF_VALUES = eINSTANCE.getListOfValues();
+
+ /**
+ * The meta object literal for the '<em><b>Values</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference LIST_OF_VALUES__VALUES = eINSTANCE.getListOfValues_Values();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.marte.vsl.vSL.impl.ListOfValueNamePairsImpl <em>List Of Value Name Pairs</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.ListOfValueNamePairsImpl
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl#getListOfValueNamePairs()
+ * @generated
+ */
+ EClass LIST_OF_VALUE_NAME_PAIRS = eINSTANCE.getListOfValueNamePairs();
+
+ /**
+ * The meta object literal for the '<em><b>Value Name Pairs</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference LIST_OF_VALUE_NAME_PAIRS__VALUE_NAME_PAIRS = eINSTANCE.getListOfValueNamePairs_ValueNamePairs();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.marte.vsl.vSL.impl.ValueNamePairImpl <em>Value Name Pair</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.ValueNamePairImpl
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl#getValueNamePair()
+ * @generated
+ */
+ EClass VALUE_NAME_PAIR = eINSTANCE.getValueNamePair();
+
+ /**
+ * The meta object literal for the '<em><b>Property</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference VALUE_NAME_PAIR__PROPERTY = eINSTANCE.getValueNamePair_Property();
+
+ /**
+ * The meta object literal for the '<em><b>Value</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference VALUE_NAME_PAIR__VALUE = eINSTANCE.getValueNamePair_Value();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.marte.vsl.vSL.impl.TimeExpressionImpl <em>Time Expression</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.TimeExpressionImpl
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl#getTimeExpression()
+ * @generated
+ */
+ EClass TIME_EXPRESSION = eINSTANCE.getTimeExpression();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.marte.vsl.vSL.impl.InstantObsExpressionImpl <em>Instant Obs Expression</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.InstantObsExpressionImpl
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl#getInstantObsExpression()
+ * @generated
+ */
+ EClass INSTANT_OBS_EXPRESSION = eINSTANCE.getInstantObsExpression();
+
+ /**
+ * The meta object literal for the '<em><b>Id</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference INSTANT_OBS_EXPRESSION__ID = eINSTANCE.getInstantObsExpression_Id();
+
+ /**
+ * The meta object literal for the '<em><b>Index</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference INSTANT_OBS_EXPRESSION__INDEX = eINSTANCE.getInstantObsExpression_Index();
+
+ /**
+ * The meta object literal for the '<em><b>Condition</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference INSTANT_OBS_EXPRESSION__CONDITION = eINSTANCE.getInstantObsExpression_Condition();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.marte.vsl.vSL.impl.InstantObsNameImpl <em>Instant Obs Name</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.InstantObsNameImpl
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl#getInstantObsName()
+ * @generated
+ */
+ EClass INSTANT_OBS_NAME = eINSTANCE.getInstantObsName();
+
+ /**
+ * The meta object literal for the '<em><b>Path</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference INSTANT_OBS_NAME__PATH = eINSTANCE.getInstantObsName_Path();
+
+ /**
+ * The meta object literal for the '<em><b>Instant Id</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference INSTANT_OBS_NAME__INSTANT_ID = eINSTANCE.getInstantObsName_InstantId();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.marte.vsl.vSL.impl.DurationObsExpressionImpl <em>Duration Obs Expression</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.DurationObsExpressionImpl
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl#getDurationObsExpression()
+ * @generated
+ */
+ EClass DURATION_OBS_EXPRESSION = eINSTANCE.getDurationObsExpression();
+
+ /**
+ * The meta object literal for the '<em><b>Id</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference DURATION_OBS_EXPRESSION__ID = eINSTANCE.getDurationObsExpression_Id();
+
+ /**
+ * The meta object literal for the '<em><b>Index</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference DURATION_OBS_EXPRESSION__INDEX = eINSTANCE.getDurationObsExpression_Index();
+
+ /**
+ * The meta object literal for the '<em><b>Condition</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference DURATION_OBS_EXPRESSION__CONDITION = eINSTANCE.getDurationObsExpression_Condition();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.marte.vsl.vSL.impl.DurationObsNameImpl <em>Duration Obs Name</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.DurationObsNameImpl
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl#getDurationObsName()
+ * @generated
+ */
+ EClass DURATION_OBS_NAME = eINSTANCE.getDurationObsName();
+
+ /**
+ * The meta object literal for the '<em><b>Path</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference DURATION_OBS_NAME__PATH = eINSTANCE.getDurationObsName_Path();
+
+ /**
+ * The meta object literal for the '<em><b>Duration Id</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference DURATION_OBS_NAME__DURATION_ID = eINSTANCE.getDurationObsName_DurationId();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.marte.vsl.vSL.impl.JitterExpImpl <em>Jitter Exp</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.JitterExpImpl
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl#getJitterExp()
+ * @generated
+ */
+ EClass JITTER_EXP = eINSTANCE.getJitterExp();
+
+ /**
+ * The meta object literal for the '<em><b>First Instant</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference JITTER_EXP__FIRST_INSTANT = eINSTANCE.getJitterExp_FirstInstant();
+
+ /**
+ * The meta object literal for the '<em><b>Second Instant</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference JITTER_EXP__SECOND_INSTANT = eINSTANCE.getJitterExp_SecondInstant();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.marte.vsl.vSL.impl.VariableDeclarationImpl <em>Variable Declaration</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VariableDeclarationImpl
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl#getVariableDeclaration()
+ * @generated
+ */
+ EClass VARIABLE_DECLARATION = eINSTANCE.getVariableDeclaration();
+
+ /**
+ * The meta object literal for the '<em><b>Variable Declaration</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute VARIABLE_DECLARATION__VARIABLE_DECLARATION = eINSTANCE.getVariableDeclaration_VariableDeclaration();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute VARIABLE_DECLARATION__NAME = eINSTANCE.getVariableDeclaration_Name();
+
+ /**
+ * The meta object literal for the '<em><b>Type</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference VARIABLE_DECLARATION__TYPE = eINSTANCE.getVariableDeclaration_Type();
+
+ /**
+ * The meta object literal for the '<em><b>Init Value</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference VARIABLE_DECLARATION__INIT_VALUE = eINSTANCE.getVariableDeclaration_InitValue();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.marte.vsl.vSL.impl.DataTypeNameImpl <em>Data Type Name</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.DataTypeNameImpl
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl#getDataTypeName()
+ * @generated
+ */
+ EClass DATA_TYPE_NAME = eINSTANCE.getDataTypeName();
+
+ /**
+ * The meta object literal for the '<em><b>Path</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference DATA_TYPE_NAME__PATH = eINSTANCE.getDataTypeName_Path();
+
+ /**
+ * The meta object literal for the '<em><b>Type</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference DATA_TYPE_NAME__TYPE = eINSTANCE.getDataTypeName_Type();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.marte.vsl.vSL.impl.NumberLiteralRuleImpl <em>Number Literal Rule</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.NumberLiteralRuleImpl
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl#getNumberLiteralRule()
+ * @generated
+ */
+ EClass NUMBER_LITERAL_RULE = eINSTANCE.getNumberLiteralRule();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.marte.vsl.vSL.impl.IntegerLiteralRuleImpl <em>Integer Literal Rule</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.IntegerLiteralRuleImpl
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl#getIntegerLiteralRule()
+ * @generated
+ */
+ EClass INTEGER_LITERAL_RULE = eINSTANCE.getIntegerLiteralRule();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.marte.vsl.vSL.impl.UnlimitedLiteralRuleImpl <em>Unlimited Literal Rule</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.UnlimitedLiteralRuleImpl
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl#getUnlimitedLiteralRule()
+ * @generated
+ */
+ EClass UNLIMITED_LITERAL_RULE = eINSTANCE.getUnlimitedLiteralRule();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.marte.vsl.vSL.impl.RealLiteralRuleImpl <em>Real Literal Rule</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.RealLiteralRuleImpl
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl#getRealLiteralRule()
+ * @generated
+ */
+ EClass REAL_LITERAL_RULE = eINSTANCE.getRealLiteralRule();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.marte.vsl.vSL.impl.DateTimeLiteralRuleImpl <em>Date Time Literal Rule</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.DateTimeLiteralRuleImpl
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl#getDateTimeLiteralRule()
+ * @generated
+ */
+ EClass DATE_TIME_LITERAL_RULE = eINSTANCE.getDateTimeLiteralRule();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.marte.vsl.vSL.impl.BooleanLiteralRuleImpl <em>Boolean Literal Rule</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.BooleanLiteralRuleImpl
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl#getBooleanLiteralRule()
+ * @generated
+ */
+ EClass BOOLEAN_LITERAL_RULE = eINSTANCE.getBooleanLiteralRule();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.marte.vsl.vSL.impl.NullLiteralRuleImpl <em>Null Literal Rule</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.NullLiteralRuleImpl
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl#getNullLiteralRule()
+ * @generated
+ */
+ EClass NULL_LITERAL_RULE = eINSTANCE.getNullLiteralRule();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.marte.vsl.vSL.impl.DefaultLiteralRuleImpl <em>Default Literal Rule</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.DefaultLiteralRuleImpl
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl#getDefaultLiteralRule()
+ * @generated
+ */
+ EClass DEFAULT_LITERAL_RULE = eINSTANCE.getDefaultLiteralRule();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.marte.vsl.vSL.impl.StringLiteralRuleImpl <em>String Literal Rule</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.StringLiteralRuleImpl
+ * @see org.eclipse.papyrus.marte.vsl.vSL.impl.VSLPackageImpl#getStringLiteralRule()
+ * @generated
+ */
+ EClass STRING_LITERAL_RULE = eINSTANCE.getStringLiteralRule();
+
+ }
+
+} //VSLPackage
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/ValueNamePair.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/ValueNamePair.java
new file mode 100644
index 00000000000..912abdada20
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/ValueNamePair.java
@@ -0,0 +1,113 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Value Name Pair</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.ValueNamePair#getProperty <em>Property</em>}</li>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.ValueNamePair#getValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getValueNamePair()
+ * @model
+ * @generated
+ */
+public interface ValueNamePair extends EObject
+{
+ /**
+ * Returns the value of the '<em><b>Property</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Property</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Property</em>' reference.
+ * @see #setProperty(Property)
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getValueNamePair_Property()
+ * @model
+ * @generated
+ */
+ Property getProperty();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.marte.vsl.vSL.ValueNamePair#getProperty <em>Property</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Property</em>' reference.
+ * @see #getProperty()
+ * @generated
+ */
+ void setProperty(Property value);
+
+ /**
+ * Returns the value of the '<em><b>Value</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>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>Value</em>' containment reference.
+ * @see #setValue(Expression)
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getValueNamePair_Value()
+ * @model containment="true"
+ * @generated
+ */
+ Expression getValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.marte.vsl.vSL.ValueNamePair#getValue <em>Value</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Value</em>' containment reference.
+ * @see #getValue()
+ * @generated
+ */
+ void setValue(Expression value);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;'"
+ * @generated
+ */
+ EObject getFilteredParentRule(EClass filter);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;'"
+ * @generated
+ */
+ Type getExpectedType();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;'"
+ * @generated
+ */
+ Element getContextElement();
+
+} // ValueNamePair
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/ValueSpecification.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/ValueSpecification.java
new file mode 100644
index 00000000000..59dc049b2a5
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/ValueSpecification.java
@@ -0,0 +1,53 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Value Specification</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getValueSpecification()
+ * @model
+ * @generated
+ */
+public interface ValueSpecification extends EObject
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;'"
+ * @generated
+ */
+ EObject getFilteredParentRule(EClass filter);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;'"
+ * @generated
+ */
+ Type getExpectedType();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;'"
+ * @generated
+ */
+ Element getContextElement();
+
+} // ValueSpecification
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/VariableDeclaration.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/VariableDeclaration.java
new file mode 100644
index 00000000000..6fdf11be076
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/VariableDeclaration.java
@@ -0,0 +1,166 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Variable Declaration</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.VariableDeclaration#getVariableDeclaration <em>Variable Declaration</em>}</li>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.VariableDeclaration#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.VariableDeclaration#getType <em>Type</em>}</li>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.VariableDeclaration#getInitValue <em>Init Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getVariableDeclaration()
+ * @model
+ * @generated
+ */
+public interface VariableDeclaration extends ValueSpecification
+{
+ /**
+ * Returns the value of the '<em><b>Variable Declaration</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Variable Declaration</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Variable Declaration</em>' attribute.
+ * @see #setVariableDeclaration(String)
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getVariableDeclaration_VariableDeclaration()
+ * @model
+ * @generated
+ */
+ String getVariableDeclaration();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.marte.vsl.vSL.VariableDeclaration#getVariableDeclaration <em>Variable Declaration</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Variable Declaration</em>' attribute.
+ * @see #getVariableDeclaration()
+ * @generated
+ */
+ void setVariableDeclaration(String value);
+
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>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>Name</em>' attribute.
+ * @see #setName(String)
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getVariableDeclaration_Name()
+ * @model
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.marte.vsl.vSL.VariableDeclaration#getName <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Name</em>' attribute.
+ * @see #getName()
+ * @generated
+ */
+ void setName(String 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(DataTypeName)
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getVariableDeclaration_Type()
+ * @model containment="true"
+ * @generated
+ */
+ DataTypeName getType();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.marte.vsl.vSL.VariableDeclaration#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(DataTypeName value);
+
+ /**
+ * Returns the value of the '<em><b>Init Value</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Init 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>Init Value</em>' containment reference.
+ * @see #setInitValue(Expression)
+ * @see org.eclipse.papyrus.marte.vsl.vSL.VSLPackage#getVariableDeclaration_InitValue()
+ * @model containment="true"
+ * @generated
+ */
+ Expression getInitValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.marte.vsl.vSL.VariableDeclaration#getInitValue <em>Init Value</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Init Value</em>' containment reference.
+ * @see #getInitValue()
+ * @generated
+ */
+ void setInitValue(Expression value);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;'"
+ * @generated
+ */
+ EObject getFilteredParentRule(EClass filter);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;'"
+ * @generated
+ */
+ Type getExpectedType();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;'"
+ * @generated
+ */
+ Element getContextElement();
+
+} // VariableDeclaration
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/AdditiveExpressionImpl.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/AdditiveExpressionImpl.java
new file mode 100644
index 00000000000..92e757ddfa6
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/AdditiveExpressionImpl.java
@@ -0,0 +1,259 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL.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.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EDataTypeEList;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.papyrus.marte.vsl.vSL.AdditiveExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.MultiplicativeExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.VSLPackage;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Additive Expression</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.impl.AdditiveExpressionImpl#getExp <em>Exp</em>}</li>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.impl.AdditiveExpressionImpl#getOp <em>Op</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class AdditiveExpressionImpl extends MinimalEObjectImpl.Container implements AdditiveExpression
+{
+ /**
+ * The cached value of the '{@link #getExp() <em>Exp</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getExp()
+ * @generated
+ * @ordered
+ */
+ protected EList<MultiplicativeExpression> exp;
+
+ /**
+ * The cached value of the '{@link #getOp() <em>Op</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getOp()
+ * @generated
+ * @ordered
+ */
+ protected EList<String> op;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected AdditiveExpressionImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return VSLPackage.Literals.ADDITIVE_EXPRESSION;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<MultiplicativeExpression> getExp()
+ {
+ if (exp == null)
+ {
+ exp = new EObjectContainmentEList<MultiplicativeExpression>(MultiplicativeExpression.class, this, VSLPackage.ADDITIVE_EXPRESSION__EXP);
+ }
+ return exp;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<String> getOp()
+ {
+ if (op == null)
+ {
+ op = new EDataTypeEList<String>(String.class, this, VSLPackage.ADDITIVE_EXPRESSION__OP);
+ }
+ return op;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EObject getFilteredParentRule(EClass filter)
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Type getExpectedType()
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Element getContextElement()
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.ADDITIVE_EXPRESSION__EXP:
+ return ((InternalEList<?>)getExp()).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 VSLPackage.ADDITIVE_EXPRESSION__EXP:
+ return getExp();
+ case VSLPackage.ADDITIVE_EXPRESSION__OP:
+ return getOp();
+ }
+ 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 VSLPackage.ADDITIVE_EXPRESSION__EXP:
+ getExp().clear();
+ getExp().addAll((Collection<? extends MultiplicativeExpression>)newValue);
+ return;
+ case VSLPackage.ADDITIVE_EXPRESSION__OP:
+ getOp().clear();
+ getOp().addAll((Collection<? extends String>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.ADDITIVE_EXPRESSION__EXP:
+ getExp().clear();
+ return;
+ case VSLPackage.ADDITIVE_EXPRESSION__OP:
+ getOp().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.ADDITIVE_EXPRESSION__EXP:
+ return exp != null && !exp.isEmpty();
+ case VSLPackage.ADDITIVE_EXPRESSION__OP:
+ return op != null && !op.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (op: ");
+ result.append(op);
+ result.append(')');
+ return result.toString();
+ }
+
+} //AdditiveExpressionImpl
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/AndOrXorExpressionImpl.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/AndOrXorExpressionImpl.java
new file mode 100644
index 00000000000..923fe2ef42d
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/AndOrXorExpressionImpl.java
@@ -0,0 +1,259 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL.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.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EDataTypeEList;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.papyrus.marte.vsl.vSL.AndOrXorExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.EqualityExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.VSLPackage;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>And Or Xor Expression</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.impl.AndOrXorExpressionImpl#getExp <em>Exp</em>}</li>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.impl.AndOrXorExpressionImpl#getOp <em>Op</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class AndOrXorExpressionImpl extends MinimalEObjectImpl.Container implements AndOrXorExpression
+{
+ /**
+ * The cached value of the '{@link #getExp() <em>Exp</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getExp()
+ * @generated
+ * @ordered
+ */
+ protected EList<EqualityExpression> exp;
+
+ /**
+ * The cached value of the '{@link #getOp() <em>Op</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getOp()
+ * @generated
+ * @ordered
+ */
+ protected EList<String> op;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected AndOrXorExpressionImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return VSLPackage.Literals.AND_OR_XOR_EXPRESSION;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<EqualityExpression> getExp()
+ {
+ if (exp == null)
+ {
+ exp = new EObjectContainmentEList<EqualityExpression>(EqualityExpression.class, this, VSLPackage.AND_OR_XOR_EXPRESSION__EXP);
+ }
+ return exp;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<String> getOp()
+ {
+ if (op == null)
+ {
+ op = new EDataTypeEList<String>(String.class, this, VSLPackage.AND_OR_XOR_EXPRESSION__OP);
+ }
+ return op;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EObject getFilteredParentRule(EClass filter)
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Type getExpectedType()
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Element getContextElement()
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.AND_OR_XOR_EXPRESSION__EXP:
+ return ((InternalEList<?>)getExp()).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 VSLPackage.AND_OR_XOR_EXPRESSION__EXP:
+ return getExp();
+ case VSLPackage.AND_OR_XOR_EXPRESSION__OP:
+ return getOp();
+ }
+ 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 VSLPackage.AND_OR_XOR_EXPRESSION__EXP:
+ getExp().clear();
+ getExp().addAll((Collection<? extends EqualityExpression>)newValue);
+ return;
+ case VSLPackage.AND_OR_XOR_EXPRESSION__OP:
+ getOp().clear();
+ getOp().addAll((Collection<? extends String>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.AND_OR_XOR_EXPRESSION__EXP:
+ getExp().clear();
+ return;
+ case VSLPackage.AND_OR_XOR_EXPRESSION__OP:
+ getOp().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.AND_OR_XOR_EXPRESSION__EXP:
+ return exp != null && !exp.isEmpty();
+ case VSLPackage.AND_OR_XOR_EXPRESSION__OP:
+ return op != null && !op.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (op: ");
+ result.append(op);
+ result.append(')');
+ return result.toString();
+ }
+
+} //AndOrXorExpressionImpl
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/BooleanLiteralRuleImpl.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/BooleanLiteralRuleImpl.java
new file mode 100644
index 00000000000..03604b69779
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/BooleanLiteralRuleImpl.java
@@ -0,0 +1,80 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.papyrus.marte.vsl.vSL.BooleanLiteralRule;
+import org.eclipse.papyrus.marte.vsl.vSL.VSLPackage;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Boolean Literal Rule</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class BooleanLiteralRuleImpl extends LiteralImpl implements BooleanLiteralRule
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected BooleanLiteralRuleImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return VSLPackage.Literals.BOOLEAN_LITERAL_RULE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EObject getFilteredParentRule(EClass filter)
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Type getExpectedType()
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Element getContextElement()
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;
+ }
+
+} //BooleanLiteralRuleImpl
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/CollectionOrTupleImpl.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/CollectionOrTupleImpl.java
new file mode 100644
index 00000000000..f42a53ca41b
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/CollectionOrTupleImpl.java
@@ -0,0 +1,231 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL.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.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.marte.vsl.vSL.CollectionOrTuple;
+import org.eclipse.papyrus.marte.vsl.vSL.ListOfValues;
+import org.eclipse.papyrus.marte.vsl.vSL.VSLPackage;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Collection Or Tuple</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.impl.CollectionOrTupleImpl#getListOfValues <em>List Of Values</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class CollectionOrTupleImpl extends ValueSpecificationImpl implements CollectionOrTuple
+{
+ /**
+ * The cached value of the '{@link #getListOfValues() <em>List Of Values</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getListOfValues()
+ * @generated
+ * @ordered
+ */
+ protected ListOfValues listOfValues;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected CollectionOrTupleImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return VSLPackage.Literals.COLLECTION_OR_TUPLE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ListOfValues getListOfValues()
+ {
+ return listOfValues;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetListOfValues(ListOfValues newListOfValues, NotificationChain msgs)
+ {
+ ListOfValues oldListOfValues = listOfValues;
+ listOfValues = newListOfValues;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, VSLPackage.COLLECTION_OR_TUPLE__LIST_OF_VALUES, oldListOfValues, newListOfValues);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setListOfValues(ListOfValues newListOfValues)
+ {
+ if (newListOfValues != listOfValues)
+ {
+ NotificationChain msgs = null;
+ if (listOfValues != null)
+ msgs = ((InternalEObject)listOfValues).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - VSLPackage.COLLECTION_OR_TUPLE__LIST_OF_VALUES, null, msgs);
+ if (newListOfValues != null)
+ msgs = ((InternalEObject)newListOfValues).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - VSLPackage.COLLECTION_OR_TUPLE__LIST_OF_VALUES, null, msgs);
+ msgs = basicSetListOfValues(newListOfValues, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, VSLPackage.COLLECTION_OR_TUPLE__LIST_OF_VALUES, newListOfValues, newListOfValues));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EObject getFilteredParentRule(EClass filter)
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Type getExpectedType()
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Element getContextElement()
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.COLLECTION_OR_TUPLE__LIST_OF_VALUES:
+ return basicSetListOfValues(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 VSLPackage.COLLECTION_OR_TUPLE__LIST_OF_VALUES:
+ return getListOfValues();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.COLLECTION_OR_TUPLE__LIST_OF_VALUES:
+ setListOfValues((ListOfValues)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.COLLECTION_OR_TUPLE__LIST_OF_VALUES:
+ setListOfValues((ListOfValues)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.COLLECTION_OR_TUPLE__LIST_OF_VALUES:
+ return listOfValues != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //CollectionOrTupleImpl
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/ConditionalExpressionImpl.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/ConditionalExpressionImpl.java
new file mode 100644
index 00000000000..d617402113d
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/ConditionalExpressionImpl.java
@@ -0,0 +1,259 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL.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.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EDataTypeEList;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.papyrus.marte.vsl.vSL.AdditiveExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.ConditionalExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.VSLPackage;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Conditional Expression</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.impl.ConditionalExpressionImpl#getExp <em>Exp</em>}</li>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.impl.ConditionalExpressionImpl#getOp <em>Op</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ConditionalExpressionImpl extends MinimalEObjectImpl.Container implements ConditionalExpression
+{
+ /**
+ * The cached value of the '{@link #getExp() <em>Exp</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getExp()
+ * @generated
+ * @ordered
+ */
+ protected EList<AdditiveExpression> exp;
+
+ /**
+ * The cached value of the '{@link #getOp() <em>Op</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getOp()
+ * @generated
+ * @ordered
+ */
+ protected EList<String> op;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ConditionalExpressionImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return VSLPackage.Literals.CONDITIONAL_EXPRESSION;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<AdditiveExpression> getExp()
+ {
+ if (exp == null)
+ {
+ exp = new EObjectContainmentEList<AdditiveExpression>(AdditiveExpression.class, this, VSLPackage.CONDITIONAL_EXPRESSION__EXP);
+ }
+ return exp;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<String> getOp()
+ {
+ if (op == null)
+ {
+ op = new EDataTypeEList<String>(String.class, this, VSLPackage.CONDITIONAL_EXPRESSION__OP);
+ }
+ return op;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EObject getFilteredParentRule(EClass filter)
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Type getExpectedType()
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Element getContextElement()
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.CONDITIONAL_EXPRESSION__EXP:
+ return ((InternalEList<?>)getExp()).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 VSLPackage.CONDITIONAL_EXPRESSION__EXP:
+ return getExp();
+ case VSLPackage.CONDITIONAL_EXPRESSION__OP:
+ return getOp();
+ }
+ 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 VSLPackage.CONDITIONAL_EXPRESSION__EXP:
+ getExp().clear();
+ getExp().addAll((Collection<? extends AdditiveExpression>)newValue);
+ return;
+ case VSLPackage.CONDITIONAL_EXPRESSION__OP:
+ getOp().clear();
+ getOp().addAll((Collection<? extends String>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.CONDITIONAL_EXPRESSION__EXP:
+ getExp().clear();
+ return;
+ case VSLPackage.CONDITIONAL_EXPRESSION__OP:
+ getOp().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.CONDITIONAL_EXPRESSION__EXP:
+ return exp != null && !exp.isEmpty();
+ case VSLPackage.CONDITIONAL_EXPRESSION__OP:
+ return op != null && !op.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (op: ");
+ result.append(op);
+ result.append(')');
+ return result.toString();
+ }
+
+} //ConditionalExpressionImpl
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/DataTypeNameImpl.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/DataTypeNameImpl.java
new file mode 100644
index 00000000000..3294e3bf97c
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/DataTypeNameImpl.java
@@ -0,0 +1,298 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL.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.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.papyrus.marte.vsl.vSL.DataTypeName;
+import org.eclipse.papyrus.marte.vsl.vSL.QualifiedName;
+import org.eclipse.papyrus.marte.vsl.vSL.VSLPackage;
+
+import org.eclipse.uml2.uml.DataType;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Data Type Name</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.impl.DataTypeNameImpl#getPath <em>Path</em>}</li>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.impl.DataTypeNameImpl#getType <em>Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class DataTypeNameImpl extends MinimalEObjectImpl.Container implements DataTypeName
+{
+ /**
+ * The cached value of the '{@link #getPath() <em>Path</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPath()
+ * @generated
+ * @ordered
+ */
+ protected QualifiedName path;
+
+ /**
+ * The cached value of the '{@link #getType() <em>Type</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getType()
+ * @generated
+ * @ordered
+ */
+ protected DataType type;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected DataTypeNameImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return VSLPackage.Literals.DATA_TYPE_NAME;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public QualifiedName getPath()
+ {
+ return path;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetPath(QualifiedName newPath, NotificationChain msgs)
+ {
+ QualifiedName oldPath = path;
+ path = newPath;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, VSLPackage.DATA_TYPE_NAME__PATH, oldPath, newPath);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setPath(QualifiedName newPath)
+ {
+ if (newPath != path)
+ {
+ NotificationChain msgs = null;
+ if (path != null)
+ msgs = ((InternalEObject)path).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - VSLPackage.DATA_TYPE_NAME__PATH, null, msgs);
+ if (newPath != null)
+ msgs = ((InternalEObject)newPath).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - VSLPackage.DATA_TYPE_NAME__PATH, null, msgs);
+ msgs = basicSetPath(newPath, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, VSLPackage.DATA_TYPE_NAME__PATH, newPath, newPath));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DataType getType()
+ {
+ if (type != null && type.eIsProxy())
+ {
+ InternalEObject oldType = (InternalEObject)type;
+ type = (DataType)eResolveProxy(oldType);
+ if (type != oldType)
+ {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, VSLPackage.DATA_TYPE_NAME__TYPE, oldType, type));
+ }
+ }
+ return type;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DataType basicGetType()
+ {
+ return type;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setType(DataType newType)
+ {
+ DataType oldType = type;
+ type = newType;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, VSLPackage.DATA_TYPE_NAME__TYPE, oldType, type));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EObject getFilteredParentRule(EClass filter)
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Type getExpectedType()
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Element getContextElement()
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.DATA_TYPE_NAME__PATH:
+ return basicSetPath(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 VSLPackage.DATA_TYPE_NAME__PATH:
+ return getPath();
+ case VSLPackage.DATA_TYPE_NAME__TYPE:
+ if (resolve) return getType();
+ return basicGetType();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.DATA_TYPE_NAME__PATH:
+ setPath((QualifiedName)newValue);
+ return;
+ case VSLPackage.DATA_TYPE_NAME__TYPE:
+ setType((DataType)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.DATA_TYPE_NAME__PATH:
+ setPath((QualifiedName)null);
+ return;
+ case VSLPackage.DATA_TYPE_NAME__TYPE:
+ setType((DataType)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.DATA_TYPE_NAME__PATH:
+ return path != null;
+ case VSLPackage.DATA_TYPE_NAME__TYPE:
+ return type != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //DataTypeNameImpl
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/DateTimeLiteralRuleImpl.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/DateTimeLiteralRuleImpl.java
new file mode 100644
index 00000000000..b56ebba111f
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/DateTimeLiteralRuleImpl.java
@@ -0,0 +1,80 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.papyrus.marte.vsl.vSL.DateTimeLiteralRule;
+import org.eclipse.papyrus.marte.vsl.vSL.VSLPackage;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Date Time Literal Rule</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class DateTimeLiteralRuleImpl extends LiteralImpl implements DateTimeLiteralRule
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected DateTimeLiteralRuleImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return VSLPackage.Literals.DATE_TIME_LITERAL_RULE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EObject getFilteredParentRule(EClass filter)
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Type getExpectedType()
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Element getContextElement()
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;
+ }
+
+} //DateTimeLiteralRuleImpl
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/DefaultLiteralRuleImpl.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/DefaultLiteralRuleImpl.java
new file mode 100644
index 00000000000..f634036140d
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/DefaultLiteralRuleImpl.java
@@ -0,0 +1,80 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.papyrus.marte.vsl.vSL.DefaultLiteralRule;
+import org.eclipse.papyrus.marte.vsl.vSL.VSLPackage;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Default Literal Rule</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class DefaultLiteralRuleImpl extends LiteralImpl implements DefaultLiteralRule
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected DefaultLiteralRuleImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return VSLPackage.Literals.DEFAULT_LITERAL_RULE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EObject getFilteredParentRule(EClass filter)
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Type getExpectedType()
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Element getContextElement()
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;
+ }
+
+} //DefaultLiteralRuleImpl
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/DurationObsExpressionImpl.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/DurationObsExpressionImpl.java
new file mode 100644
index 00000000000..80ade9220fc
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/DurationObsExpressionImpl.java
@@ -0,0 +1,374 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL.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.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.marte.vsl.vSL.DurationObsExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.DurationObsName;
+import org.eclipse.papyrus.marte.vsl.vSL.Expression;
+import org.eclipse.papyrus.marte.vsl.vSL.VSLPackage;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Duration Obs Expression</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.impl.DurationObsExpressionImpl#getId <em>Id</em>}</li>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.impl.DurationObsExpressionImpl#getIndex <em>Index</em>}</li>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.impl.DurationObsExpressionImpl#getCondition <em>Condition</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class DurationObsExpressionImpl extends TimeExpressionImpl implements DurationObsExpression
+{
+ /**
+ * The cached value of the '{@link #getId() <em>Id</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getId()
+ * @generated
+ * @ordered
+ */
+ protected DurationObsName id;
+
+ /**
+ * The cached value of the '{@link #getIndex() <em>Index</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getIndex()
+ * @generated
+ * @ordered
+ */
+ protected Expression index;
+
+ /**
+ * The cached value of the '{@link #getCondition() <em>Condition</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getCondition()
+ * @generated
+ * @ordered
+ */
+ protected Expression condition;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected DurationObsExpressionImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return VSLPackage.Literals.DURATION_OBS_EXPRESSION;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DurationObsName getId()
+ {
+ return id;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetId(DurationObsName newId, NotificationChain msgs)
+ {
+ DurationObsName oldId = id;
+ id = newId;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, VSLPackage.DURATION_OBS_EXPRESSION__ID, oldId, newId);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setId(DurationObsName newId)
+ {
+ if (newId != id)
+ {
+ NotificationChain msgs = null;
+ if (id != null)
+ msgs = ((InternalEObject)id).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - VSLPackage.DURATION_OBS_EXPRESSION__ID, null, msgs);
+ if (newId != null)
+ msgs = ((InternalEObject)newId).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - VSLPackage.DURATION_OBS_EXPRESSION__ID, null, msgs);
+ msgs = basicSetId(newId, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, VSLPackage.DURATION_OBS_EXPRESSION__ID, newId, newId));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Expression getIndex()
+ {
+ return index;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetIndex(Expression newIndex, NotificationChain msgs)
+ {
+ Expression oldIndex = index;
+ index = newIndex;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, VSLPackage.DURATION_OBS_EXPRESSION__INDEX, oldIndex, newIndex);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setIndex(Expression newIndex)
+ {
+ if (newIndex != index)
+ {
+ NotificationChain msgs = null;
+ if (index != null)
+ msgs = ((InternalEObject)index).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - VSLPackage.DURATION_OBS_EXPRESSION__INDEX, null, msgs);
+ if (newIndex != null)
+ msgs = ((InternalEObject)newIndex).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - VSLPackage.DURATION_OBS_EXPRESSION__INDEX, null, msgs);
+ msgs = basicSetIndex(newIndex, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, VSLPackage.DURATION_OBS_EXPRESSION__INDEX, newIndex, newIndex));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Expression getCondition()
+ {
+ return condition;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetCondition(Expression newCondition, NotificationChain msgs)
+ {
+ Expression oldCondition = condition;
+ condition = newCondition;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, VSLPackage.DURATION_OBS_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(Expression newCondition)
+ {
+ if (newCondition != condition)
+ {
+ NotificationChain msgs = null;
+ if (condition != null)
+ msgs = ((InternalEObject)condition).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - VSLPackage.DURATION_OBS_EXPRESSION__CONDITION, null, msgs);
+ if (newCondition != null)
+ msgs = ((InternalEObject)newCondition).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - VSLPackage.DURATION_OBS_EXPRESSION__CONDITION, null, msgs);
+ msgs = basicSetCondition(newCondition, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, VSLPackage.DURATION_OBS_EXPRESSION__CONDITION, newCondition, newCondition));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EObject getFilteredParentRule(EClass filter)
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Type getExpectedType()
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Element getContextElement()
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.DURATION_OBS_EXPRESSION__ID:
+ return basicSetId(null, msgs);
+ case VSLPackage.DURATION_OBS_EXPRESSION__INDEX:
+ return basicSetIndex(null, msgs);
+ case VSLPackage.DURATION_OBS_EXPRESSION__CONDITION:
+ return basicSetCondition(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 VSLPackage.DURATION_OBS_EXPRESSION__ID:
+ return getId();
+ case VSLPackage.DURATION_OBS_EXPRESSION__INDEX:
+ return getIndex();
+ case VSLPackage.DURATION_OBS_EXPRESSION__CONDITION:
+ return getCondition();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.DURATION_OBS_EXPRESSION__ID:
+ setId((DurationObsName)newValue);
+ return;
+ case VSLPackage.DURATION_OBS_EXPRESSION__INDEX:
+ setIndex((Expression)newValue);
+ return;
+ case VSLPackage.DURATION_OBS_EXPRESSION__CONDITION:
+ setCondition((Expression)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.DURATION_OBS_EXPRESSION__ID:
+ setId((DurationObsName)null);
+ return;
+ case VSLPackage.DURATION_OBS_EXPRESSION__INDEX:
+ setIndex((Expression)null);
+ return;
+ case VSLPackage.DURATION_OBS_EXPRESSION__CONDITION:
+ setCondition((Expression)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.DURATION_OBS_EXPRESSION__ID:
+ return id != null;
+ case VSLPackage.DURATION_OBS_EXPRESSION__INDEX:
+ return index != null;
+ case VSLPackage.DURATION_OBS_EXPRESSION__CONDITION:
+ return condition != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //DurationObsExpressionImpl
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/DurationObsNameImpl.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/DurationObsNameImpl.java
new file mode 100644
index 00000000000..5c3aefac4dc
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/DurationObsNameImpl.java
@@ -0,0 +1,298 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL.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.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.papyrus.marte.vsl.vSL.DurationObsName;
+import org.eclipse.papyrus.marte.vsl.vSL.QualifiedName;
+import org.eclipse.papyrus.marte.vsl.vSL.VSLPackage;
+
+import org.eclipse.uml2.uml.DurationObservation;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Duration Obs Name</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.impl.DurationObsNameImpl#getPath <em>Path</em>}</li>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.impl.DurationObsNameImpl#getDurationId <em>Duration Id</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class DurationObsNameImpl extends MinimalEObjectImpl.Container implements DurationObsName
+{
+ /**
+ * The cached value of the '{@link #getPath() <em>Path</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPath()
+ * @generated
+ * @ordered
+ */
+ protected QualifiedName path;
+
+ /**
+ * The cached value of the '{@link #getDurationId() <em>Duration Id</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDurationId()
+ * @generated
+ * @ordered
+ */
+ protected DurationObservation durationId;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected DurationObsNameImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return VSLPackage.Literals.DURATION_OBS_NAME;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public QualifiedName getPath()
+ {
+ return path;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetPath(QualifiedName newPath, NotificationChain msgs)
+ {
+ QualifiedName oldPath = path;
+ path = newPath;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, VSLPackage.DURATION_OBS_NAME__PATH, oldPath, newPath);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setPath(QualifiedName newPath)
+ {
+ if (newPath != path)
+ {
+ NotificationChain msgs = null;
+ if (path != null)
+ msgs = ((InternalEObject)path).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - VSLPackage.DURATION_OBS_NAME__PATH, null, msgs);
+ if (newPath != null)
+ msgs = ((InternalEObject)newPath).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - VSLPackage.DURATION_OBS_NAME__PATH, null, msgs);
+ msgs = basicSetPath(newPath, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, VSLPackage.DURATION_OBS_NAME__PATH, newPath, newPath));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DurationObservation getDurationId()
+ {
+ if (durationId != null && durationId.eIsProxy())
+ {
+ InternalEObject oldDurationId = (InternalEObject)durationId;
+ durationId = (DurationObservation)eResolveProxy(oldDurationId);
+ if (durationId != oldDurationId)
+ {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, VSLPackage.DURATION_OBS_NAME__DURATION_ID, oldDurationId, durationId));
+ }
+ }
+ return durationId;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DurationObservation basicGetDurationId()
+ {
+ return durationId;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setDurationId(DurationObservation newDurationId)
+ {
+ DurationObservation oldDurationId = durationId;
+ durationId = newDurationId;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, VSLPackage.DURATION_OBS_NAME__DURATION_ID, oldDurationId, durationId));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EObject getFilteredParentRule(EClass filter)
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Type getExpectedType()
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Element getContextElement()
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.DURATION_OBS_NAME__PATH:
+ return basicSetPath(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 VSLPackage.DURATION_OBS_NAME__PATH:
+ return getPath();
+ case VSLPackage.DURATION_OBS_NAME__DURATION_ID:
+ if (resolve) return getDurationId();
+ return basicGetDurationId();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.DURATION_OBS_NAME__PATH:
+ setPath((QualifiedName)newValue);
+ return;
+ case VSLPackage.DURATION_OBS_NAME__DURATION_ID:
+ setDurationId((DurationObservation)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.DURATION_OBS_NAME__PATH:
+ setPath((QualifiedName)null);
+ return;
+ case VSLPackage.DURATION_OBS_NAME__DURATION_ID:
+ setDurationId((DurationObservation)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.DURATION_OBS_NAME__PATH:
+ return path != null;
+ case VSLPackage.DURATION_OBS_NAME__DURATION_ID:
+ return durationId != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //DurationObsNameImpl
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/EqualityExpressionImpl.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/EqualityExpressionImpl.java
new file mode 100644
index 00000000000..bd467ac835d
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/EqualityExpressionImpl.java
@@ -0,0 +1,259 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL.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.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EDataTypeEList;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.papyrus.marte.vsl.vSL.EqualityExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.RelationalExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.VSLPackage;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Equality Expression</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.impl.EqualityExpressionImpl#getExp <em>Exp</em>}</li>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.impl.EqualityExpressionImpl#getOp <em>Op</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class EqualityExpressionImpl extends MinimalEObjectImpl.Container implements EqualityExpression
+{
+ /**
+ * The cached value of the '{@link #getExp() <em>Exp</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getExp()
+ * @generated
+ * @ordered
+ */
+ protected EList<RelationalExpression> exp;
+
+ /**
+ * The cached value of the '{@link #getOp() <em>Op</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getOp()
+ * @generated
+ * @ordered
+ */
+ protected EList<String> op;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected EqualityExpressionImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return VSLPackage.Literals.EQUALITY_EXPRESSION;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<RelationalExpression> getExp()
+ {
+ if (exp == null)
+ {
+ exp = new EObjectContainmentEList<RelationalExpression>(RelationalExpression.class, this, VSLPackage.EQUALITY_EXPRESSION__EXP);
+ }
+ return exp;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<String> getOp()
+ {
+ if (op == null)
+ {
+ op = new EDataTypeEList<String>(String.class, this, VSLPackage.EQUALITY_EXPRESSION__OP);
+ }
+ return op;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EObject getFilteredParentRule(EClass filter)
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Type getExpectedType()
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Element getContextElement()
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.EQUALITY_EXPRESSION__EXP:
+ return ((InternalEList<?>)getExp()).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 VSLPackage.EQUALITY_EXPRESSION__EXP:
+ return getExp();
+ case VSLPackage.EQUALITY_EXPRESSION__OP:
+ return getOp();
+ }
+ 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 VSLPackage.EQUALITY_EXPRESSION__EXP:
+ getExp().clear();
+ getExp().addAll((Collection<? extends RelationalExpression>)newValue);
+ return;
+ case VSLPackage.EQUALITY_EXPRESSION__OP:
+ getOp().clear();
+ getOp().addAll((Collection<? extends String>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.EQUALITY_EXPRESSION__EXP:
+ getExp().clear();
+ return;
+ case VSLPackage.EQUALITY_EXPRESSION__OP:
+ getOp().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.EQUALITY_EXPRESSION__EXP:
+ return exp != null && !exp.isEmpty();
+ case VSLPackage.EQUALITY_EXPRESSION__OP:
+ return op != null && !op.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (op: ");
+ result.append(op);
+ result.append(')');
+ return result.toString();
+ }
+
+} //EqualityExpressionImpl
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/ExpressionImpl.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/ExpressionImpl.java
new file mode 100644
index 00000000000..b2785f9d08c
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/ExpressionImpl.java
@@ -0,0 +1,231 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL.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.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.marte.vsl.vSL.AndOrXorExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.Expression;
+import org.eclipse.papyrus.marte.vsl.vSL.VSLPackage;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Expression</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.impl.ExpressionImpl#getExp <em>Exp</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ExpressionImpl extends ValueSpecificationImpl implements Expression
+{
+ /**
+ * The cached value of the '{@link #getExp() <em>Exp</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getExp()
+ * @generated
+ * @ordered
+ */
+ protected AndOrXorExpression exp;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ExpressionImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return VSLPackage.Literals.EXPRESSION;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public AndOrXorExpression getExp()
+ {
+ return exp;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetExp(AndOrXorExpression newExp, NotificationChain msgs)
+ {
+ AndOrXorExpression oldExp = exp;
+ exp = newExp;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, VSLPackage.EXPRESSION__EXP, oldExp, newExp);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setExp(AndOrXorExpression newExp)
+ {
+ if (newExp != exp)
+ {
+ NotificationChain msgs = null;
+ if (exp != null)
+ msgs = ((InternalEObject)exp).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - VSLPackage.EXPRESSION__EXP, null, msgs);
+ if (newExp != null)
+ msgs = ((InternalEObject)newExp).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - VSLPackage.EXPRESSION__EXP, null, msgs);
+ msgs = basicSetExp(newExp, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, VSLPackage.EXPRESSION__EXP, newExp, newExp));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EObject getFilteredParentRule(EClass filter)
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Type getExpectedType()
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Element getContextElement()
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.EXPRESSION__EXP:
+ return basicSetExp(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 VSLPackage.EXPRESSION__EXP:
+ return getExp();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.EXPRESSION__EXP:
+ setExp((AndOrXorExpression)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.EXPRESSION__EXP:
+ setExp((AndOrXorExpression)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.EXPRESSION__EXP:
+ return exp != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //ExpressionImpl
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/InstantObsExpressionImpl.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/InstantObsExpressionImpl.java
new file mode 100644
index 00000000000..aa2cbd05373
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/InstantObsExpressionImpl.java
@@ -0,0 +1,374 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL.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.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.marte.vsl.vSL.Expression;
+import org.eclipse.papyrus.marte.vsl.vSL.InstantObsExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.InstantObsName;
+import org.eclipse.papyrus.marte.vsl.vSL.VSLPackage;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Instant Obs Expression</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.impl.InstantObsExpressionImpl#getId <em>Id</em>}</li>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.impl.InstantObsExpressionImpl#getIndex <em>Index</em>}</li>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.impl.InstantObsExpressionImpl#getCondition <em>Condition</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class InstantObsExpressionImpl extends TimeExpressionImpl implements InstantObsExpression
+{
+ /**
+ * The cached value of the '{@link #getId() <em>Id</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getId()
+ * @generated
+ * @ordered
+ */
+ protected InstantObsName id;
+
+ /**
+ * The cached value of the '{@link #getIndex() <em>Index</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getIndex()
+ * @generated
+ * @ordered
+ */
+ protected Expression index;
+
+ /**
+ * The cached value of the '{@link #getCondition() <em>Condition</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getCondition()
+ * @generated
+ * @ordered
+ */
+ protected Expression condition;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected InstantObsExpressionImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return VSLPackage.Literals.INSTANT_OBS_EXPRESSION;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public InstantObsName getId()
+ {
+ return id;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetId(InstantObsName newId, NotificationChain msgs)
+ {
+ InstantObsName oldId = id;
+ id = newId;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, VSLPackage.INSTANT_OBS_EXPRESSION__ID, oldId, newId);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setId(InstantObsName newId)
+ {
+ if (newId != id)
+ {
+ NotificationChain msgs = null;
+ if (id != null)
+ msgs = ((InternalEObject)id).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - VSLPackage.INSTANT_OBS_EXPRESSION__ID, null, msgs);
+ if (newId != null)
+ msgs = ((InternalEObject)newId).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - VSLPackage.INSTANT_OBS_EXPRESSION__ID, null, msgs);
+ msgs = basicSetId(newId, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, VSLPackage.INSTANT_OBS_EXPRESSION__ID, newId, newId));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Expression getIndex()
+ {
+ return index;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetIndex(Expression newIndex, NotificationChain msgs)
+ {
+ Expression oldIndex = index;
+ index = newIndex;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, VSLPackage.INSTANT_OBS_EXPRESSION__INDEX, oldIndex, newIndex);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setIndex(Expression newIndex)
+ {
+ if (newIndex != index)
+ {
+ NotificationChain msgs = null;
+ if (index != null)
+ msgs = ((InternalEObject)index).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - VSLPackage.INSTANT_OBS_EXPRESSION__INDEX, null, msgs);
+ if (newIndex != null)
+ msgs = ((InternalEObject)newIndex).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - VSLPackage.INSTANT_OBS_EXPRESSION__INDEX, null, msgs);
+ msgs = basicSetIndex(newIndex, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, VSLPackage.INSTANT_OBS_EXPRESSION__INDEX, newIndex, newIndex));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Expression getCondition()
+ {
+ return condition;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetCondition(Expression newCondition, NotificationChain msgs)
+ {
+ Expression oldCondition = condition;
+ condition = newCondition;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, VSLPackage.INSTANT_OBS_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(Expression newCondition)
+ {
+ if (newCondition != condition)
+ {
+ NotificationChain msgs = null;
+ if (condition != null)
+ msgs = ((InternalEObject)condition).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - VSLPackage.INSTANT_OBS_EXPRESSION__CONDITION, null, msgs);
+ if (newCondition != null)
+ msgs = ((InternalEObject)newCondition).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - VSLPackage.INSTANT_OBS_EXPRESSION__CONDITION, null, msgs);
+ msgs = basicSetCondition(newCondition, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, VSLPackage.INSTANT_OBS_EXPRESSION__CONDITION, newCondition, newCondition));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EObject getFilteredParentRule(EClass filter)
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Type getExpectedType()
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Element getContextElement()
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.INSTANT_OBS_EXPRESSION__ID:
+ return basicSetId(null, msgs);
+ case VSLPackage.INSTANT_OBS_EXPRESSION__INDEX:
+ return basicSetIndex(null, msgs);
+ case VSLPackage.INSTANT_OBS_EXPRESSION__CONDITION:
+ return basicSetCondition(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 VSLPackage.INSTANT_OBS_EXPRESSION__ID:
+ return getId();
+ case VSLPackage.INSTANT_OBS_EXPRESSION__INDEX:
+ return getIndex();
+ case VSLPackage.INSTANT_OBS_EXPRESSION__CONDITION:
+ return getCondition();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.INSTANT_OBS_EXPRESSION__ID:
+ setId((InstantObsName)newValue);
+ return;
+ case VSLPackage.INSTANT_OBS_EXPRESSION__INDEX:
+ setIndex((Expression)newValue);
+ return;
+ case VSLPackage.INSTANT_OBS_EXPRESSION__CONDITION:
+ setCondition((Expression)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.INSTANT_OBS_EXPRESSION__ID:
+ setId((InstantObsName)null);
+ return;
+ case VSLPackage.INSTANT_OBS_EXPRESSION__INDEX:
+ setIndex((Expression)null);
+ return;
+ case VSLPackage.INSTANT_OBS_EXPRESSION__CONDITION:
+ setCondition((Expression)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.INSTANT_OBS_EXPRESSION__ID:
+ return id != null;
+ case VSLPackage.INSTANT_OBS_EXPRESSION__INDEX:
+ return index != null;
+ case VSLPackage.INSTANT_OBS_EXPRESSION__CONDITION:
+ return condition != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //InstantObsExpressionImpl
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/InstantObsNameImpl.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/InstantObsNameImpl.java
new file mode 100644
index 00000000000..6404dc435e5
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/InstantObsNameImpl.java
@@ -0,0 +1,298 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL.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.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.papyrus.marte.vsl.vSL.InstantObsName;
+import org.eclipse.papyrus.marte.vsl.vSL.QualifiedName;
+import org.eclipse.papyrus.marte.vsl.vSL.VSLPackage;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.TimeObservation;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Instant Obs Name</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.impl.InstantObsNameImpl#getPath <em>Path</em>}</li>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.impl.InstantObsNameImpl#getInstantId <em>Instant Id</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class InstantObsNameImpl extends MinimalEObjectImpl.Container implements InstantObsName
+{
+ /**
+ * The cached value of the '{@link #getPath() <em>Path</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPath()
+ * @generated
+ * @ordered
+ */
+ protected QualifiedName path;
+
+ /**
+ * The cached value of the '{@link #getInstantId() <em>Instant Id</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getInstantId()
+ * @generated
+ * @ordered
+ */
+ protected TimeObservation instantId;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected InstantObsNameImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return VSLPackage.Literals.INSTANT_OBS_NAME;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public QualifiedName getPath()
+ {
+ return path;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetPath(QualifiedName newPath, NotificationChain msgs)
+ {
+ QualifiedName oldPath = path;
+ path = newPath;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, VSLPackage.INSTANT_OBS_NAME__PATH, oldPath, newPath);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setPath(QualifiedName newPath)
+ {
+ if (newPath != path)
+ {
+ NotificationChain msgs = null;
+ if (path != null)
+ msgs = ((InternalEObject)path).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - VSLPackage.INSTANT_OBS_NAME__PATH, null, msgs);
+ if (newPath != null)
+ msgs = ((InternalEObject)newPath).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - VSLPackage.INSTANT_OBS_NAME__PATH, null, msgs);
+ msgs = basicSetPath(newPath, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, VSLPackage.INSTANT_OBS_NAME__PATH, newPath, newPath));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TimeObservation getInstantId()
+ {
+ if (instantId != null && instantId.eIsProxy())
+ {
+ InternalEObject oldInstantId = (InternalEObject)instantId;
+ instantId = (TimeObservation)eResolveProxy(oldInstantId);
+ if (instantId != oldInstantId)
+ {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, VSLPackage.INSTANT_OBS_NAME__INSTANT_ID, oldInstantId, instantId));
+ }
+ }
+ return instantId;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TimeObservation basicGetInstantId()
+ {
+ return instantId;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setInstantId(TimeObservation newInstantId)
+ {
+ TimeObservation oldInstantId = instantId;
+ instantId = newInstantId;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, VSLPackage.INSTANT_OBS_NAME__INSTANT_ID, oldInstantId, instantId));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EObject getFilteredParentRule(EClass filter)
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Type getExpectedType()
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Element getContextElement()
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.INSTANT_OBS_NAME__PATH:
+ return basicSetPath(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 VSLPackage.INSTANT_OBS_NAME__PATH:
+ return getPath();
+ case VSLPackage.INSTANT_OBS_NAME__INSTANT_ID:
+ if (resolve) return getInstantId();
+ return basicGetInstantId();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.INSTANT_OBS_NAME__PATH:
+ setPath((QualifiedName)newValue);
+ return;
+ case VSLPackage.INSTANT_OBS_NAME__INSTANT_ID:
+ setInstantId((TimeObservation)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.INSTANT_OBS_NAME__PATH:
+ setPath((QualifiedName)null);
+ return;
+ case VSLPackage.INSTANT_OBS_NAME__INSTANT_ID:
+ setInstantId((TimeObservation)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.INSTANT_OBS_NAME__PATH:
+ return path != null;
+ case VSLPackage.INSTANT_OBS_NAME__INSTANT_ID:
+ return instantId != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //InstantObsNameImpl
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/IntegerLiteralRuleImpl.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/IntegerLiteralRuleImpl.java
new file mode 100644
index 00000000000..bd4f1427b5c
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/IntegerLiteralRuleImpl.java
@@ -0,0 +1,80 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.papyrus.marte.vsl.vSL.IntegerLiteralRule;
+import org.eclipse.papyrus.marte.vsl.vSL.VSLPackage;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Integer Literal Rule</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class IntegerLiteralRuleImpl extends NumberLiteralRuleImpl implements IntegerLiteralRule
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IntegerLiteralRuleImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return VSLPackage.Literals.INTEGER_LITERAL_RULE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EObject getFilteredParentRule(EClass filter)
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Type getExpectedType()
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Element getContextElement()
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;
+ }
+
+} //IntegerLiteralRuleImpl
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/IntervalImpl.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/IntervalImpl.java
new file mode 100644
index 00000000000..2fcb284dda0
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/IntervalImpl.java
@@ -0,0 +1,429 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL.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.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.marte.vsl.vSL.Expression;
+import org.eclipse.papyrus.marte.vsl.vSL.Interval;
+import org.eclipse.papyrus.marte.vsl.vSL.VSLPackage;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Interval</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.impl.IntervalImpl#getIsLowerIncluded <em>Is Lower Included</em>}</li>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.impl.IntervalImpl#getLower <em>Lower</em>}</li>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.impl.IntervalImpl#getUpper <em>Upper</em>}</li>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.impl.IntervalImpl#getIsUpperIncluded <em>Is Upper Included</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class IntervalImpl extends ValueSpecificationImpl implements Interval
+{
+ /**
+ * The default value of the '{@link #getIsLowerIncluded() <em>Is Lower Included</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getIsLowerIncluded()
+ * @generated
+ * @ordered
+ */
+ protected static final String IS_LOWER_INCLUDED_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getIsLowerIncluded() <em>Is Lower Included</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getIsLowerIncluded()
+ * @generated
+ * @ordered
+ */
+ protected String isLowerIncluded = IS_LOWER_INCLUDED_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getLower() <em>Lower</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLower()
+ * @generated
+ * @ordered
+ */
+ protected Expression lower;
+
+ /**
+ * The cached value of the '{@link #getUpper() <em>Upper</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getUpper()
+ * @generated
+ * @ordered
+ */
+ protected Expression upper;
+
+ /**
+ * The default value of the '{@link #getIsUpperIncluded() <em>Is Upper Included</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getIsUpperIncluded()
+ * @generated
+ * @ordered
+ */
+ protected static final String IS_UPPER_INCLUDED_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getIsUpperIncluded() <em>Is Upper Included</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getIsUpperIncluded()
+ * @generated
+ * @ordered
+ */
+ protected String isUpperIncluded = IS_UPPER_INCLUDED_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IntervalImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return VSLPackage.Literals.INTERVAL;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getIsLowerIncluded()
+ {
+ return isLowerIncluded;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setIsLowerIncluded(String newIsLowerIncluded)
+ {
+ String oldIsLowerIncluded = isLowerIncluded;
+ isLowerIncluded = newIsLowerIncluded;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, VSLPackage.INTERVAL__IS_LOWER_INCLUDED, oldIsLowerIncluded, isLowerIncluded));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Expression getLower()
+ {
+ return lower;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetLower(Expression newLower, NotificationChain msgs)
+ {
+ Expression oldLower = lower;
+ lower = newLower;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, VSLPackage.INTERVAL__LOWER, oldLower, newLower);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setLower(Expression newLower)
+ {
+ if (newLower != lower)
+ {
+ NotificationChain msgs = null;
+ if (lower != null)
+ msgs = ((InternalEObject)lower).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - VSLPackage.INTERVAL__LOWER, null, msgs);
+ if (newLower != null)
+ msgs = ((InternalEObject)newLower).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - VSLPackage.INTERVAL__LOWER, null, msgs);
+ msgs = basicSetLower(newLower, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, VSLPackage.INTERVAL__LOWER, newLower, newLower));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Expression getUpper()
+ {
+ return upper;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetUpper(Expression newUpper, NotificationChain msgs)
+ {
+ Expression oldUpper = upper;
+ upper = newUpper;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, VSLPackage.INTERVAL__UPPER, oldUpper, newUpper);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setUpper(Expression newUpper)
+ {
+ if (newUpper != upper)
+ {
+ NotificationChain msgs = null;
+ if (upper != null)
+ msgs = ((InternalEObject)upper).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - VSLPackage.INTERVAL__UPPER, null, msgs);
+ if (newUpper != null)
+ msgs = ((InternalEObject)newUpper).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - VSLPackage.INTERVAL__UPPER, null, msgs);
+ msgs = basicSetUpper(newUpper, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, VSLPackage.INTERVAL__UPPER, newUpper, newUpper));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getIsUpperIncluded()
+ {
+ return isUpperIncluded;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setIsUpperIncluded(String newIsUpperIncluded)
+ {
+ String oldIsUpperIncluded = isUpperIncluded;
+ isUpperIncluded = newIsUpperIncluded;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, VSLPackage.INTERVAL__IS_UPPER_INCLUDED, oldIsUpperIncluded, isUpperIncluded));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EObject getFilteredParentRule(EClass filter)
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Type getExpectedType()
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Element getContextElement()
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.INTERVAL__LOWER:
+ return basicSetLower(null, msgs);
+ case VSLPackage.INTERVAL__UPPER:
+ return basicSetUpper(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 VSLPackage.INTERVAL__IS_LOWER_INCLUDED:
+ return getIsLowerIncluded();
+ case VSLPackage.INTERVAL__LOWER:
+ return getLower();
+ case VSLPackage.INTERVAL__UPPER:
+ return getUpper();
+ case VSLPackage.INTERVAL__IS_UPPER_INCLUDED:
+ return getIsUpperIncluded();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.INTERVAL__IS_LOWER_INCLUDED:
+ setIsLowerIncluded((String)newValue);
+ return;
+ case VSLPackage.INTERVAL__LOWER:
+ setLower((Expression)newValue);
+ return;
+ case VSLPackage.INTERVAL__UPPER:
+ setUpper((Expression)newValue);
+ return;
+ case VSLPackage.INTERVAL__IS_UPPER_INCLUDED:
+ setIsUpperIncluded((String)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.INTERVAL__IS_LOWER_INCLUDED:
+ setIsLowerIncluded(IS_LOWER_INCLUDED_EDEFAULT);
+ return;
+ case VSLPackage.INTERVAL__LOWER:
+ setLower((Expression)null);
+ return;
+ case VSLPackage.INTERVAL__UPPER:
+ setUpper((Expression)null);
+ return;
+ case VSLPackage.INTERVAL__IS_UPPER_INCLUDED:
+ setIsUpperIncluded(IS_UPPER_INCLUDED_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.INTERVAL__IS_LOWER_INCLUDED:
+ return IS_LOWER_INCLUDED_EDEFAULT == null ? isLowerIncluded != null : !IS_LOWER_INCLUDED_EDEFAULT.equals(isLowerIncluded);
+ case VSLPackage.INTERVAL__LOWER:
+ return lower != null;
+ case VSLPackage.INTERVAL__UPPER:
+ return upper != null;
+ case VSLPackage.INTERVAL__IS_UPPER_INCLUDED:
+ return IS_UPPER_INCLUDED_EDEFAULT == null ? isUpperIncluded != null : !IS_UPPER_INCLUDED_EDEFAULT.equals(isUpperIncluded);
+ }
+ 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(" (isLowerIncluded: ");
+ result.append(isLowerIncluded);
+ result.append(", isUpperIncluded: ");
+ result.append(isUpperIncluded);
+ result.append(')');
+ return result.toString();
+ }
+
+} //IntervalImpl
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/JitterExpImpl.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/JitterExpImpl.java
new file mode 100644
index 00000000000..184cc6fe551
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/JitterExpImpl.java
@@ -0,0 +1,302 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL.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.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.marte.vsl.vSL.InstantObsExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.JitterExp;
+import org.eclipse.papyrus.marte.vsl.vSL.VSLPackage;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Jitter Exp</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.impl.JitterExpImpl#getFirstInstant <em>First Instant</em>}</li>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.impl.JitterExpImpl#getSecondInstant <em>Second Instant</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class JitterExpImpl extends TimeExpressionImpl implements JitterExp
+{
+ /**
+ * The cached value of the '{@link #getFirstInstant() <em>First Instant</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getFirstInstant()
+ * @generated
+ * @ordered
+ */
+ protected InstantObsExpression firstInstant;
+
+ /**
+ * The cached value of the '{@link #getSecondInstant() <em>Second Instant</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSecondInstant()
+ * @generated
+ * @ordered
+ */
+ protected InstantObsExpression secondInstant;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected JitterExpImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return VSLPackage.Literals.JITTER_EXP;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public InstantObsExpression getFirstInstant()
+ {
+ return firstInstant;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetFirstInstant(InstantObsExpression newFirstInstant, NotificationChain msgs)
+ {
+ InstantObsExpression oldFirstInstant = firstInstant;
+ firstInstant = newFirstInstant;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, VSLPackage.JITTER_EXP__FIRST_INSTANT, oldFirstInstant, newFirstInstant);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setFirstInstant(InstantObsExpression newFirstInstant)
+ {
+ if (newFirstInstant != firstInstant)
+ {
+ NotificationChain msgs = null;
+ if (firstInstant != null)
+ msgs = ((InternalEObject)firstInstant).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - VSLPackage.JITTER_EXP__FIRST_INSTANT, null, msgs);
+ if (newFirstInstant != null)
+ msgs = ((InternalEObject)newFirstInstant).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - VSLPackage.JITTER_EXP__FIRST_INSTANT, null, msgs);
+ msgs = basicSetFirstInstant(newFirstInstant, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, VSLPackage.JITTER_EXP__FIRST_INSTANT, newFirstInstant, newFirstInstant));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public InstantObsExpression getSecondInstant()
+ {
+ return secondInstant;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetSecondInstant(InstantObsExpression newSecondInstant, NotificationChain msgs)
+ {
+ InstantObsExpression oldSecondInstant = secondInstant;
+ secondInstant = newSecondInstant;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, VSLPackage.JITTER_EXP__SECOND_INSTANT, oldSecondInstant, newSecondInstant);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setSecondInstant(InstantObsExpression newSecondInstant)
+ {
+ if (newSecondInstant != secondInstant)
+ {
+ NotificationChain msgs = null;
+ if (secondInstant != null)
+ msgs = ((InternalEObject)secondInstant).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - VSLPackage.JITTER_EXP__SECOND_INSTANT, null, msgs);
+ if (newSecondInstant != null)
+ msgs = ((InternalEObject)newSecondInstant).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - VSLPackage.JITTER_EXP__SECOND_INSTANT, null, msgs);
+ msgs = basicSetSecondInstant(newSecondInstant, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, VSLPackage.JITTER_EXP__SECOND_INSTANT, newSecondInstant, newSecondInstant));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EObject getFilteredParentRule(EClass filter)
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Type getExpectedType()
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Element getContextElement()
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.JITTER_EXP__FIRST_INSTANT:
+ return basicSetFirstInstant(null, msgs);
+ case VSLPackage.JITTER_EXP__SECOND_INSTANT:
+ return basicSetSecondInstant(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 VSLPackage.JITTER_EXP__FIRST_INSTANT:
+ return getFirstInstant();
+ case VSLPackage.JITTER_EXP__SECOND_INSTANT:
+ return getSecondInstant();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.JITTER_EXP__FIRST_INSTANT:
+ setFirstInstant((InstantObsExpression)newValue);
+ return;
+ case VSLPackage.JITTER_EXP__SECOND_INSTANT:
+ setSecondInstant((InstantObsExpression)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.JITTER_EXP__FIRST_INSTANT:
+ setFirstInstant((InstantObsExpression)null);
+ return;
+ case VSLPackage.JITTER_EXP__SECOND_INSTANT:
+ setSecondInstant((InstantObsExpression)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.JITTER_EXP__FIRST_INSTANT:
+ return firstInstant != null;
+ case VSLPackage.JITTER_EXP__SECOND_INSTANT:
+ return secondInstant != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //JitterExpImpl
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/ListOfValueNamePairsImpl.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/ListOfValueNamePairsImpl.java
new file mode 100644
index 00000000000..84d242d4fa4
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/ListOfValueNamePairsImpl.java
@@ -0,0 +1,205 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL.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.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.papyrus.marte.vsl.vSL.ListOfValueNamePairs;
+import org.eclipse.papyrus.marte.vsl.vSL.VSLPackage;
+import org.eclipse.papyrus.marte.vsl.vSL.ValueNamePair;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>List Of Value Name Pairs</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.impl.ListOfValueNamePairsImpl#getValueNamePairs <em>Value Name Pairs</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ListOfValueNamePairsImpl extends MinimalEObjectImpl.Container implements ListOfValueNamePairs
+{
+ /**
+ * The cached value of the '{@link #getValueNamePairs() <em>Value Name Pairs</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getValueNamePairs()
+ * @generated
+ * @ordered
+ */
+ protected EList<ValueNamePair> valueNamePairs;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ListOfValueNamePairsImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return VSLPackage.Literals.LIST_OF_VALUE_NAME_PAIRS;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<ValueNamePair> getValueNamePairs()
+ {
+ if (valueNamePairs == null)
+ {
+ valueNamePairs = new EObjectContainmentEList<ValueNamePair>(ValueNamePair.class, this, VSLPackage.LIST_OF_VALUE_NAME_PAIRS__VALUE_NAME_PAIRS);
+ }
+ return valueNamePairs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EObject getFilteredParentRule(EClass filter)
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Type getExpectedType()
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Element getContextElement()
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.LIST_OF_VALUE_NAME_PAIRS__VALUE_NAME_PAIRS:
+ return ((InternalEList<?>)getValueNamePairs()).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 VSLPackage.LIST_OF_VALUE_NAME_PAIRS__VALUE_NAME_PAIRS:
+ return getValueNamePairs();
+ }
+ 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 VSLPackage.LIST_OF_VALUE_NAME_PAIRS__VALUE_NAME_PAIRS:
+ getValueNamePairs().clear();
+ getValueNamePairs().addAll((Collection<? extends ValueNamePair>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.LIST_OF_VALUE_NAME_PAIRS__VALUE_NAME_PAIRS:
+ getValueNamePairs().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.LIST_OF_VALUE_NAME_PAIRS__VALUE_NAME_PAIRS:
+ return valueNamePairs != null && !valueNamePairs.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //ListOfValueNamePairsImpl
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/ListOfValuesImpl.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/ListOfValuesImpl.java
new file mode 100644
index 00000000000..ff7c217e2a4
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/ListOfValuesImpl.java
@@ -0,0 +1,205 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL.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.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.papyrus.marte.vsl.vSL.Expression;
+import org.eclipse.papyrus.marte.vsl.vSL.ListOfValues;
+import org.eclipse.papyrus.marte.vsl.vSL.VSLPackage;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>List Of Values</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.impl.ListOfValuesImpl#getValues <em>Values</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ListOfValuesImpl extends MinimalEObjectImpl.Container implements ListOfValues
+{
+ /**
+ * The cached value of the '{@link #getValues() <em>Values</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getValues()
+ * @generated
+ * @ordered
+ */
+ protected EList<Expression> values;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ListOfValuesImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return VSLPackage.Literals.LIST_OF_VALUES;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<Expression> getValues()
+ {
+ if (values == null)
+ {
+ values = new EObjectContainmentEList<Expression>(Expression.class, this, VSLPackage.LIST_OF_VALUES__VALUES);
+ }
+ return values;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EObject getFilteredParentRule(EClass filter)
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Type getExpectedType()
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Element getContextElement()
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.LIST_OF_VALUES__VALUES:
+ return ((InternalEList<?>)getValues()).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 VSLPackage.LIST_OF_VALUES__VALUES:
+ return getValues();
+ }
+ 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 VSLPackage.LIST_OF_VALUES__VALUES:
+ getValues().clear();
+ getValues().addAll((Collection<? extends Expression>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.LIST_OF_VALUES__VALUES:
+ getValues().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.LIST_OF_VALUES__VALUES:
+ return values != null && !values.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //ListOfValuesImpl
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/LiteralImpl.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/LiteralImpl.java
new file mode 100644
index 00000000000..0500028cf09
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/LiteralImpl.java
@@ -0,0 +1,214 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.marte.vsl.vSL.Literal;
+import org.eclipse.papyrus.marte.vsl.vSL.VSLPackage;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * <!-- 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.papyrus.marte.vsl.vSL.impl.LiteralImpl#getValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LiteralImpl extends ValueSpecificationImpl implements Literal
+{
+ /**
+ * The default value of the '{@link #getValue() <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getValue()
+ * @generated
+ * @ordered
+ */
+ protected static final String VALUE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getValue() <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getValue()
+ * @generated
+ * @ordered
+ */
+ protected String value = VALUE_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected LiteralImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return VSLPackage.Literals.LITERAL;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getValue()
+ {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setValue(String newValue)
+ {
+ String oldValue = value;
+ value = newValue;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, VSLPackage.LITERAL__VALUE, oldValue, value));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EObject getFilteredParentRule(EClass filter)
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Type getExpectedType()
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Element getContextElement()
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.LITERAL__VALUE:
+ return getValue();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.LITERAL__VALUE:
+ setValue((String)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.LITERAL__VALUE:
+ setValue(VALUE_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.LITERAL__VALUE:
+ return VALUE_EDEFAULT == null ? value != null : !VALUE_EDEFAULT.equals(value);
+ }
+ 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(" (value: ");
+ result.append(value);
+ result.append(')');
+ return result.toString();
+ }
+
+} //LiteralImpl
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/MultiplicativeExpressionImpl.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/MultiplicativeExpressionImpl.java
new file mode 100644
index 00000000000..4ec433b7825
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/MultiplicativeExpressionImpl.java
@@ -0,0 +1,259 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL.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.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EDataTypeEList;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.papyrus.marte.vsl.vSL.MultiplicativeExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.UnaryExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.VSLPackage;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Multiplicative Expression</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.impl.MultiplicativeExpressionImpl#getExp <em>Exp</em>}</li>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.impl.MultiplicativeExpressionImpl#getOp <em>Op</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class MultiplicativeExpressionImpl extends MinimalEObjectImpl.Container implements MultiplicativeExpression
+{
+ /**
+ * The cached value of the '{@link #getExp() <em>Exp</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getExp()
+ * @generated
+ * @ordered
+ */
+ protected EList<UnaryExpression> exp;
+
+ /**
+ * The cached value of the '{@link #getOp() <em>Op</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getOp()
+ * @generated
+ * @ordered
+ */
+ protected EList<String> op;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected MultiplicativeExpressionImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return VSLPackage.Literals.MULTIPLICATIVE_EXPRESSION;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<UnaryExpression> getExp()
+ {
+ if (exp == null)
+ {
+ exp = new EObjectContainmentEList<UnaryExpression>(UnaryExpression.class, this, VSLPackage.MULTIPLICATIVE_EXPRESSION__EXP);
+ }
+ return exp;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<String> getOp()
+ {
+ if (op == null)
+ {
+ op = new EDataTypeEList<String>(String.class, this, VSLPackage.MULTIPLICATIVE_EXPRESSION__OP);
+ }
+ return op;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EObject getFilteredParentRule(EClass filter)
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Type getExpectedType()
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Element getContextElement()
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.MULTIPLICATIVE_EXPRESSION__EXP:
+ return ((InternalEList<?>)getExp()).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 VSLPackage.MULTIPLICATIVE_EXPRESSION__EXP:
+ return getExp();
+ case VSLPackage.MULTIPLICATIVE_EXPRESSION__OP:
+ return getOp();
+ }
+ 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 VSLPackage.MULTIPLICATIVE_EXPRESSION__EXP:
+ getExp().clear();
+ getExp().addAll((Collection<? extends UnaryExpression>)newValue);
+ return;
+ case VSLPackage.MULTIPLICATIVE_EXPRESSION__OP:
+ getOp().clear();
+ getOp().addAll((Collection<? extends String>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.MULTIPLICATIVE_EXPRESSION__EXP:
+ getExp().clear();
+ return;
+ case VSLPackage.MULTIPLICATIVE_EXPRESSION__OP:
+ getOp().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.MULTIPLICATIVE_EXPRESSION__EXP:
+ return exp != null && !exp.isEmpty();
+ case VSLPackage.MULTIPLICATIVE_EXPRESSION__OP:
+ return op != null && !op.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (op: ");
+ result.append(op);
+ result.append(')');
+ return result.toString();
+ }
+
+} //MultiplicativeExpressionImpl
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/NameOrChoiceOrBehaviorCallImpl.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/NameOrChoiceOrBehaviorCallImpl.java
new file mode 100644
index 00000000000..a2d946bf801
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/NameOrChoiceOrBehaviorCallImpl.java
@@ -0,0 +1,369 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL.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.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.marte.vsl.vSL.ListOfValues;
+import org.eclipse.papyrus.marte.vsl.vSL.NameOrChoiceOrBehaviorCall;
+import org.eclipse.papyrus.marte.vsl.vSL.QualifiedName;
+import org.eclipse.papyrus.marte.vsl.vSL.VSLPackage;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Name Or Choice Or Behavior Call</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.impl.NameOrChoiceOrBehaviorCallImpl#getPath <em>Path</em>}</li>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.impl.NameOrChoiceOrBehaviorCallImpl#getId <em>Id</em>}</li>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.impl.NameOrChoiceOrBehaviorCallImpl#getArguments <em>Arguments</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class NameOrChoiceOrBehaviorCallImpl extends ValueSpecificationImpl implements NameOrChoiceOrBehaviorCall
+{
+ /**
+ * The cached value of the '{@link #getPath() <em>Path</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPath()
+ * @generated
+ * @ordered
+ */
+ protected QualifiedName path;
+
+ /**
+ * The cached value of the '{@link #getId() <em>Id</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getId()
+ * @generated
+ * @ordered
+ */
+ protected NamedElement id;
+
+ /**
+ * The cached value of the '{@link #getArguments() <em>Arguments</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getArguments()
+ * @generated
+ * @ordered
+ */
+ protected ListOfValues arguments;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected NameOrChoiceOrBehaviorCallImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return VSLPackage.Literals.NAME_OR_CHOICE_OR_BEHAVIOR_CALL;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public QualifiedName getPath()
+ {
+ return path;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetPath(QualifiedName newPath, NotificationChain msgs)
+ {
+ QualifiedName oldPath = path;
+ path = newPath;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, VSLPackage.NAME_OR_CHOICE_OR_BEHAVIOR_CALL__PATH, oldPath, newPath);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setPath(QualifiedName newPath)
+ {
+ if (newPath != path)
+ {
+ NotificationChain msgs = null;
+ if (path != null)
+ msgs = ((InternalEObject)path).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - VSLPackage.NAME_OR_CHOICE_OR_BEHAVIOR_CALL__PATH, null, msgs);
+ if (newPath != null)
+ msgs = ((InternalEObject)newPath).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - VSLPackage.NAME_OR_CHOICE_OR_BEHAVIOR_CALL__PATH, null, msgs);
+ msgs = basicSetPath(newPath, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, VSLPackage.NAME_OR_CHOICE_OR_BEHAVIOR_CALL__PATH, newPath, newPath));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NamedElement getId()
+ {
+ if (id != null && id.eIsProxy())
+ {
+ InternalEObject oldId = (InternalEObject)id;
+ id = (NamedElement)eResolveProxy(oldId);
+ if (id != oldId)
+ {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, VSLPackage.NAME_OR_CHOICE_OR_BEHAVIOR_CALL__ID, oldId, id));
+ }
+ }
+ return id;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NamedElement basicGetId()
+ {
+ return id;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setId(NamedElement newId)
+ {
+ NamedElement oldId = id;
+ id = newId;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, VSLPackage.NAME_OR_CHOICE_OR_BEHAVIOR_CALL__ID, oldId, id));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ListOfValues getArguments()
+ {
+ return arguments;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetArguments(ListOfValues newArguments, NotificationChain msgs)
+ {
+ ListOfValues oldArguments = arguments;
+ arguments = newArguments;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, VSLPackage.NAME_OR_CHOICE_OR_BEHAVIOR_CALL__ARGUMENTS, oldArguments, newArguments);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setArguments(ListOfValues newArguments)
+ {
+ if (newArguments != arguments)
+ {
+ NotificationChain msgs = null;
+ if (arguments != null)
+ msgs = ((InternalEObject)arguments).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - VSLPackage.NAME_OR_CHOICE_OR_BEHAVIOR_CALL__ARGUMENTS, null, msgs);
+ if (newArguments != null)
+ msgs = ((InternalEObject)newArguments).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - VSLPackage.NAME_OR_CHOICE_OR_BEHAVIOR_CALL__ARGUMENTS, null, msgs);
+ msgs = basicSetArguments(newArguments, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, VSLPackage.NAME_OR_CHOICE_OR_BEHAVIOR_CALL__ARGUMENTS, newArguments, newArguments));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EObject getFilteredParentRule(EClass filter)
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Type getExpectedType()
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Element getContextElement()
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.NAME_OR_CHOICE_OR_BEHAVIOR_CALL__PATH:
+ return basicSetPath(null, msgs);
+ case VSLPackage.NAME_OR_CHOICE_OR_BEHAVIOR_CALL__ARGUMENTS:
+ return basicSetArguments(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 VSLPackage.NAME_OR_CHOICE_OR_BEHAVIOR_CALL__PATH:
+ return getPath();
+ case VSLPackage.NAME_OR_CHOICE_OR_BEHAVIOR_CALL__ID:
+ if (resolve) return getId();
+ return basicGetId();
+ case VSLPackage.NAME_OR_CHOICE_OR_BEHAVIOR_CALL__ARGUMENTS:
+ return getArguments();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.NAME_OR_CHOICE_OR_BEHAVIOR_CALL__PATH:
+ setPath((QualifiedName)newValue);
+ return;
+ case VSLPackage.NAME_OR_CHOICE_OR_BEHAVIOR_CALL__ID:
+ setId((NamedElement)newValue);
+ return;
+ case VSLPackage.NAME_OR_CHOICE_OR_BEHAVIOR_CALL__ARGUMENTS:
+ setArguments((ListOfValues)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.NAME_OR_CHOICE_OR_BEHAVIOR_CALL__PATH:
+ setPath((QualifiedName)null);
+ return;
+ case VSLPackage.NAME_OR_CHOICE_OR_BEHAVIOR_CALL__ID:
+ setId((NamedElement)null);
+ return;
+ case VSLPackage.NAME_OR_CHOICE_OR_BEHAVIOR_CALL__ARGUMENTS:
+ setArguments((ListOfValues)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.NAME_OR_CHOICE_OR_BEHAVIOR_CALL__PATH:
+ return path != null;
+ case VSLPackage.NAME_OR_CHOICE_OR_BEHAVIOR_CALL__ID:
+ return id != null;
+ case VSLPackage.NAME_OR_CHOICE_OR_BEHAVIOR_CALL__ARGUMENTS:
+ return arguments != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //NameOrChoiceOrBehaviorCallImpl
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/NullLiteralRuleImpl.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/NullLiteralRuleImpl.java
new file mode 100644
index 00000000000..7df48eae854
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/NullLiteralRuleImpl.java
@@ -0,0 +1,80 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.papyrus.marte.vsl.vSL.NullLiteralRule;
+import org.eclipse.papyrus.marte.vsl.vSL.VSLPackage;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Null Literal Rule</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class NullLiteralRuleImpl extends LiteralImpl implements NullLiteralRule
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected NullLiteralRuleImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return VSLPackage.Literals.NULL_LITERAL_RULE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EObject getFilteredParentRule(EClass filter)
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Type getExpectedType()
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Element getContextElement()
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;
+ }
+
+} //NullLiteralRuleImpl
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/NumberLiteralRuleImpl.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/NumberLiteralRuleImpl.java
new file mode 100644
index 00000000000..f7f47019603
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/NumberLiteralRuleImpl.java
@@ -0,0 +1,80 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.papyrus.marte.vsl.vSL.NumberLiteralRule;
+import org.eclipse.papyrus.marte.vsl.vSL.VSLPackage;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Number Literal Rule</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class NumberLiteralRuleImpl extends LiteralImpl implements NumberLiteralRule
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected NumberLiteralRuleImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return VSLPackage.Literals.NUMBER_LITERAL_RULE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EObject getFilteredParentRule(EClass filter)
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Type getExpectedType()
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Element getContextElement()
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;
+ }
+
+} //NumberLiteralRuleImpl
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/OperationCallExpressionImpl.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/OperationCallExpressionImpl.java
new file mode 100644
index 00000000000..5206709c5ee
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/OperationCallExpressionImpl.java
@@ -0,0 +1,297 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL.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.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.marte.vsl.vSL.ListOfValues;
+import org.eclipse.papyrus.marte.vsl.vSL.OperationCallExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.VSLPackage;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Operation;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Operation Call Expression</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.impl.OperationCallExpressionImpl#getOperation <em>Operation</em>}</li>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.impl.OperationCallExpressionImpl#getArguments <em>Arguments</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class OperationCallExpressionImpl extends SuffixExpressionImpl implements OperationCallExpression
+{
+ /**
+ * The cached value of the '{@link #getOperation() <em>Operation</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getOperation()
+ * @generated
+ * @ordered
+ */
+ protected Operation operation;
+
+ /**
+ * The cached value of the '{@link #getArguments() <em>Arguments</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getArguments()
+ * @generated
+ * @ordered
+ */
+ protected ListOfValues arguments;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected OperationCallExpressionImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return VSLPackage.Literals.OPERATION_CALL_EXPRESSION;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Operation getOperation()
+ {
+ if (operation != null && operation.eIsProxy())
+ {
+ InternalEObject oldOperation = (InternalEObject)operation;
+ operation = (Operation)eResolveProxy(oldOperation);
+ if (operation != oldOperation)
+ {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, VSLPackage.OPERATION_CALL_EXPRESSION__OPERATION, oldOperation, operation));
+ }
+ }
+ return operation;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Operation basicGetOperation()
+ {
+ return operation;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setOperation(Operation newOperation)
+ {
+ Operation oldOperation = operation;
+ operation = newOperation;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, VSLPackage.OPERATION_CALL_EXPRESSION__OPERATION, oldOperation, operation));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ListOfValues getArguments()
+ {
+ return arguments;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetArguments(ListOfValues newArguments, NotificationChain msgs)
+ {
+ ListOfValues oldArguments = arguments;
+ arguments = newArguments;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, VSLPackage.OPERATION_CALL_EXPRESSION__ARGUMENTS, oldArguments, newArguments);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setArguments(ListOfValues newArguments)
+ {
+ if (newArguments != arguments)
+ {
+ NotificationChain msgs = null;
+ if (arguments != null)
+ msgs = ((InternalEObject)arguments).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - VSLPackage.OPERATION_CALL_EXPRESSION__ARGUMENTS, null, msgs);
+ if (newArguments != null)
+ msgs = ((InternalEObject)newArguments).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - VSLPackage.OPERATION_CALL_EXPRESSION__ARGUMENTS, null, msgs);
+ msgs = basicSetArguments(newArguments, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, VSLPackage.OPERATION_CALL_EXPRESSION__ARGUMENTS, newArguments, newArguments));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EObject getFilteredParentRule(EClass filter)
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Type getExpectedType()
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Element getContextElement()
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.OPERATION_CALL_EXPRESSION__ARGUMENTS:
+ return basicSetArguments(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 VSLPackage.OPERATION_CALL_EXPRESSION__OPERATION:
+ if (resolve) return getOperation();
+ return basicGetOperation();
+ case VSLPackage.OPERATION_CALL_EXPRESSION__ARGUMENTS:
+ return getArguments();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.OPERATION_CALL_EXPRESSION__OPERATION:
+ setOperation((Operation)newValue);
+ return;
+ case VSLPackage.OPERATION_CALL_EXPRESSION__ARGUMENTS:
+ setArguments((ListOfValues)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.OPERATION_CALL_EXPRESSION__OPERATION:
+ setOperation((Operation)null);
+ return;
+ case VSLPackage.OPERATION_CALL_EXPRESSION__ARGUMENTS:
+ setArguments((ListOfValues)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.OPERATION_CALL_EXPRESSION__OPERATION:
+ return operation != null;
+ case VSLPackage.OPERATION_CALL_EXPRESSION__ARGUMENTS:
+ return arguments != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //OperationCallExpressionImpl
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/PrimaryExpressionImpl.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/PrimaryExpressionImpl.java
new file mode 100644
index 00000000000..0b1965e6091
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/PrimaryExpressionImpl.java
@@ -0,0 +1,304 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL.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.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.papyrus.marte.vsl.vSL.PrimaryExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.SuffixExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.VSLPackage;
+import org.eclipse.papyrus.marte.vsl.vSL.ValueSpecification;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Primary Expression</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.impl.PrimaryExpressionImpl#getPrefix <em>Prefix</em>}</li>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.impl.PrimaryExpressionImpl#getSuffix <em>Suffix</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class PrimaryExpressionImpl extends MinimalEObjectImpl.Container implements PrimaryExpression
+{
+ /**
+ * The cached value of the '{@link #getPrefix() <em>Prefix</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPrefix()
+ * @generated
+ * @ordered
+ */
+ protected ValueSpecification prefix;
+
+ /**
+ * The cached value of the '{@link #getSuffix() <em>Suffix</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSuffix()
+ * @generated
+ * @ordered
+ */
+ protected SuffixExpression suffix;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected PrimaryExpressionImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return VSLPackage.Literals.PRIMARY_EXPRESSION;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ValueSpecification getPrefix()
+ {
+ return prefix;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetPrefix(ValueSpecification newPrefix, NotificationChain msgs)
+ {
+ ValueSpecification oldPrefix = prefix;
+ prefix = newPrefix;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, VSLPackage.PRIMARY_EXPRESSION__PREFIX, oldPrefix, newPrefix);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setPrefix(ValueSpecification newPrefix)
+ {
+ if (newPrefix != prefix)
+ {
+ NotificationChain msgs = null;
+ if (prefix != null)
+ msgs = ((InternalEObject)prefix).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - VSLPackage.PRIMARY_EXPRESSION__PREFIX, null, msgs);
+ if (newPrefix != null)
+ msgs = ((InternalEObject)newPrefix).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - VSLPackage.PRIMARY_EXPRESSION__PREFIX, null, msgs);
+ msgs = basicSetPrefix(newPrefix, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, VSLPackage.PRIMARY_EXPRESSION__PREFIX, newPrefix, newPrefix));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SuffixExpression getSuffix()
+ {
+ return suffix;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetSuffix(SuffixExpression newSuffix, NotificationChain msgs)
+ {
+ SuffixExpression oldSuffix = suffix;
+ suffix = newSuffix;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, VSLPackage.PRIMARY_EXPRESSION__SUFFIX, oldSuffix, newSuffix);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setSuffix(SuffixExpression newSuffix)
+ {
+ if (newSuffix != suffix)
+ {
+ NotificationChain msgs = null;
+ if (suffix != null)
+ msgs = ((InternalEObject)suffix).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - VSLPackage.PRIMARY_EXPRESSION__SUFFIX, null, msgs);
+ if (newSuffix != null)
+ msgs = ((InternalEObject)newSuffix).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - VSLPackage.PRIMARY_EXPRESSION__SUFFIX, null, msgs);
+ msgs = basicSetSuffix(newSuffix, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, VSLPackage.PRIMARY_EXPRESSION__SUFFIX, newSuffix, newSuffix));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EObject getFilteredParentRule(EClass filter)
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Type getExpectedType()
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Element getContextElement()
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.PRIMARY_EXPRESSION__PREFIX:
+ return basicSetPrefix(null, msgs);
+ case VSLPackage.PRIMARY_EXPRESSION__SUFFIX:
+ return basicSetSuffix(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 VSLPackage.PRIMARY_EXPRESSION__PREFIX:
+ return getPrefix();
+ case VSLPackage.PRIMARY_EXPRESSION__SUFFIX:
+ return getSuffix();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.PRIMARY_EXPRESSION__PREFIX:
+ setPrefix((ValueSpecification)newValue);
+ return;
+ case VSLPackage.PRIMARY_EXPRESSION__SUFFIX:
+ setSuffix((SuffixExpression)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.PRIMARY_EXPRESSION__PREFIX:
+ setPrefix((ValueSpecification)null);
+ return;
+ case VSLPackage.PRIMARY_EXPRESSION__SUFFIX:
+ setSuffix((SuffixExpression)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.PRIMARY_EXPRESSION__PREFIX:
+ return prefix != null;
+ case VSLPackage.PRIMARY_EXPRESSION__SUFFIX:
+ return suffix != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //PrimaryExpressionImpl
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/PropertyCallExpressionImpl.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/PropertyCallExpressionImpl.java
new file mode 100644
index 00000000000..870d3d834e3
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/PropertyCallExpressionImpl.java
@@ -0,0 +1,210 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.marte.vsl.vSL.PropertyCallExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.VSLPackage;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Property Call Expression</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.impl.PropertyCallExpressionImpl#getProperty <em>Property</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class PropertyCallExpressionImpl extends SuffixExpressionImpl implements PropertyCallExpression
+{
+ /**
+ * The cached value of the '{@link #getProperty() <em>Property</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getProperty()
+ * @generated
+ * @ordered
+ */
+ protected Property property;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected PropertyCallExpressionImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return VSLPackage.Literals.PROPERTY_CALL_EXPRESSION;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Property getProperty()
+ {
+ if (property != null && property.eIsProxy())
+ {
+ InternalEObject oldProperty = (InternalEObject)property;
+ property = (Property)eResolveProxy(oldProperty);
+ if (property != oldProperty)
+ {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, VSLPackage.PROPERTY_CALL_EXPRESSION__PROPERTY, oldProperty, property));
+ }
+ }
+ return property;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Property basicGetProperty()
+ {
+ return property;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setProperty(Property newProperty)
+ {
+ Property oldProperty = property;
+ property = newProperty;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, VSLPackage.PROPERTY_CALL_EXPRESSION__PROPERTY, oldProperty, property));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EObject getFilteredParentRule(EClass filter)
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Type getExpectedType()
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Element getContextElement()
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.PROPERTY_CALL_EXPRESSION__PROPERTY:
+ if (resolve) return getProperty();
+ return basicGetProperty();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.PROPERTY_CALL_EXPRESSION__PROPERTY:
+ setProperty((Property)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.PROPERTY_CALL_EXPRESSION__PROPERTY:
+ setProperty((Property)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.PROPERTY_CALL_EXPRESSION__PROPERTY:
+ return property != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //PropertyCallExpressionImpl
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/QualifiedNameImpl.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/QualifiedNameImpl.java
new file mode 100644
index 00000000000..f5ec2557cdc
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/QualifiedNameImpl.java
@@ -0,0 +1,297 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL.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.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.papyrus.marte.vsl.vSL.QualifiedName;
+import org.eclipse.papyrus.marte.vsl.vSL.VSLPackage;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Namespace;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Qualified Name</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.impl.QualifiedNameImpl#getPath <em>Path</em>}</li>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.impl.QualifiedNameImpl#getRemaining <em>Remaining</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class QualifiedNameImpl extends MinimalEObjectImpl.Container implements QualifiedName
+{
+ /**
+ * The cached value of the '{@link #getPath() <em>Path</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPath()
+ * @generated
+ * @ordered
+ */
+ protected Namespace path;
+
+ /**
+ * The cached value of the '{@link #getRemaining() <em>Remaining</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getRemaining()
+ * @generated
+ * @ordered
+ */
+ protected QualifiedName remaining;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected QualifiedNameImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return VSLPackage.Literals.QUALIFIED_NAME;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Namespace getPath()
+ {
+ if (path != null && path.eIsProxy())
+ {
+ InternalEObject oldPath = (InternalEObject)path;
+ path = (Namespace)eResolveProxy(oldPath);
+ if (path != oldPath)
+ {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, VSLPackage.QUALIFIED_NAME__PATH, oldPath, path));
+ }
+ }
+ return path;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Namespace basicGetPath()
+ {
+ return path;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setPath(Namespace newPath)
+ {
+ Namespace oldPath = path;
+ path = newPath;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, VSLPackage.QUALIFIED_NAME__PATH, oldPath, path));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public QualifiedName getRemaining()
+ {
+ return remaining;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetRemaining(QualifiedName newRemaining, NotificationChain msgs)
+ {
+ QualifiedName oldRemaining = remaining;
+ remaining = newRemaining;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, VSLPackage.QUALIFIED_NAME__REMAINING, oldRemaining, newRemaining);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setRemaining(QualifiedName newRemaining)
+ {
+ if (newRemaining != remaining)
+ {
+ NotificationChain msgs = null;
+ if (remaining != null)
+ msgs = ((InternalEObject)remaining).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - VSLPackage.QUALIFIED_NAME__REMAINING, null, msgs);
+ if (newRemaining != null)
+ msgs = ((InternalEObject)newRemaining).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - VSLPackage.QUALIFIED_NAME__REMAINING, null, msgs);
+ msgs = basicSetRemaining(newRemaining, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, VSLPackage.QUALIFIED_NAME__REMAINING, newRemaining, newRemaining));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EObject getFilteredParentRule(EClass filter)
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Type getExpectedType()
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Element getContextElement()
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.QUALIFIED_NAME__REMAINING:
+ return basicSetRemaining(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 VSLPackage.QUALIFIED_NAME__PATH:
+ if (resolve) return getPath();
+ return basicGetPath();
+ case VSLPackage.QUALIFIED_NAME__REMAINING:
+ return getRemaining();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.QUALIFIED_NAME__PATH:
+ setPath((Namespace)newValue);
+ return;
+ case VSLPackage.QUALIFIED_NAME__REMAINING:
+ setRemaining((QualifiedName)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.QUALIFIED_NAME__PATH:
+ setPath((Namespace)null);
+ return;
+ case VSLPackage.QUALIFIED_NAME__REMAINING:
+ setRemaining((QualifiedName)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.QUALIFIED_NAME__PATH:
+ return path != null;
+ case VSLPackage.QUALIFIED_NAME__REMAINING:
+ return remaining != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //QualifiedNameImpl
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/RealLiteralRuleImpl.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/RealLiteralRuleImpl.java
new file mode 100644
index 00000000000..e2b32256065
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/RealLiteralRuleImpl.java
@@ -0,0 +1,80 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.papyrus.marte.vsl.vSL.RealLiteralRule;
+import org.eclipse.papyrus.marte.vsl.vSL.VSLPackage;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Real Literal Rule</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class RealLiteralRuleImpl extends NumberLiteralRuleImpl implements RealLiteralRule
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected RealLiteralRuleImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return VSLPackage.Literals.REAL_LITERAL_RULE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EObject getFilteredParentRule(EClass filter)
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Type getExpectedType()
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Element getContextElement()
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;
+ }
+
+} //RealLiteralRuleImpl
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/RelationalExpressionImpl.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/RelationalExpressionImpl.java
new file mode 100644
index 00000000000..91b5a93e668
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/RelationalExpressionImpl.java
@@ -0,0 +1,259 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL.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.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EDataTypeEList;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.papyrus.marte.vsl.vSL.ConditionalExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.RelationalExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.VSLPackage;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Relational Expression</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.impl.RelationalExpressionImpl#getExp <em>Exp</em>}</li>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.impl.RelationalExpressionImpl#getOp <em>Op</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class RelationalExpressionImpl extends MinimalEObjectImpl.Container implements RelationalExpression
+{
+ /**
+ * The cached value of the '{@link #getExp() <em>Exp</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getExp()
+ * @generated
+ * @ordered
+ */
+ protected EList<ConditionalExpression> exp;
+
+ /**
+ * The cached value of the '{@link #getOp() <em>Op</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getOp()
+ * @generated
+ * @ordered
+ */
+ protected EList<String> op;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected RelationalExpressionImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return VSLPackage.Literals.RELATIONAL_EXPRESSION;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<ConditionalExpression> getExp()
+ {
+ if (exp == null)
+ {
+ exp = new EObjectContainmentEList<ConditionalExpression>(ConditionalExpression.class, this, VSLPackage.RELATIONAL_EXPRESSION__EXP);
+ }
+ return exp;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<String> getOp()
+ {
+ if (op == null)
+ {
+ op = new EDataTypeEList<String>(String.class, this, VSLPackage.RELATIONAL_EXPRESSION__OP);
+ }
+ return op;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EObject getFilteredParentRule(EClass filter)
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Type getExpectedType()
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Element getContextElement()
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.RELATIONAL_EXPRESSION__EXP:
+ return ((InternalEList<?>)getExp()).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 VSLPackage.RELATIONAL_EXPRESSION__EXP:
+ return getExp();
+ case VSLPackage.RELATIONAL_EXPRESSION__OP:
+ return getOp();
+ }
+ 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 VSLPackage.RELATIONAL_EXPRESSION__EXP:
+ getExp().clear();
+ getExp().addAll((Collection<? extends ConditionalExpression>)newValue);
+ return;
+ case VSLPackage.RELATIONAL_EXPRESSION__OP:
+ getOp().clear();
+ getOp().addAll((Collection<? extends String>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.RELATIONAL_EXPRESSION__EXP:
+ getExp().clear();
+ return;
+ case VSLPackage.RELATIONAL_EXPRESSION__OP:
+ getOp().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.RELATIONAL_EXPRESSION__EXP:
+ return exp != null && !exp.isEmpty();
+ case VSLPackage.RELATIONAL_EXPRESSION__OP:
+ return op != null && !op.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (op: ");
+ result.append(op);
+ result.append(')');
+ return result.toString();
+ }
+
+} //RelationalExpressionImpl
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/StringLiteralRuleImpl.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/StringLiteralRuleImpl.java
new file mode 100644
index 00000000000..eb726ebcdd6
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/StringLiteralRuleImpl.java
@@ -0,0 +1,80 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.papyrus.marte.vsl.vSL.StringLiteralRule;
+import org.eclipse.papyrus.marte.vsl.vSL.VSLPackage;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>String Literal Rule</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class StringLiteralRuleImpl extends LiteralImpl implements StringLiteralRule
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected StringLiteralRuleImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return VSLPackage.Literals.STRING_LITERAL_RULE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EObject getFilteredParentRule(EClass filter)
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Type getExpectedType()
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Element getContextElement()
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;
+ }
+
+} //StringLiteralRuleImpl
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/SuffixExpressionImpl.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/SuffixExpressionImpl.java
new file mode 100644
index 00000000000..c296853fdbc
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/SuffixExpressionImpl.java
@@ -0,0 +1,231 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL.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.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.papyrus.marte.vsl.vSL.SuffixExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.VSLPackage;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Suffix Expression</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.impl.SuffixExpressionImpl#getSuffix <em>Suffix</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class SuffixExpressionImpl extends MinimalEObjectImpl.Container implements SuffixExpression
+{
+ /**
+ * The cached value of the '{@link #getSuffix() <em>Suffix</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSuffix()
+ * @generated
+ * @ordered
+ */
+ protected SuffixExpression suffix;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected SuffixExpressionImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return VSLPackage.Literals.SUFFIX_EXPRESSION;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SuffixExpression getSuffix()
+ {
+ return suffix;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetSuffix(SuffixExpression newSuffix, NotificationChain msgs)
+ {
+ SuffixExpression oldSuffix = suffix;
+ suffix = newSuffix;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, VSLPackage.SUFFIX_EXPRESSION__SUFFIX, oldSuffix, newSuffix);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setSuffix(SuffixExpression newSuffix)
+ {
+ if (newSuffix != suffix)
+ {
+ NotificationChain msgs = null;
+ if (suffix != null)
+ msgs = ((InternalEObject)suffix).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - VSLPackage.SUFFIX_EXPRESSION__SUFFIX, null, msgs);
+ if (newSuffix != null)
+ msgs = ((InternalEObject)newSuffix).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - VSLPackage.SUFFIX_EXPRESSION__SUFFIX, null, msgs);
+ msgs = basicSetSuffix(newSuffix, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, VSLPackage.SUFFIX_EXPRESSION__SUFFIX, newSuffix, newSuffix));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EObject getFilteredParentRule(EClass filter)
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Type getExpectedType()
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Element getContextElement()
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.SUFFIX_EXPRESSION__SUFFIX:
+ return basicSetSuffix(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 VSLPackage.SUFFIX_EXPRESSION__SUFFIX:
+ return getSuffix();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.SUFFIX_EXPRESSION__SUFFIX:
+ setSuffix((SuffixExpression)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.SUFFIX_EXPRESSION__SUFFIX:
+ setSuffix((SuffixExpression)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.SUFFIX_EXPRESSION__SUFFIX:
+ return suffix != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //SuffixExpressionImpl
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/TimeExpressionImpl.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/TimeExpressionImpl.java
new file mode 100644
index 00000000000..bf97d063a51
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/TimeExpressionImpl.java
@@ -0,0 +1,80 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.papyrus.marte.vsl.vSL.TimeExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.VSLPackage;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Time Expression</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class TimeExpressionImpl extends ValueSpecificationImpl implements TimeExpression
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected TimeExpressionImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return VSLPackage.Literals.TIME_EXPRESSION;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EObject getFilteredParentRule(EClass filter)
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Type getExpectedType()
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Element getContextElement()
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;
+ }
+
+} //TimeExpressionImpl
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/TupleImpl.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/TupleImpl.java
new file mode 100644
index 00000000000..ca71730e243
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/TupleImpl.java
@@ -0,0 +1,231 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL.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.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.marte.vsl.vSL.ListOfValueNamePairs;
+import org.eclipse.papyrus.marte.vsl.vSL.Tuple;
+import org.eclipse.papyrus.marte.vsl.vSL.VSLPackage;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Tuple</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.impl.TupleImpl#getListOfValueNamePairs <em>List Of Value Name Pairs</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class TupleImpl extends ValueSpecificationImpl implements Tuple
+{
+ /**
+ * The cached value of the '{@link #getListOfValueNamePairs() <em>List Of Value Name Pairs</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getListOfValueNamePairs()
+ * @generated
+ * @ordered
+ */
+ protected ListOfValueNamePairs listOfValueNamePairs;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected TupleImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return VSLPackage.Literals.TUPLE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ListOfValueNamePairs getListOfValueNamePairs()
+ {
+ return listOfValueNamePairs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetListOfValueNamePairs(ListOfValueNamePairs newListOfValueNamePairs, NotificationChain msgs)
+ {
+ ListOfValueNamePairs oldListOfValueNamePairs = listOfValueNamePairs;
+ listOfValueNamePairs = newListOfValueNamePairs;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, VSLPackage.TUPLE__LIST_OF_VALUE_NAME_PAIRS, oldListOfValueNamePairs, newListOfValueNamePairs);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setListOfValueNamePairs(ListOfValueNamePairs newListOfValueNamePairs)
+ {
+ if (newListOfValueNamePairs != listOfValueNamePairs)
+ {
+ NotificationChain msgs = null;
+ if (listOfValueNamePairs != null)
+ msgs = ((InternalEObject)listOfValueNamePairs).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - VSLPackage.TUPLE__LIST_OF_VALUE_NAME_PAIRS, null, msgs);
+ if (newListOfValueNamePairs != null)
+ msgs = ((InternalEObject)newListOfValueNamePairs).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - VSLPackage.TUPLE__LIST_OF_VALUE_NAME_PAIRS, null, msgs);
+ msgs = basicSetListOfValueNamePairs(newListOfValueNamePairs, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, VSLPackage.TUPLE__LIST_OF_VALUE_NAME_PAIRS, newListOfValueNamePairs, newListOfValueNamePairs));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EObject getFilteredParentRule(EClass filter)
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Type getExpectedType()
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Element getContextElement()
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.TUPLE__LIST_OF_VALUE_NAME_PAIRS:
+ return basicSetListOfValueNamePairs(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 VSLPackage.TUPLE__LIST_OF_VALUE_NAME_PAIRS:
+ return getListOfValueNamePairs();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.TUPLE__LIST_OF_VALUE_NAME_PAIRS:
+ setListOfValueNamePairs((ListOfValueNamePairs)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.TUPLE__LIST_OF_VALUE_NAME_PAIRS:
+ setListOfValueNamePairs((ListOfValueNamePairs)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.TUPLE__LIST_OF_VALUE_NAME_PAIRS:
+ return listOfValueNamePairs != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //TupleImpl
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/UnaryExpressionImpl.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/UnaryExpressionImpl.java
new file mode 100644
index 00000000000..c5d27d6a106
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/UnaryExpressionImpl.java
@@ -0,0 +1,374 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL.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.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.papyrus.marte.vsl.vSL.PrimaryExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.UnaryExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.VSLPackage;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Unary Expression</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.impl.UnaryExpressionImpl#getOp <em>Op</em>}</li>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.impl.UnaryExpressionImpl#getUnary <em>Unary</em>}</li>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.impl.UnaryExpressionImpl#getExp <em>Exp</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class UnaryExpressionImpl extends MinimalEObjectImpl.Container implements UnaryExpression
+{
+ /**
+ * The default value of the '{@link #getOp() <em>Op</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getOp()
+ * @generated
+ * @ordered
+ */
+ protected static final String OP_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getOp() <em>Op</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getOp()
+ * @generated
+ * @ordered
+ */
+ protected String op = OP_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getUnary() <em>Unary</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getUnary()
+ * @generated
+ * @ordered
+ */
+ protected UnaryExpression unary;
+
+ /**
+ * The cached value of the '{@link #getExp() <em>Exp</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getExp()
+ * @generated
+ * @ordered
+ */
+ protected PrimaryExpression exp;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected UnaryExpressionImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return VSLPackage.Literals.UNARY_EXPRESSION;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getOp()
+ {
+ return op;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setOp(String newOp)
+ {
+ String oldOp = op;
+ op = newOp;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, VSLPackage.UNARY_EXPRESSION__OP, oldOp, op));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public UnaryExpression getUnary()
+ {
+ return unary;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetUnary(UnaryExpression newUnary, NotificationChain msgs)
+ {
+ UnaryExpression oldUnary = unary;
+ unary = newUnary;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, VSLPackage.UNARY_EXPRESSION__UNARY, oldUnary, newUnary);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setUnary(UnaryExpression newUnary)
+ {
+ if (newUnary != unary)
+ {
+ NotificationChain msgs = null;
+ if (unary != null)
+ msgs = ((InternalEObject)unary).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - VSLPackage.UNARY_EXPRESSION__UNARY, null, msgs);
+ if (newUnary != null)
+ msgs = ((InternalEObject)newUnary).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - VSLPackage.UNARY_EXPRESSION__UNARY, null, msgs);
+ msgs = basicSetUnary(newUnary, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, VSLPackage.UNARY_EXPRESSION__UNARY, newUnary, newUnary));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PrimaryExpression getExp()
+ {
+ return exp;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetExp(PrimaryExpression newExp, NotificationChain msgs)
+ {
+ PrimaryExpression oldExp = exp;
+ exp = newExp;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, VSLPackage.UNARY_EXPRESSION__EXP, oldExp, newExp);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setExp(PrimaryExpression newExp)
+ {
+ if (newExp != exp)
+ {
+ NotificationChain msgs = null;
+ if (exp != null)
+ msgs = ((InternalEObject)exp).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - VSLPackage.UNARY_EXPRESSION__EXP, null, msgs);
+ if (newExp != null)
+ msgs = ((InternalEObject)newExp).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - VSLPackage.UNARY_EXPRESSION__EXP, null, msgs);
+ msgs = basicSetExp(newExp, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, VSLPackage.UNARY_EXPRESSION__EXP, newExp, newExp));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EObject getFilteredParentRule(EClass filter)
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Type getExpectedType()
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Element getContextElement()
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.UNARY_EXPRESSION__UNARY:
+ return basicSetUnary(null, msgs);
+ case VSLPackage.UNARY_EXPRESSION__EXP:
+ return basicSetExp(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 VSLPackage.UNARY_EXPRESSION__OP:
+ return getOp();
+ case VSLPackage.UNARY_EXPRESSION__UNARY:
+ return getUnary();
+ case VSLPackage.UNARY_EXPRESSION__EXP:
+ return getExp();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.UNARY_EXPRESSION__OP:
+ setOp((String)newValue);
+ return;
+ case VSLPackage.UNARY_EXPRESSION__UNARY:
+ setUnary((UnaryExpression)newValue);
+ return;
+ case VSLPackage.UNARY_EXPRESSION__EXP:
+ setExp((PrimaryExpression)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.UNARY_EXPRESSION__OP:
+ setOp(OP_EDEFAULT);
+ return;
+ case VSLPackage.UNARY_EXPRESSION__UNARY:
+ setUnary((UnaryExpression)null);
+ return;
+ case VSLPackage.UNARY_EXPRESSION__EXP:
+ setExp((PrimaryExpression)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.UNARY_EXPRESSION__OP:
+ return OP_EDEFAULT == null ? op != null : !OP_EDEFAULT.equals(op);
+ case VSLPackage.UNARY_EXPRESSION__UNARY:
+ return unary != null;
+ case VSLPackage.UNARY_EXPRESSION__EXP:
+ return exp != 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(" (op: ");
+ result.append(op);
+ result.append(')');
+ return result.toString();
+ }
+
+} //UnaryExpressionImpl
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/UnlimitedLiteralRuleImpl.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/UnlimitedLiteralRuleImpl.java
new file mode 100644
index 00000000000..b8a97a1a2af
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/UnlimitedLiteralRuleImpl.java
@@ -0,0 +1,80 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.papyrus.marte.vsl.vSL.UnlimitedLiteralRule;
+import org.eclipse.papyrus.marte.vsl.vSL.VSLPackage;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Unlimited Literal Rule</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class UnlimitedLiteralRuleImpl extends NumberLiteralRuleImpl implements UnlimitedLiteralRule
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected UnlimitedLiteralRuleImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return VSLPackage.Literals.UNLIMITED_LITERAL_RULE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EObject getFilteredParentRule(EClass filter)
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Type getExpectedType()
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Element getContextElement()
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;
+ }
+
+} //UnlimitedLiteralRuleImpl
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/VSLFactoryImpl.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/VSLFactoryImpl.java
new file mode 100644
index 00000000000..8f0f99b12a4
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/VSLFactoryImpl.java
@@ -0,0 +1,566 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL.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.papyrus.marte.vsl.vSL.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class VSLFactoryImpl extends EFactoryImpl implements VSLFactory
+{
+ /**
+ * Creates the default factory implementation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static VSLFactory init()
+ {
+ try
+ {
+ VSLFactory theVSLFactory = (VSLFactory)EPackage.Registry.INSTANCE.getEFactory("http://www.eclipse.org/papyrus/marte/vsl/VSL");
+ if (theVSLFactory != null)
+ {
+ return theVSLFactory;
+ }
+ }
+ catch (Exception exception)
+ {
+ EcorePlugin.INSTANCE.log(exception);
+ }
+ return new VSLFactoryImpl();
+ }
+
+ /**
+ * Creates an instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public VSLFactoryImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EObject create(EClass eClass)
+ {
+ switch (eClass.getClassifierID())
+ {
+ case VSLPackage.EXPRESSION: return createExpression();
+ case VSLPackage.AND_OR_XOR_EXPRESSION: return createAndOrXorExpression();
+ case VSLPackage.EQUALITY_EXPRESSION: return createEqualityExpression();
+ case VSLPackage.RELATIONAL_EXPRESSION: return createRelationalExpression();
+ case VSLPackage.CONDITIONAL_EXPRESSION: return createConditionalExpression();
+ case VSLPackage.ADDITIVE_EXPRESSION: return createAdditiveExpression();
+ case VSLPackage.MULTIPLICATIVE_EXPRESSION: return createMultiplicativeExpression();
+ case VSLPackage.UNARY_EXPRESSION: return createUnaryExpression();
+ case VSLPackage.PRIMARY_EXPRESSION: return createPrimaryExpression();
+ case VSLPackage.VALUE_SPECIFICATION: return createValueSpecification();
+ case VSLPackage.SUFFIX_EXPRESSION: return createSuffixExpression();
+ case VSLPackage.PROPERTY_CALL_EXPRESSION: return createPropertyCallExpression();
+ case VSLPackage.OPERATION_CALL_EXPRESSION: return createOperationCallExpression();
+ case VSLPackage.LITERAL: return createLiteral();
+ case VSLPackage.NAME_OR_CHOICE_OR_BEHAVIOR_CALL: return createNameOrChoiceOrBehaviorCall();
+ case VSLPackage.QUALIFIED_NAME: return createQualifiedName();
+ case VSLPackage.INTERVAL: return createInterval();
+ case VSLPackage.COLLECTION_OR_TUPLE: return createCollectionOrTuple();
+ case VSLPackage.TUPLE: return createTuple();
+ case VSLPackage.LIST_OF_VALUES: return createListOfValues();
+ case VSLPackage.LIST_OF_VALUE_NAME_PAIRS: return createListOfValueNamePairs();
+ case VSLPackage.VALUE_NAME_PAIR: return createValueNamePair();
+ case VSLPackage.TIME_EXPRESSION: return createTimeExpression();
+ case VSLPackage.INSTANT_OBS_EXPRESSION: return createInstantObsExpression();
+ case VSLPackage.INSTANT_OBS_NAME: return createInstantObsName();
+ case VSLPackage.DURATION_OBS_EXPRESSION: return createDurationObsExpression();
+ case VSLPackage.DURATION_OBS_NAME: return createDurationObsName();
+ case VSLPackage.JITTER_EXP: return createJitterExp();
+ case VSLPackage.VARIABLE_DECLARATION: return createVariableDeclaration();
+ case VSLPackage.DATA_TYPE_NAME: return createDataTypeName();
+ case VSLPackage.NUMBER_LITERAL_RULE: return createNumberLiteralRule();
+ case VSLPackage.INTEGER_LITERAL_RULE: return createIntegerLiteralRule();
+ case VSLPackage.UNLIMITED_LITERAL_RULE: return createUnlimitedLiteralRule();
+ case VSLPackage.REAL_LITERAL_RULE: return createRealLiteralRule();
+ case VSLPackage.DATE_TIME_LITERAL_RULE: return createDateTimeLiteralRule();
+ case VSLPackage.BOOLEAN_LITERAL_RULE: return createBooleanLiteralRule();
+ case VSLPackage.NULL_LITERAL_RULE: return createNullLiteralRule();
+ case VSLPackage.DEFAULT_LITERAL_RULE: return createDefaultLiteralRule();
+ case VSLPackage.STRING_LITERAL_RULE: return createStringLiteralRule();
+ default:
+ throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Expression createExpression()
+ {
+ ExpressionImpl expression = new ExpressionImpl();
+ return expression;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public AndOrXorExpression createAndOrXorExpression()
+ {
+ AndOrXorExpressionImpl andOrXorExpression = new AndOrXorExpressionImpl();
+ return andOrXorExpression;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EqualityExpression createEqualityExpression()
+ {
+ EqualityExpressionImpl equalityExpression = new EqualityExpressionImpl();
+ return equalityExpression;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public RelationalExpression createRelationalExpression()
+ {
+ RelationalExpressionImpl relationalExpression = new RelationalExpressionImpl();
+ return relationalExpression;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ConditionalExpression createConditionalExpression()
+ {
+ ConditionalExpressionImpl conditionalExpression = new ConditionalExpressionImpl();
+ return conditionalExpression;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public AdditiveExpression createAdditiveExpression()
+ {
+ AdditiveExpressionImpl additiveExpression = new AdditiveExpressionImpl();
+ return additiveExpression;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public MultiplicativeExpression createMultiplicativeExpression()
+ {
+ MultiplicativeExpressionImpl multiplicativeExpression = new MultiplicativeExpressionImpl();
+ return multiplicativeExpression;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public UnaryExpression createUnaryExpression()
+ {
+ UnaryExpressionImpl unaryExpression = new UnaryExpressionImpl();
+ return unaryExpression;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PrimaryExpression createPrimaryExpression()
+ {
+ PrimaryExpressionImpl primaryExpression = new PrimaryExpressionImpl();
+ return primaryExpression;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ValueSpecification createValueSpecification()
+ {
+ ValueSpecificationImpl valueSpecification = new ValueSpecificationImpl();
+ return valueSpecification;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SuffixExpression createSuffixExpression()
+ {
+ SuffixExpressionImpl suffixExpression = new SuffixExpressionImpl();
+ return suffixExpression;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PropertyCallExpression createPropertyCallExpression()
+ {
+ PropertyCallExpressionImpl propertyCallExpression = new PropertyCallExpressionImpl();
+ return propertyCallExpression;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public OperationCallExpression createOperationCallExpression()
+ {
+ OperationCallExpressionImpl operationCallExpression = new OperationCallExpressionImpl();
+ return operationCallExpression;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Literal createLiteral()
+ {
+ LiteralImpl literal = new LiteralImpl();
+ return literal;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NameOrChoiceOrBehaviorCall createNameOrChoiceOrBehaviorCall()
+ {
+ NameOrChoiceOrBehaviorCallImpl nameOrChoiceOrBehaviorCall = new NameOrChoiceOrBehaviorCallImpl();
+ return nameOrChoiceOrBehaviorCall;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public QualifiedName createQualifiedName()
+ {
+ QualifiedNameImpl qualifiedName = new QualifiedNameImpl();
+ return qualifiedName;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Interval createInterval()
+ {
+ IntervalImpl interval = new IntervalImpl();
+ return interval;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CollectionOrTuple createCollectionOrTuple()
+ {
+ CollectionOrTupleImpl collectionOrTuple = new CollectionOrTupleImpl();
+ return collectionOrTuple;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Tuple createTuple()
+ {
+ TupleImpl tuple = new TupleImpl();
+ return tuple;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ListOfValues createListOfValues()
+ {
+ ListOfValuesImpl listOfValues = new ListOfValuesImpl();
+ return listOfValues;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ListOfValueNamePairs createListOfValueNamePairs()
+ {
+ ListOfValueNamePairsImpl listOfValueNamePairs = new ListOfValueNamePairsImpl();
+ return listOfValueNamePairs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ValueNamePair createValueNamePair()
+ {
+ ValueNamePairImpl valueNamePair = new ValueNamePairImpl();
+ return valueNamePair;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TimeExpression createTimeExpression()
+ {
+ TimeExpressionImpl timeExpression = new TimeExpressionImpl();
+ return timeExpression;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public InstantObsExpression createInstantObsExpression()
+ {
+ InstantObsExpressionImpl instantObsExpression = new InstantObsExpressionImpl();
+ return instantObsExpression;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public InstantObsName createInstantObsName()
+ {
+ InstantObsNameImpl instantObsName = new InstantObsNameImpl();
+ return instantObsName;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DurationObsExpression createDurationObsExpression()
+ {
+ DurationObsExpressionImpl durationObsExpression = new DurationObsExpressionImpl();
+ return durationObsExpression;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DurationObsName createDurationObsName()
+ {
+ DurationObsNameImpl durationObsName = new DurationObsNameImpl();
+ return durationObsName;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public JitterExp createJitterExp()
+ {
+ JitterExpImpl jitterExp = new JitterExpImpl();
+ return jitterExp;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public VariableDeclaration createVariableDeclaration()
+ {
+ VariableDeclarationImpl variableDeclaration = new VariableDeclarationImpl();
+ return variableDeclaration;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DataTypeName createDataTypeName()
+ {
+ DataTypeNameImpl dataTypeName = new DataTypeNameImpl();
+ return dataTypeName;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NumberLiteralRule createNumberLiteralRule()
+ {
+ NumberLiteralRuleImpl numberLiteralRule = new NumberLiteralRuleImpl();
+ return numberLiteralRule;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public IntegerLiteralRule createIntegerLiteralRule()
+ {
+ IntegerLiteralRuleImpl integerLiteralRule = new IntegerLiteralRuleImpl();
+ return integerLiteralRule;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public UnlimitedLiteralRule createUnlimitedLiteralRule()
+ {
+ UnlimitedLiteralRuleImpl unlimitedLiteralRule = new UnlimitedLiteralRuleImpl();
+ return unlimitedLiteralRule;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public RealLiteralRule createRealLiteralRule()
+ {
+ RealLiteralRuleImpl realLiteralRule = new RealLiteralRuleImpl();
+ return realLiteralRule;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DateTimeLiteralRule createDateTimeLiteralRule()
+ {
+ DateTimeLiteralRuleImpl dateTimeLiteralRule = new DateTimeLiteralRuleImpl();
+ return dateTimeLiteralRule;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public BooleanLiteralRule createBooleanLiteralRule()
+ {
+ BooleanLiteralRuleImpl booleanLiteralRule = new BooleanLiteralRuleImpl();
+ return booleanLiteralRule;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NullLiteralRule createNullLiteralRule()
+ {
+ NullLiteralRuleImpl nullLiteralRule = new NullLiteralRuleImpl();
+ return nullLiteralRule;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DefaultLiteralRule createDefaultLiteralRule()
+ {
+ DefaultLiteralRuleImpl defaultLiteralRule = new DefaultLiteralRuleImpl();
+ return defaultLiteralRule;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public StringLiteralRule createStringLiteralRule()
+ {
+ StringLiteralRuleImpl stringLiteralRule = new StringLiteralRuleImpl();
+ return stringLiteralRule;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public VSLPackage getVSLPackage()
+ {
+ return (VSLPackage)getEPackage();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @deprecated
+ * @generated
+ */
+ @Deprecated
+ public static VSLPackage getPackage()
+ {
+ return VSLPackage.eINSTANCE;
+ }
+
+} //VSLFactoryImpl
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/VSLPackageImpl.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/VSLPackageImpl.java
new file mode 100644
index 00000000000..81d313c111f
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/VSLPackageImpl.java
@@ -0,0 +1,1990 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL.impl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EOperation;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+import org.eclipse.papyrus.marte.vsl.vSL.AdditiveExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.AndOrXorExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.BooleanLiteralRule;
+import org.eclipse.papyrus.marte.vsl.vSL.CollectionOrTuple;
+import org.eclipse.papyrus.marte.vsl.vSL.ConditionalExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.DataTypeName;
+import org.eclipse.papyrus.marte.vsl.vSL.DateTimeLiteralRule;
+import org.eclipse.papyrus.marte.vsl.vSL.DefaultLiteralRule;
+import org.eclipse.papyrus.marte.vsl.vSL.DurationObsExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.DurationObsName;
+import org.eclipse.papyrus.marte.vsl.vSL.EqualityExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.Expression;
+import org.eclipse.papyrus.marte.vsl.vSL.InstantObsExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.InstantObsName;
+import org.eclipse.papyrus.marte.vsl.vSL.IntegerLiteralRule;
+import org.eclipse.papyrus.marte.vsl.vSL.Interval;
+import org.eclipse.papyrus.marte.vsl.vSL.JitterExp;
+import org.eclipse.papyrus.marte.vsl.vSL.ListOfValueNamePairs;
+import org.eclipse.papyrus.marte.vsl.vSL.ListOfValues;
+import org.eclipse.papyrus.marte.vsl.vSL.Literal;
+import org.eclipse.papyrus.marte.vsl.vSL.MultiplicativeExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.NameOrChoiceOrBehaviorCall;
+import org.eclipse.papyrus.marte.vsl.vSL.NullLiteralRule;
+import org.eclipse.papyrus.marte.vsl.vSL.NumberLiteralRule;
+import org.eclipse.papyrus.marte.vsl.vSL.OperationCallExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.PrimaryExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.PropertyCallExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.QualifiedName;
+import org.eclipse.papyrus.marte.vsl.vSL.RealLiteralRule;
+import org.eclipse.papyrus.marte.vsl.vSL.RelationalExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.StringLiteralRule;
+import org.eclipse.papyrus.marte.vsl.vSL.SuffixExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.TimeExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.Tuple;
+import org.eclipse.papyrus.marte.vsl.vSL.UnaryExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.UnlimitedLiteralRule;
+import org.eclipse.papyrus.marte.vsl.vSL.VSLFactory;
+import org.eclipse.papyrus.marte.vsl.vSL.VSLPackage;
+import org.eclipse.papyrus.marte.vsl.vSL.ValueNamePair;
+import org.eclipse.papyrus.marte.vsl.vSL.ValueSpecification;
+import org.eclipse.papyrus.marte.vsl.vSL.VariableDeclaration;
+
+import org.eclipse.uml2.uml.UMLPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class VSLPackageImpl extends EPackageImpl implements VSLPackage
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass expressionEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass andOrXorExpressionEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass equalityExpressionEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass relationalExpressionEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass conditionalExpressionEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass additiveExpressionEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass multiplicativeExpressionEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass unaryExpressionEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass primaryExpressionEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass valueSpecificationEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass suffixExpressionEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass propertyCallExpressionEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass operationCallExpressionEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass literalEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass nameOrChoiceOrBehaviorCallEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass qualifiedNameEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass intervalEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass collectionOrTupleEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass tupleEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass listOfValuesEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass listOfValueNamePairsEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass valueNamePairEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass timeExpressionEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass instantObsExpressionEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass instantObsNameEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass durationObsExpressionEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass durationObsNameEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass jitterExpEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass variableDeclarationEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass dataTypeNameEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass numberLiteralRuleEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass integerLiteralRuleEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass unlimitedLiteralRuleEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass realLiteralRuleEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass dateTimeLiteralRuleEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass booleanLiteralRuleEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass nullLiteralRuleEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass defaultLiteralRuleEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass stringLiteralRuleEClass = 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.papyrus.marte.vsl.vSL.VSLPackage#eNS_URI
+ * @see #init()
+ * @generated
+ */
+ private VSLPackageImpl()
+ {
+ super(eNS_URI, VSLFactory.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.
+ *
+ * <p>This method is used to initialize {@link VSLPackage#eINSTANCE} when that field is accessed.
+ * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #eNS_URI
+ * @see #createPackageContents()
+ * @see #initializePackageContents()
+ * @generated
+ */
+ public static VSLPackage init()
+ {
+ if (isInited) return (VSLPackage)EPackage.Registry.INSTANCE.getEPackage(VSLPackage.eNS_URI);
+
+ // Obtain or create and register package
+ VSLPackageImpl theVSLPackage = (VSLPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof VSLPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new VSLPackageImpl());
+
+ isInited = true;
+
+ // Initialize simple dependencies
+ UMLPackage.eINSTANCE.eClass();
+
+ // Create package meta-data objects
+ theVSLPackage.createPackageContents();
+
+ // Initialize created meta-data
+ theVSLPackage.initializePackageContents();
+
+ // Mark meta-data to indicate it can't be changed
+ theVSLPackage.freeze();
+
+
+ // Update the registry and return the package
+ EPackage.Registry.INSTANCE.put(VSLPackage.eNS_URI, theVSLPackage);
+ return theVSLPackage;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getExpression()
+ {
+ return expressionEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getExpression_Exp()
+ {
+ return (EReference)expressionEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getAndOrXorExpression()
+ {
+ return andOrXorExpressionEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getAndOrXorExpression_Exp()
+ {
+ return (EReference)andOrXorExpressionEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getAndOrXorExpression_Op()
+ {
+ return (EAttribute)andOrXorExpressionEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getEqualityExpression()
+ {
+ return equalityExpressionEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getEqualityExpression_Exp()
+ {
+ return (EReference)equalityExpressionEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getEqualityExpression_Op()
+ {
+ return (EAttribute)equalityExpressionEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getRelationalExpression()
+ {
+ return relationalExpressionEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getRelationalExpression_Exp()
+ {
+ return (EReference)relationalExpressionEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getRelationalExpression_Op()
+ {
+ return (EAttribute)relationalExpressionEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getConditionalExpression()
+ {
+ return conditionalExpressionEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getConditionalExpression_Exp()
+ {
+ return (EReference)conditionalExpressionEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getConditionalExpression_Op()
+ {
+ return (EAttribute)conditionalExpressionEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getAdditiveExpression()
+ {
+ return additiveExpressionEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getAdditiveExpression_Exp()
+ {
+ return (EReference)additiveExpressionEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getAdditiveExpression_Op()
+ {
+ return (EAttribute)additiveExpressionEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getMultiplicativeExpression()
+ {
+ return multiplicativeExpressionEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getMultiplicativeExpression_Exp()
+ {
+ return (EReference)multiplicativeExpressionEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getMultiplicativeExpression_Op()
+ {
+ return (EAttribute)multiplicativeExpressionEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getUnaryExpression()
+ {
+ return unaryExpressionEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getUnaryExpression_Op()
+ {
+ return (EAttribute)unaryExpressionEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getUnaryExpression_Unary()
+ {
+ return (EReference)unaryExpressionEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getUnaryExpression_Exp()
+ {
+ return (EReference)unaryExpressionEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getPrimaryExpression()
+ {
+ return primaryExpressionEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getPrimaryExpression_Prefix()
+ {
+ return (EReference)primaryExpressionEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getPrimaryExpression_Suffix()
+ {
+ return (EReference)primaryExpressionEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getValueSpecification()
+ {
+ return valueSpecificationEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getSuffixExpression()
+ {
+ return suffixExpressionEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getSuffixExpression_Suffix()
+ {
+ return (EReference)suffixExpressionEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getPropertyCallExpression()
+ {
+ return propertyCallExpressionEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getPropertyCallExpression_Property()
+ {
+ return (EReference)propertyCallExpressionEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getOperationCallExpression()
+ {
+ return operationCallExpressionEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getOperationCallExpression_Operation()
+ {
+ return (EReference)operationCallExpressionEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getOperationCallExpression_Arguments()
+ {
+ return (EReference)operationCallExpressionEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getLiteral()
+ {
+ return literalEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getLiteral_Value()
+ {
+ return (EAttribute)literalEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getNameOrChoiceOrBehaviorCall()
+ {
+ return nameOrChoiceOrBehaviorCallEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getNameOrChoiceOrBehaviorCall_Path()
+ {
+ return (EReference)nameOrChoiceOrBehaviorCallEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getNameOrChoiceOrBehaviorCall_Id()
+ {
+ return (EReference)nameOrChoiceOrBehaviorCallEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getNameOrChoiceOrBehaviorCall_Arguments()
+ {
+ return (EReference)nameOrChoiceOrBehaviorCallEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getQualifiedName()
+ {
+ return qualifiedNameEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getQualifiedName_Path()
+ {
+ return (EReference)qualifiedNameEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getQualifiedName_Remaining()
+ {
+ return (EReference)qualifiedNameEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getInterval()
+ {
+ return intervalEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getInterval_IsLowerIncluded()
+ {
+ return (EAttribute)intervalEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getInterval_Lower()
+ {
+ return (EReference)intervalEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getInterval_Upper()
+ {
+ return (EReference)intervalEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getInterval_IsUpperIncluded()
+ {
+ return (EAttribute)intervalEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getCollectionOrTuple()
+ {
+ return collectionOrTupleEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getCollectionOrTuple_ListOfValues()
+ {
+ return (EReference)collectionOrTupleEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getTuple()
+ {
+ return tupleEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getTuple_ListOfValueNamePairs()
+ {
+ return (EReference)tupleEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getListOfValues()
+ {
+ return listOfValuesEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getListOfValues_Values()
+ {
+ return (EReference)listOfValuesEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getListOfValueNamePairs()
+ {
+ return listOfValueNamePairsEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getListOfValueNamePairs_ValueNamePairs()
+ {
+ return (EReference)listOfValueNamePairsEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getValueNamePair()
+ {
+ return valueNamePairEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getValueNamePair_Property()
+ {
+ return (EReference)valueNamePairEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getValueNamePair_Value()
+ {
+ return (EReference)valueNamePairEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getTimeExpression()
+ {
+ return timeExpressionEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getInstantObsExpression()
+ {
+ return instantObsExpressionEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getInstantObsExpression_Id()
+ {
+ return (EReference)instantObsExpressionEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getInstantObsExpression_Index()
+ {
+ return (EReference)instantObsExpressionEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getInstantObsExpression_Condition()
+ {
+ return (EReference)instantObsExpressionEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getInstantObsName()
+ {
+ return instantObsNameEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getInstantObsName_Path()
+ {
+ return (EReference)instantObsNameEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getInstantObsName_InstantId()
+ {
+ return (EReference)instantObsNameEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getDurationObsExpression()
+ {
+ return durationObsExpressionEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getDurationObsExpression_Id()
+ {
+ return (EReference)durationObsExpressionEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getDurationObsExpression_Index()
+ {
+ return (EReference)durationObsExpressionEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getDurationObsExpression_Condition()
+ {
+ return (EReference)durationObsExpressionEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getDurationObsName()
+ {
+ return durationObsNameEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getDurationObsName_Path()
+ {
+ return (EReference)durationObsNameEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getDurationObsName_DurationId()
+ {
+ return (EReference)durationObsNameEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getJitterExp()
+ {
+ return jitterExpEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getJitterExp_FirstInstant()
+ {
+ return (EReference)jitterExpEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getJitterExp_SecondInstant()
+ {
+ return (EReference)jitterExpEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getVariableDeclaration()
+ {
+ return variableDeclarationEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getVariableDeclaration_VariableDeclaration()
+ {
+ return (EAttribute)variableDeclarationEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getVariableDeclaration_Name()
+ {
+ return (EAttribute)variableDeclarationEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getVariableDeclaration_Type()
+ {
+ return (EReference)variableDeclarationEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getVariableDeclaration_InitValue()
+ {
+ return (EReference)variableDeclarationEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getDataTypeName()
+ {
+ return dataTypeNameEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getDataTypeName_Path()
+ {
+ return (EReference)dataTypeNameEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getDataTypeName_Type()
+ {
+ return (EReference)dataTypeNameEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getNumberLiteralRule()
+ {
+ return numberLiteralRuleEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getIntegerLiteralRule()
+ {
+ return integerLiteralRuleEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getUnlimitedLiteralRule()
+ {
+ return unlimitedLiteralRuleEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getRealLiteralRule()
+ {
+ return realLiteralRuleEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getDateTimeLiteralRule()
+ {
+ return dateTimeLiteralRuleEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getBooleanLiteralRule()
+ {
+ return booleanLiteralRuleEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getNullLiteralRule()
+ {
+ return nullLiteralRuleEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getDefaultLiteralRule()
+ {
+ return defaultLiteralRuleEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getStringLiteralRule()
+ {
+ return stringLiteralRuleEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public VSLFactory getVSLFactory()
+ {
+ return (VSLFactory)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
+ expressionEClass = createEClass(EXPRESSION);
+ createEReference(expressionEClass, EXPRESSION__EXP);
+
+ andOrXorExpressionEClass = createEClass(AND_OR_XOR_EXPRESSION);
+ createEReference(andOrXorExpressionEClass, AND_OR_XOR_EXPRESSION__EXP);
+ createEAttribute(andOrXorExpressionEClass, AND_OR_XOR_EXPRESSION__OP);
+
+ equalityExpressionEClass = createEClass(EQUALITY_EXPRESSION);
+ createEReference(equalityExpressionEClass, EQUALITY_EXPRESSION__EXP);
+ createEAttribute(equalityExpressionEClass, EQUALITY_EXPRESSION__OP);
+
+ relationalExpressionEClass = createEClass(RELATIONAL_EXPRESSION);
+ createEReference(relationalExpressionEClass, RELATIONAL_EXPRESSION__EXP);
+ createEAttribute(relationalExpressionEClass, RELATIONAL_EXPRESSION__OP);
+
+ conditionalExpressionEClass = createEClass(CONDITIONAL_EXPRESSION);
+ createEReference(conditionalExpressionEClass, CONDITIONAL_EXPRESSION__EXP);
+ createEAttribute(conditionalExpressionEClass, CONDITIONAL_EXPRESSION__OP);
+
+ additiveExpressionEClass = createEClass(ADDITIVE_EXPRESSION);
+ createEReference(additiveExpressionEClass, ADDITIVE_EXPRESSION__EXP);
+ createEAttribute(additiveExpressionEClass, ADDITIVE_EXPRESSION__OP);
+
+ multiplicativeExpressionEClass = createEClass(MULTIPLICATIVE_EXPRESSION);
+ createEReference(multiplicativeExpressionEClass, MULTIPLICATIVE_EXPRESSION__EXP);
+ createEAttribute(multiplicativeExpressionEClass, MULTIPLICATIVE_EXPRESSION__OP);
+
+ unaryExpressionEClass = createEClass(UNARY_EXPRESSION);
+ createEAttribute(unaryExpressionEClass, UNARY_EXPRESSION__OP);
+ createEReference(unaryExpressionEClass, UNARY_EXPRESSION__UNARY);
+ createEReference(unaryExpressionEClass, UNARY_EXPRESSION__EXP);
+
+ primaryExpressionEClass = createEClass(PRIMARY_EXPRESSION);
+ createEReference(primaryExpressionEClass, PRIMARY_EXPRESSION__PREFIX);
+ createEReference(primaryExpressionEClass, PRIMARY_EXPRESSION__SUFFIX);
+
+ valueSpecificationEClass = createEClass(VALUE_SPECIFICATION);
+
+ suffixExpressionEClass = createEClass(SUFFIX_EXPRESSION);
+ createEReference(suffixExpressionEClass, SUFFIX_EXPRESSION__SUFFIX);
+
+ propertyCallExpressionEClass = createEClass(PROPERTY_CALL_EXPRESSION);
+ createEReference(propertyCallExpressionEClass, PROPERTY_CALL_EXPRESSION__PROPERTY);
+
+ operationCallExpressionEClass = createEClass(OPERATION_CALL_EXPRESSION);
+ createEReference(operationCallExpressionEClass, OPERATION_CALL_EXPRESSION__OPERATION);
+ createEReference(operationCallExpressionEClass, OPERATION_CALL_EXPRESSION__ARGUMENTS);
+
+ literalEClass = createEClass(LITERAL);
+ createEAttribute(literalEClass, LITERAL__VALUE);
+
+ nameOrChoiceOrBehaviorCallEClass = createEClass(NAME_OR_CHOICE_OR_BEHAVIOR_CALL);
+ createEReference(nameOrChoiceOrBehaviorCallEClass, NAME_OR_CHOICE_OR_BEHAVIOR_CALL__PATH);
+ createEReference(nameOrChoiceOrBehaviorCallEClass, NAME_OR_CHOICE_OR_BEHAVIOR_CALL__ID);
+ createEReference(nameOrChoiceOrBehaviorCallEClass, NAME_OR_CHOICE_OR_BEHAVIOR_CALL__ARGUMENTS);
+
+ qualifiedNameEClass = createEClass(QUALIFIED_NAME);
+ createEReference(qualifiedNameEClass, QUALIFIED_NAME__PATH);
+ createEReference(qualifiedNameEClass, QUALIFIED_NAME__REMAINING);
+
+ intervalEClass = createEClass(INTERVAL);
+ createEAttribute(intervalEClass, INTERVAL__IS_LOWER_INCLUDED);
+ createEReference(intervalEClass, INTERVAL__LOWER);
+ createEReference(intervalEClass, INTERVAL__UPPER);
+ createEAttribute(intervalEClass, INTERVAL__IS_UPPER_INCLUDED);
+
+ collectionOrTupleEClass = createEClass(COLLECTION_OR_TUPLE);
+ createEReference(collectionOrTupleEClass, COLLECTION_OR_TUPLE__LIST_OF_VALUES);
+
+ tupleEClass = createEClass(TUPLE);
+ createEReference(tupleEClass, TUPLE__LIST_OF_VALUE_NAME_PAIRS);
+
+ listOfValuesEClass = createEClass(LIST_OF_VALUES);
+ createEReference(listOfValuesEClass, LIST_OF_VALUES__VALUES);
+
+ listOfValueNamePairsEClass = createEClass(LIST_OF_VALUE_NAME_PAIRS);
+ createEReference(listOfValueNamePairsEClass, LIST_OF_VALUE_NAME_PAIRS__VALUE_NAME_PAIRS);
+
+ valueNamePairEClass = createEClass(VALUE_NAME_PAIR);
+ createEReference(valueNamePairEClass, VALUE_NAME_PAIR__PROPERTY);
+ createEReference(valueNamePairEClass, VALUE_NAME_PAIR__VALUE);
+
+ timeExpressionEClass = createEClass(TIME_EXPRESSION);
+
+ instantObsExpressionEClass = createEClass(INSTANT_OBS_EXPRESSION);
+ createEReference(instantObsExpressionEClass, INSTANT_OBS_EXPRESSION__ID);
+ createEReference(instantObsExpressionEClass, INSTANT_OBS_EXPRESSION__INDEX);
+ createEReference(instantObsExpressionEClass, INSTANT_OBS_EXPRESSION__CONDITION);
+
+ instantObsNameEClass = createEClass(INSTANT_OBS_NAME);
+ createEReference(instantObsNameEClass, INSTANT_OBS_NAME__PATH);
+ createEReference(instantObsNameEClass, INSTANT_OBS_NAME__INSTANT_ID);
+
+ durationObsExpressionEClass = createEClass(DURATION_OBS_EXPRESSION);
+ createEReference(durationObsExpressionEClass, DURATION_OBS_EXPRESSION__ID);
+ createEReference(durationObsExpressionEClass, DURATION_OBS_EXPRESSION__INDEX);
+ createEReference(durationObsExpressionEClass, DURATION_OBS_EXPRESSION__CONDITION);
+
+ durationObsNameEClass = createEClass(DURATION_OBS_NAME);
+ createEReference(durationObsNameEClass, DURATION_OBS_NAME__PATH);
+ createEReference(durationObsNameEClass, DURATION_OBS_NAME__DURATION_ID);
+
+ jitterExpEClass = createEClass(JITTER_EXP);
+ createEReference(jitterExpEClass, JITTER_EXP__FIRST_INSTANT);
+ createEReference(jitterExpEClass, JITTER_EXP__SECOND_INSTANT);
+
+ variableDeclarationEClass = createEClass(VARIABLE_DECLARATION);
+ createEAttribute(variableDeclarationEClass, VARIABLE_DECLARATION__VARIABLE_DECLARATION);
+ createEAttribute(variableDeclarationEClass, VARIABLE_DECLARATION__NAME);
+ createEReference(variableDeclarationEClass, VARIABLE_DECLARATION__TYPE);
+ createEReference(variableDeclarationEClass, VARIABLE_DECLARATION__INIT_VALUE);
+
+ dataTypeNameEClass = createEClass(DATA_TYPE_NAME);
+ createEReference(dataTypeNameEClass, DATA_TYPE_NAME__PATH);
+ createEReference(dataTypeNameEClass, DATA_TYPE_NAME__TYPE);
+
+ numberLiteralRuleEClass = createEClass(NUMBER_LITERAL_RULE);
+
+ integerLiteralRuleEClass = createEClass(INTEGER_LITERAL_RULE);
+
+ unlimitedLiteralRuleEClass = createEClass(UNLIMITED_LITERAL_RULE);
+
+ realLiteralRuleEClass = createEClass(REAL_LITERAL_RULE);
+
+ dateTimeLiteralRuleEClass = createEClass(DATE_TIME_LITERAL_RULE);
+
+ booleanLiteralRuleEClass = createEClass(BOOLEAN_LITERAL_RULE);
+
+ nullLiteralRuleEClass = createEClass(NULL_LITERAL_RULE);
+
+ defaultLiteralRuleEClass = createEClass(DEFAULT_LITERAL_RULE);
+
+ stringLiteralRuleEClass = createEClass(STRING_LITERAL_RULE);
+ }
+
+ /**
+ * <!-- 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
+ UMLPackage theUMLPackage = (UMLPackage)EPackage.Registry.INSTANCE.getEPackage(UMLPackage.eNS_URI);
+
+ // Create type parameters
+
+ // Set bounds for type parameters
+
+ // Add supertypes to classes
+ expressionEClass.getESuperTypes().add(this.getValueSpecification());
+ propertyCallExpressionEClass.getESuperTypes().add(this.getSuffixExpression());
+ operationCallExpressionEClass.getESuperTypes().add(this.getSuffixExpression());
+ literalEClass.getESuperTypes().add(this.getValueSpecification());
+ nameOrChoiceOrBehaviorCallEClass.getESuperTypes().add(this.getValueSpecification());
+ intervalEClass.getESuperTypes().add(this.getValueSpecification());
+ collectionOrTupleEClass.getESuperTypes().add(this.getValueSpecification());
+ tupleEClass.getESuperTypes().add(this.getValueSpecification());
+ timeExpressionEClass.getESuperTypes().add(this.getValueSpecification());
+ instantObsExpressionEClass.getESuperTypes().add(this.getTimeExpression());
+ durationObsExpressionEClass.getESuperTypes().add(this.getTimeExpression());
+ jitterExpEClass.getESuperTypes().add(this.getTimeExpression());
+ variableDeclarationEClass.getESuperTypes().add(this.getValueSpecification());
+ numberLiteralRuleEClass.getESuperTypes().add(this.getLiteral());
+ integerLiteralRuleEClass.getESuperTypes().add(this.getNumberLiteralRule());
+ unlimitedLiteralRuleEClass.getESuperTypes().add(this.getNumberLiteralRule());
+ realLiteralRuleEClass.getESuperTypes().add(this.getNumberLiteralRule());
+ dateTimeLiteralRuleEClass.getESuperTypes().add(this.getLiteral());
+ booleanLiteralRuleEClass.getESuperTypes().add(this.getLiteral());
+ nullLiteralRuleEClass.getESuperTypes().add(this.getLiteral());
+ defaultLiteralRuleEClass.getESuperTypes().add(this.getLiteral());
+ stringLiteralRuleEClass.getESuperTypes().add(this.getLiteral());
+
+ // Initialize classes and features; add operations and parameters
+ initEClass(expressionEClass, Expression.class, "Expression", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getExpression_Exp(), this.getAndOrXorExpression(), null, "exp", null, 0, 1, Expression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ EOperation op = addEOperation(expressionEClass, ecorePackage.getEObject(), "getFilteredParentRule", 0, 1, IS_UNIQUE, IS_ORDERED);
+ addEParameter(op, ecorePackage.getEClass(), "filter", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(expressionEClass, theUMLPackage.getType(), "getExpectedType", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(expressionEClass, theUMLPackage.getElement(), "getContextElement", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ initEClass(andOrXorExpressionEClass, AndOrXorExpression.class, "AndOrXorExpression", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getAndOrXorExpression_Exp(), this.getEqualityExpression(), null, "exp", null, 0, -1, AndOrXorExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getAndOrXorExpression_Op(), ecorePackage.getEString(), "op", null, 0, -1, AndOrXorExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ op = addEOperation(andOrXorExpressionEClass, ecorePackage.getEObject(), "getFilteredParentRule", 0, 1, IS_UNIQUE, IS_ORDERED);
+ addEParameter(op, ecorePackage.getEClass(), "filter", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(andOrXorExpressionEClass, theUMLPackage.getType(), "getExpectedType", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(andOrXorExpressionEClass, theUMLPackage.getElement(), "getContextElement", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ initEClass(equalityExpressionEClass, EqualityExpression.class, "EqualityExpression", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getEqualityExpression_Exp(), this.getRelationalExpression(), null, "exp", null, 0, -1, EqualityExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getEqualityExpression_Op(), ecorePackage.getEString(), "op", null, 0, -1, EqualityExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ op = addEOperation(equalityExpressionEClass, ecorePackage.getEObject(), "getFilteredParentRule", 0, 1, IS_UNIQUE, IS_ORDERED);
+ addEParameter(op, ecorePackage.getEClass(), "filter", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(equalityExpressionEClass, theUMLPackage.getType(), "getExpectedType", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(equalityExpressionEClass, theUMLPackage.getElement(), "getContextElement", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ initEClass(relationalExpressionEClass, RelationalExpression.class, "RelationalExpression", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getRelationalExpression_Exp(), this.getConditionalExpression(), null, "exp", null, 0, -1, RelationalExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getRelationalExpression_Op(), ecorePackage.getEString(), "op", null, 0, -1, RelationalExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ op = addEOperation(relationalExpressionEClass, ecorePackage.getEObject(), "getFilteredParentRule", 0, 1, IS_UNIQUE, IS_ORDERED);
+ addEParameter(op, ecorePackage.getEClass(), "filter", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(relationalExpressionEClass, theUMLPackage.getType(), "getExpectedType", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(relationalExpressionEClass, theUMLPackage.getElement(), "getContextElement", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ initEClass(conditionalExpressionEClass, ConditionalExpression.class, "ConditionalExpression", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getConditionalExpression_Exp(), this.getAdditiveExpression(), null, "exp", null, 0, -1, ConditionalExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getConditionalExpression_Op(), ecorePackage.getEString(), "op", null, 0, -1, ConditionalExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ op = addEOperation(conditionalExpressionEClass, ecorePackage.getEObject(), "getFilteredParentRule", 0, 1, IS_UNIQUE, IS_ORDERED);
+ addEParameter(op, ecorePackage.getEClass(), "filter", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(conditionalExpressionEClass, theUMLPackage.getType(), "getExpectedType", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(conditionalExpressionEClass, theUMLPackage.getElement(), "getContextElement", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ initEClass(additiveExpressionEClass, AdditiveExpression.class, "AdditiveExpression", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getAdditiveExpression_Exp(), this.getMultiplicativeExpression(), null, "exp", null, 0, -1, AdditiveExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getAdditiveExpression_Op(), ecorePackage.getEString(), "op", null, 0, -1, AdditiveExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ op = addEOperation(additiveExpressionEClass, ecorePackage.getEObject(), "getFilteredParentRule", 0, 1, IS_UNIQUE, IS_ORDERED);
+ addEParameter(op, ecorePackage.getEClass(), "filter", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(additiveExpressionEClass, theUMLPackage.getType(), "getExpectedType", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(additiveExpressionEClass, theUMLPackage.getElement(), "getContextElement", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ initEClass(multiplicativeExpressionEClass, MultiplicativeExpression.class, "MultiplicativeExpression", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getMultiplicativeExpression_Exp(), this.getUnaryExpression(), null, "exp", null, 0, -1, MultiplicativeExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getMultiplicativeExpression_Op(), ecorePackage.getEString(), "op", null, 0, -1, MultiplicativeExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ op = addEOperation(multiplicativeExpressionEClass, ecorePackage.getEObject(), "getFilteredParentRule", 0, 1, IS_UNIQUE, IS_ORDERED);
+ addEParameter(op, ecorePackage.getEClass(), "filter", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(multiplicativeExpressionEClass, theUMLPackage.getType(), "getExpectedType", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(multiplicativeExpressionEClass, theUMLPackage.getElement(), "getContextElement", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ initEClass(unaryExpressionEClass, UnaryExpression.class, "UnaryExpression", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getUnaryExpression_Op(), ecorePackage.getEString(), "op", null, 0, 1, UnaryExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getUnaryExpression_Unary(), this.getUnaryExpression(), null, "unary", null, 0, 1, UnaryExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getUnaryExpression_Exp(), this.getPrimaryExpression(), null, "exp", null, 0, 1, UnaryExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ op = addEOperation(unaryExpressionEClass, ecorePackage.getEObject(), "getFilteredParentRule", 0, 1, IS_UNIQUE, IS_ORDERED);
+ addEParameter(op, ecorePackage.getEClass(), "filter", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(unaryExpressionEClass, theUMLPackage.getType(), "getExpectedType", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(unaryExpressionEClass, theUMLPackage.getElement(), "getContextElement", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ initEClass(primaryExpressionEClass, PrimaryExpression.class, "PrimaryExpression", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getPrimaryExpression_Prefix(), this.getValueSpecification(), null, "prefix", null, 0, 1, PrimaryExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getPrimaryExpression_Suffix(), this.getSuffixExpression(), null, "suffix", null, 0, 1, PrimaryExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ op = addEOperation(primaryExpressionEClass, ecorePackage.getEObject(), "getFilteredParentRule", 0, 1, IS_UNIQUE, IS_ORDERED);
+ addEParameter(op, ecorePackage.getEClass(), "filter", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(primaryExpressionEClass, theUMLPackage.getType(), "getExpectedType", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(primaryExpressionEClass, theUMLPackage.getElement(), "getContextElement", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ initEClass(valueSpecificationEClass, ValueSpecification.class, "ValueSpecification", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ op = addEOperation(valueSpecificationEClass, ecorePackage.getEObject(), "getFilteredParentRule", 0, 1, IS_UNIQUE, IS_ORDERED);
+ addEParameter(op, ecorePackage.getEClass(), "filter", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(valueSpecificationEClass, theUMLPackage.getType(), "getExpectedType", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(valueSpecificationEClass, theUMLPackage.getElement(), "getContextElement", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ initEClass(suffixExpressionEClass, SuffixExpression.class, "SuffixExpression", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getSuffixExpression_Suffix(), this.getSuffixExpression(), null, "suffix", null, 0, 1, SuffixExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ op = addEOperation(suffixExpressionEClass, ecorePackage.getEObject(), "getFilteredParentRule", 0, 1, IS_UNIQUE, IS_ORDERED);
+ addEParameter(op, ecorePackage.getEClass(), "filter", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(suffixExpressionEClass, theUMLPackage.getType(), "getExpectedType", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(suffixExpressionEClass, theUMLPackage.getElement(), "getContextElement", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ initEClass(propertyCallExpressionEClass, PropertyCallExpression.class, "PropertyCallExpression", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getPropertyCallExpression_Property(), theUMLPackage.getProperty(), null, "property", null, 0, 1, PropertyCallExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ op = addEOperation(propertyCallExpressionEClass, ecorePackage.getEObject(), "getFilteredParentRule", 0, 1, IS_UNIQUE, IS_ORDERED);
+ addEParameter(op, ecorePackage.getEClass(), "filter", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(propertyCallExpressionEClass, theUMLPackage.getType(), "getExpectedType", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(propertyCallExpressionEClass, theUMLPackage.getElement(), "getContextElement", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ initEClass(operationCallExpressionEClass, OperationCallExpression.class, "OperationCallExpression", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getOperationCallExpression_Operation(), theUMLPackage.getOperation(), null, "operation", null, 0, 1, OperationCallExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getOperationCallExpression_Arguments(), this.getListOfValues(), null, "arguments", null, 0, 1, OperationCallExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ op = addEOperation(operationCallExpressionEClass, ecorePackage.getEObject(), "getFilteredParentRule", 0, 1, IS_UNIQUE, IS_ORDERED);
+ addEParameter(op, ecorePackage.getEClass(), "filter", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(operationCallExpressionEClass, theUMLPackage.getType(), "getExpectedType", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(operationCallExpressionEClass, theUMLPackage.getElement(), "getContextElement", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ initEClass(literalEClass, Literal.class, "Literal", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getLiteral_Value(), ecorePackage.getEString(), "value", null, 0, 1, Literal.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ op = addEOperation(literalEClass, ecorePackage.getEObject(), "getFilteredParentRule", 0, 1, IS_UNIQUE, IS_ORDERED);
+ addEParameter(op, ecorePackage.getEClass(), "filter", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(literalEClass, theUMLPackage.getType(), "getExpectedType", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(literalEClass, theUMLPackage.getElement(), "getContextElement", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ initEClass(nameOrChoiceOrBehaviorCallEClass, NameOrChoiceOrBehaviorCall.class, "NameOrChoiceOrBehaviorCall", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getNameOrChoiceOrBehaviorCall_Path(), this.getQualifiedName(), null, "path", null, 0, 1, NameOrChoiceOrBehaviorCall.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getNameOrChoiceOrBehaviorCall_Id(), theUMLPackage.getNamedElement(), null, "id", null, 0, 1, NameOrChoiceOrBehaviorCall.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getNameOrChoiceOrBehaviorCall_Arguments(), this.getListOfValues(), null, "arguments", null, 0, 1, NameOrChoiceOrBehaviorCall.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ op = addEOperation(nameOrChoiceOrBehaviorCallEClass, ecorePackage.getEObject(), "getFilteredParentRule", 0, 1, IS_UNIQUE, IS_ORDERED);
+ addEParameter(op, ecorePackage.getEClass(), "filter", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(nameOrChoiceOrBehaviorCallEClass, theUMLPackage.getType(), "getExpectedType", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(nameOrChoiceOrBehaviorCallEClass, theUMLPackage.getElement(), "getContextElement", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ initEClass(qualifiedNameEClass, QualifiedName.class, "QualifiedName", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getQualifiedName_Path(), theUMLPackage.getNamespace(), null, "path", null, 0, 1, QualifiedName.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getQualifiedName_Remaining(), this.getQualifiedName(), null, "remaining", null, 0, 1, QualifiedName.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ op = addEOperation(qualifiedNameEClass, ecorePackage.getEObject(), "getFilteredParentRule", 0, 1, IS_UNIQUE, IS_ORDERED);
+ addEParameter(op, ecorePackage.getEClass(), "filter", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(qualifiedNameEClass, theUMLPackage.getType(), "getExpectedType", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(qualifiedNameEClass, theUMLPackage.getElement(), "getContextElement", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ initEClass(intervalEClass, Interval.class, "Interval", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getInterval_IsLowerIncluded(), ecorePackage.getEString(), "isLowerIncluded", null, 0, 1, Interval.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getInterval_Lower(), this.getExpression(), null, "lower", null, 0, 1, Interval.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getInterval_Upper(), this.getExpression(), null, "upper", null, 0, 1, Interval.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getInterval_IsUpperIncluded(), ecorePackage.getEString(), "isUpperIncluded", null, 0, 1, Interval.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ op = addEOperation(intervalEClass, ecorePackage.getEObject(), "getFilteredParentRule", 0, 1, IS_UNIQUE, IS_ORDERED);
+ addEParameter(op, ecorePackage.getEClass(), "filter", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(intervalEClass, theUMLPackage.getType(), "getExpectedType", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(intervalEClass, theUMLPackage.getElement(), "getContextElement", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ initEClass(collectionOrTupleEClass, CollectionOrTuple.class, "CollectionOrTuple", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getCollectionOrTuple_ListOfValues(), this.getListOfValues(), null, "listOfValues", null, 0, 1, CollectionOrTuple.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ op = addEOperation(collectionOrTupleEClass, ecorePackage.getEObject(), "getFilteredParentRule", 0, 1, IS_UNIQUE, IS_ORDERED);
+ addEParameter(op, ecorePackage.getEClass(), "filter", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(collectionOrTupleEClass, theUMLPackage.getType(), "getExpectedType", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(collectionOrTupleEClass, theUMLPackage.getElement(), "getContextElement", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ initEClass(tupleEClass, Tuple.class, "Tuple", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getTuple_ListOfValueNamePairs(), this.getListOfValueNamePairs(), null, "listOfValueNamePairs", null, 0, 1, Tuple.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ op = addEOperation(tupleEClass, ecorePackage.getEObject(), "getFilteredParentRule", 0, 1, IS_UNIQUE, IS_ORDERED);
+ addEParameter(op, ecorePackage.getEClass(), "filter", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(tupleEClass, theUMLPackage.getType(), "getExpectedType", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(tupleEClass, theUMLPackage.getElement(), "getContextElement", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ initEClass(listOfValuesEClass, ListOfValues.class, "ListOfValues", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getListOfValues_Values(), this.getExpression(), null, "values", null, 0, -1, ListOfValues.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ op = addEOperation(listOfValuesEClass, ecorePackage.getEObject(), "getFilteredParentRule", 0, 1, IS_UNIQUE, IS_ORDERED);
+ addEParameter(op, ecorePackage.getEClass(), "filter", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(listOfValuesEClass, theUMLPackage.getType(), "getExpectedType", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(listOfValuesEClass, theUMLPackage.getElement(), "getContextElement", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ initEClass(listOfValueNamePairsEClass, ListOfValueNamePairs.class, "ListOfValueNamePairs", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getListOfValueNamePairs_ValueNamePairs(), this.getValueNamePair(), null, "valueNamePairs", null, 0, -1, ListOfValueNamePairs.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ op = addEOperation(listOfValueNamePairsEClass, ecorePackage.getEObject(), "getFilteredParentRule", 0, 1, IS_UNIQUE, IS_ORDERED);
+ addEParameter(op, ecorePackage.getEClass(), "filter", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(listOfValueNamePairsEClass, theUMLPackage.getType(), "getExpectedType", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(listOfValueNamePairsEClass, theUMLPackage.getElement(), "getContextElement", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ initEClass(valueNamePairEClass, ValueNamePair.class, "ValueNamePair", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getValueNamePair_Property(), theUMLPackage.getProperty(), null, "property", null, 0, 1, ValueNamePair.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getValueNamePair_Value(), this.getExpression(), null, "value", null, 0, 1, ValueNamePair.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ op = addEOperation(valueNamePairEClass, ecorePackage.getEObject(), "getFilteredParentRule", 0, 1, IS_UNIQUE, IS_ORDERED);
+ addEParameter(op, ecorePackage.getEClass(), "filter", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(valueNamePairEClass, theUMLPackage.getType(), "getExpectedType", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(valueNamePairEClass, theUMLPackage.getElement(), "getContextElement", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ initEClass(timeExpressionEClass, TimeExpression.class, "TimeExpression", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ op = addEOperation(timeExpressionEClass, ecorePackage.getEObject(), "getFilteredParentRule", 0, 1, IS_UNIQUE, IS_ORDERED);
+ addEParameter(op, ecorePackage.getEClass(), "filter", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(timeExpressionEClass, theUMLPackage.getType(), "getExpectedType", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(timeExpressionEClass, theUMLPackage.getElement(), "getContextElement", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ initEClass(instantObsExpressionEClass, InstantObsExpression.class, "InstantObsExpression", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getInstantObsExpression_Id(), this.getInstantObsName(), null, "id", null, 0, 1, InstantObsExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getInstantObsExpression_Index(), this.getExpression(), null, "index", null, 0, 1, InstantObsExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getInstantObsExpression_Condition(), this.getExpression(), null, "condition", null, 0, 1, InstantObsExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ op = addEOperation(instantObsExpressionEClass, ecorePackage.getEObject(), "getFilteredParentRule", 0, 1, IS_UNIQUE, IS_ORDERED);
+ addEParameter(op, ecorePackage.getEClass(), "filter", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(instantObsExpressionEClass, theUMLPackage.getType(), "getExpectedType", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(instantObsExpressionEClass, theUMLPackage.getElement(), "getContextElement", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ initEClass(instantObsNameEClass, InstantObsName.class, "InstantObsName", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getInstantObsName_Path(), this.getQualifiedName(), null, "path", null, 0, 1, InstantObsName.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getInstantObsName_InstantId(), theUMLPackage.getTimeObservation(), null, "instantId", null, 0, 1, InstantObsName.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ op = addEOperation(instantObsNameEClass, ecorePackage.getEObject(), "getFilteredParentRule", 0, 1, IS_UNIQUE, IS_ORDERED);
+ addEParameter(op, ecorePackage.getEClass(), "filter", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(instantObsNameEClass, theUMLPackage.getType(), "getExpectedType", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(instantObsNameEClass, theUMLPackage.getElement(), "getContextElement", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ initEClass(durationObsExpressionEClass, DurationObsExpression.class, "DurationObsExpression", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getDurationObsExpression_Id(), this.getDurationObsName(), null, "id", null, 0, 1, DurationObsExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getDurationObsExpression_Index(), this.getExpression(), null, "index", null, 0, 1, DurationObsExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getDurationObsExpression_Condition(), this.getExpression(), null, "condition", null, 0, 1, DurationObsExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ op = addEOperation(durationObsExpressionEClass, ecorePackage.getEObject(), "getFilteredParentRule", 0, 1, IS_UNIQUE, IS_ORDERED);
+ addEParameter(op, ecorePackage.getEClass(), "filter", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(durationObsExpressionEClass, theUMLPackage.getType(), "getExpectedType", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(durationObsExpressionEClass, theUMLPackage.getElement(), "getContextElement", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ initEClass(durationObsNameEClass, DurationObsName.class, "DurationObsName", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getDurationObsName_Path(), this.getQualifiedName(), null, "path", null, 0, 1, DurationObsName.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getDurationObsName_DurationId(), theUMLPackage.getDurationObservation(), null, "durationId", null, 0, 1, DurationObsName.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ op = addEOperation(durationObsNameEClass, ecorePackage.getEObject(), "getFilteredParentRule", 0, 1, IS_UNIQUE, IS_ORDERED);
+ addEParameter(op, ecorePackage.getEClass(), "filter", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(durationObsNameEClass, theUMLPackage.getType(), "getExpectedType", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(durationObsNameEClass, theUMLPackage.getElement(), "getContextElement", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ initEClass(jitterExpEClass, JitterExp.class, "JitterExp", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getJitterExp_FirstInstant(), this.getInstantObsExpression(), null, "firstInstant", null, 0, 1, JitterExp.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getJitterExp_SecondInstant(), this.getInstantObsExpression(), null, "secondInstant", null, 0, 1, JitterExp.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ op = addEOperation(jitterExpEClass, ecorePackage.getEObject(), "getFilteredParentRule", 0, 1, IS_UNIQUE, IS_ORDERED);
+ addEParameter(op, ecorePackage.getEClass(), "filter", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(jitterExpEClass, theUMLPackage.getType(), "getExpectedType", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(jitterExpEClass, theUMLPackage.getElement(), "getContextElement", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ initEClass(variableDeclarationEClass, VariableDeclaration.class, "VariableDeclaration", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getVariableDeclaration_VariableDeclaration(), ecorePackage.getEString(), "variableDeclaration", null, 0, 1, VariableDeclaration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getVariableDeclaration_Name(), ecorePackage.getEString(), "name", null, 0, 1, VariableDeclaration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getVariableDeclaration_Type(), this.getDataTypeName(), null, "type", null, 0, 1, VariableDeclaration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getVariableDeclaration_InitValue(), this.getExpression(), null, "initValue", null, 0, 1, VariableDeclaration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ op = addEOperation(variableDeclarationEClass, ecorePackage.getEObject(), "getFilteredParentRule", 0, 1, IS_UNIQUE, IS_ORDERED);
+ addEParameter(op, ecorePackage.getEClass(), "filter", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(variableDeclarationEClass, theUMLPackage.getType(), "getExpectedType", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(variableDeclarationEClass, theUMLPackage.getElement(), "getContextElement", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ initEClass(dataTypeNameEClass, DataTypeName.class, "DataTypeName", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getDataTypeName_Path(), this.getQualifiedName(), null, "path", null, 0, 1, DataTypeName.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getDataTypeName_Type(), theUMLPackage.getDataType(), null, "type", null, 0, 1, DataTypeName.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ op = addEOperation(dataTypeNameEClass, ecorePackage.getEObject(), "getFilteredParentRule", 0, 1, IS_UNIQUE, IS_ORDERED);
+ addEParameter(op, ecorePackage.getEClass(), "filter", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(dataTypeNameEClass, theUMLPackage.getType(), "getExpectedType", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(dataTypeNameEClass, theUMLPackage.getElement(), "getContextElement", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ initEClass(numberLiteralRuleEClass, NumberLiteralRule.class, "NumberLiteralRule", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ op = addEOperation(numberLiteralRuleEClass, ecorePackage.getEObject(), "getFilteredParentRule", 0, 1, IS_UNIQUE, IS_ORDERED);
+ addEParameter(op, ecorePackage.getEClass(), "filter", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(numberLiteralRuleEClass, theUMLPackage.getType(), "getExpectedType", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(numberLiteralRuleEClass, theUMLPackage.getElement(), "getContextElement", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ initEClass(integerLiteralRuleEClass, IntegerLiteralRule.class, "IntegerLiteralRule", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ op = addEOperation(integerLiteralRuleEClass, ecorePackage.getEObject(), "getFilteredParentRule", 0, 1, IS_UNIQUE, IS_ORDERED);
+ addEParameter(op, ecorePackage.getEClass(), "filter", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(integerLiteralRuleEClass, theUMLPackage.getType(), "getExpectedType", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(integerLiteralRuleEClass, theUMLPackage.getElement(), "getContextElement", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ initEClass(unlimitedLiteralRuleEClass, UnlimitedLiteralRule.class, "UnlimitedLiteralRule", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ op = addEOperation(unlimitedLiteralRuleEClass, ecorePackage.getEObject(), "getFilteredParentRule", 0, 1, IS_UNIQUE, IS_ORDERED);
+ addEParameter(op, ecorePackage.getEClass(), "filter", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(unlimitedLiteralRuleEClass, theUMLPackage.getType(), "getExpectedType", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(unlimitedLiteralRuleEClass, theUMLPackage.getElement(), "getContextElement", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ initEClass(realLiteralRuleEClass, RealLiteralRule.class, "RealLiteralRule", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ op = addEOperation(realLiteralRuleEClass, ecorePackage.getEObject(), "getFilteredParentRule", 0, 1, IS_UNIQUE, IS_ORDERED);
+ addEParameter(op, ecorePackage.getEClass(), "filter", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(realLiteralRuleEClass, theUMLPackage.getType(), "getExpectedType", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(realLiteralRuleEClass, theUMLPackage.getElement(), "getContextElement", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ initEClass(dateTimeLiteralRuleEClass, DateTimeLiteralRule.class, "DateTimeLiteralRule", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ op = addEOperation(dateTimeLiteralRuleEClass, ecorePackage.getEObject(), "getFilteredParentRule", 0, 1, IS_UNIQUE, IS_ORDERED);
+ addEParameter(op, ecorePackage.getEClass(), "filter", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(dateTimeLiteralRuleEClass, theUMLPackage.getType(), "getExpectedType", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(dateTimeLiteralRuleEClass, theUMLPackage.getElement(), "getContextElement", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ initEClass(booleanLiteralRuleEClass, BooleanLiteralRule.class, "BooleanLiteralRule", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ op = addEOperation(booleanLiteralRuleEClass, ecorePackage.getEObject(), "getFilteredParentRule", 0, 1, IS_UNIQUE, IS_ORDERED);
+ addEParameter(op, ecorePackage.getEClass(), "filter", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(booleanLiteralRuleEClass, theUMLPackage.getType(), "getExpectedType", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(booleanLiteralRuleEClass, theUMLPackage.getElement(), "getContextElement", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ initEClass(nullLiteralRuleEClass, NullLiteralRule.class, "NullLiteralRule", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ op = addEOperation(nullLiteralRuleEClass, ecorePackage.getEObject(), "getFilteredParentRule", 0, 1, IS_UNIQUE, IS_ORDERED);
+ addEParameter(op, ecorePackage.getEClass(), "filter", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(nullLiteralRuleEClass, theUMLPackage.getType(), "getExpectedType", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(nullLiteralRuleEClass, theUMLPackage.getElement(), "getContextElement", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ initEClass(defaultLiteralRuleEClass, DefaultLiteralRule.class, "DefaultLiteralRule", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ op = addEOperation(defaultLiteralRuleEClass, ecorePackage.getEObject(), "getFilteredParentRule", 0, 1, IS_UNIQUE, IS_ORDERED);
+ addEParameter(op, ecorePackage.getEClass(), "filter", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(defaultLiteralRuleEClass, theUMLPackage.getType(), "getExpectedType", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(defaultLiteralRuleEClass, theUMLPackage.getElement(), "getContextElement", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ initEClass(stringLiteralRuleEClass, StringLiteralRule.class, "StringLiteralRule", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ op = addEOperation(stringLiteralRuleEClass, ecorePackage.getEObject(), "getFilteredParentRule", 0, 1, IS_UNIQUE, IS_ORDERED);
+ addEParameter(op, ecorePackage.getEClass(), "filter", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(stringLiteralRuleEClass, theUMLPackage.getType(), "getExpectedType", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(stringLiteralRuleEClass, theUMLPackage.getElement(), "getContextElement", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ // Create resource
+ createResource(eNS_URI);
+ }
+
+} //VSLPackageImpl
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/ValueNamePairImpl.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/ValueNamePairImpl.java
new file mode 100644
index 00000000000..fdbadabe14a
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/ValueNamePairImpl.java
@@ -0,0 +1,298 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL.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.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.papyrus.marte.vsl.vSL.Expression;
+import org.eclipse.papyrus.marte.vsl.vSL.VSLPackage;
+import org.eclipse.papyrus.marte.vsl.vSL.ValueNamePair;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Value Name Pair</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.impl.ValueNamePairImpl#getProperty <em>Property</em>}</li>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.impl.ValueNamePairImpl#getValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ValueNamePairImpl extends MinimalEObjectImpl.Container implements ValueNamePair
+{
+ /**
+ * The cached value of the '{@link #getProperty() <em>Property</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getProperty()
+ * @generated
+ * @ordered
+ */
+ protected Property property;
+
+ /**
+ * The cached value of the '{@link #getValue() <em>Value</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getValue()
+ * @generated
+ * @ordered
+ */
+ protected Expression value;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ValueNamePairImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return VSLPackage.Literals.VALUE_NAME_PAIR;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Property getProperty()
+ {
+ if (property != null && property.eIsProxy())
+ {
+ InternalEObject oldProperty = (InternalEObject)property;
+ property = (Property)eResolveProxy(oldProperty);
+ if (property != oldProperty)
+ {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, VSLPackage.VALUE_NAME_PAIR__PROPERTY, oldProperty, property));
+ }
+ }
+ return property;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Property basicGetProperty()
+ {
+ return property;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setProperty(Property newProperty)
+ {
+ Property oldProperty = property;
+ property = newProperty;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, VSLPackage.VALUE_NAME_PAIR__PROPERTY, oldProperty, property));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Expression getValue()
+ {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetValue(Expression newValue, NotificationChain msgs)
+ {
+ Expression oldValue = value;
+ value = newValue;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, VSLPackage.VALUE_NAME_PAIR__VALUE, oldValue, newValue);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setValue(Expression newValue)
+ {
+ if (newValue != value)
+ {
+ NotificationChain msgs = null;
+ if (value != null)
+ msgs = ((InternalEObject)value).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - VSLPackage.VALUE_NAME_PAIR__VALUE, null, msgs);
+ if (newValue != null)
+ msgs = ((InternalEObject)newValue).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - VSLPackage.VALUE_NAME_PAIR__VALUE, null, msgs);
+ msgs = basicSetValue(newValue, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, VSLPackage.VALUE_NAME_PAIR__VALUE, newValue, newValue));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EObject getFilteredParentRule(EClass filter)
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Type getExpectedType()
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Element getContextElement()
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.VALUE_NAME_PAIR__VALUE:
+ return basicSetValue(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 VSLPackage.VALUE_NAME_PAIR__PROPERTY:
+ if (resolve) return getProperty();
+ return basicGetProperty();
+ case VSLPackage.VALUE_NAME_PAIR__VALUE:
+ return getValue();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.VALUE_NAME_PAIR__PROPERTY:
+ setProperty((Property)newValue);
+ return;
+ case VSLPackage.VALUE_NAME_PAIR__VALUE:
+ setValue((Expression)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.VALUE_NAME_PAIR__PROPERTY:
+ setProperty((Property)null);
+ return;
+ case VSLPackage.VALUE_NAME_PAIR__VALUE:
+ setValue((Expression)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.VALUE_NAME_PAIR__PROPERTY:
+ return property != null;
+ case VSLPackage.VALUE_NAME_PAIR__VALUE:
+ return value != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //ValueNamePairImpl
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/ValueSpecificationImpl.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/ValueSpecificationImpl.java
new file mode 100644
index 00000000000..c2b35050df1
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/ValueSpecificationImpl.java
@@ -0,0 +1,82 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.papyrus.marte.vsl.vSL.VSLPackage;
+import org.eclipse.papyrus.marte.vsl.vSL.ValueSpecification;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Value Specification</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class ValueSpecificationImpl extends MinimalEObjectImpl.Container implements ValueSpecification
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ValueSpecificationImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return VSLPackage.Literals.VALUE_SPECIFICATION;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EObject getFilteredParentRule(EClass filter)
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Type getExpectedType()
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Element getContextElement()
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;
+ }
+
+} //ValueSpecificationImpl
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/VariableDeclarationImpl.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/VariableDeclarationImpl.java
new file mode 100644
index 00000000000..85ff69a0beb
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/impl/VariableDeclarationImpl.java
@@ -0,0 +1,430 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL.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.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.marte.vsl.vSL.DataTypeName;
+import org.eclipse.papyrus.marte.vsl.vSL.Expression;
+import org.eclipse.papyrus.marte.vsl.vSL.VSLPackage;
+import org.eclipse.papyrus.marte.vsl.vSL.VariableDeclaration;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Variable Declaration</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.impl.VariableDeclarationImpl#getVariableDeclaration <em>Variable Declaration</em>}</li>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.impl.VariableDeclarationImpl#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.impl.VariableDeclarationImpl#getType <em>Type</em>}</li>
+ * <li>{@link org.eclipse.papyrus.marte.vsl.vSL.impl.VariableDeclarationImpl#getInitValue <em>Init Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class VariableDeclarationImpl extends ValueSpecificationImpl implements VariableDeclaration
+{
+ /**
+ * The default value of the '{@link #getVariableDeclaration() <em>Variable Declaration</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getVariableDeclaration()
+ * @generated
+ * @ordered
+ */
+ protected static final String VARIABLE_DECLARATION_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getVariableDeclaration() <em>Variable Declaration</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getVariableDeclaration()
+ * @generated
+ * @ordered
+ */
+ protected String variableDeclaration = VARIABLE_DECLARATION_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getType() <em>Type</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getType()
+ * @generated
+ * @ordered
+ */
+ protected DataTypeName type;
+
+ /**
+ * The cached value of the '{@link #getInitValue() <em>Init Value</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getInitValue()
+ * @generated
+ * @ordered
+ */
+ protected Expression initValue;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected VariableDeclarationImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return VSLPackage.Literals.VARIABLE_DECLARATION;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getVariableDeclaration()
+ {
+ return variableDeclaration;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setVariableDeclaration(String newVariableDeclaration)
+ {
+ String oldVariableDeclaration = variableDeclaration;
+ variableDeclaration = newVariableDeclaration;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, VSLPackage.VARIABLE_DECLARATION__VARIABLE_DECLARATION, oldVariableDeclaration, variableDeclaration));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName()
+ {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setName(String newName)
+ {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, VSLPackage.VARIABLE_DECLARATION__NAME, oldName, name));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DataTypeName getType()
+ {
+ return type;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetType(DataTypeName newType, NotificationChain msgs)
+ {
+ DataTypeName oldType = type;
+ type = newType;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, VSLPackage.VARIABLE_DECLARATION__TYPE, oldType, newType);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setType(DataTypeName newType)
+ {
+ if (newType != type)
+ {
+ NotificationChain msgs = null;
+ if (type != null)
+ msgs = ((InternalEObject)type).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - VSLPackage.VARIABLE_DECLARATION__TYPE, null, msgs);
+ if (newType != null)
+ msgs = ((InternalEObject)newType).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - VSLPackage.VARIABLE_DECLARATION__TYPE, null, msgs);
+ msgs = basicSetType(newType, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, VSLPackage.VARIABLE_DECLARATION__TYPE, newType, newType));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Expression getInitValue()
+ {
+ return initValue;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetInitValue(Expression newInitValue, NotificationChain msgs)
+ {
+ Expression oldInitValue = initValue;
+ initValue = newInitValue;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, VSLPackage.VARIABLE_DECLARATION__INIT_VALUE, oldInitValue, newInitValue);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setInitValue(Expression newInitValue)
+ {
+ if (newInitValue != initValue)
+ {
+ NotificationChain msgs = null;
+ if (initValue != null)
+ msgs = ((InternalEObject)initValue).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - VSLPackage.VARIABLE_DECLARATION__INIT_VALUE, null, msgs);
+ if (newInitValue != null)
+ msgs = ((InternalEObject)newInitValue).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - VSLPackage.VARIABLE_DECLARATION__INIT_VALUE, null, msgs);
+ msgs = basicSetInitValue(newInitValue, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, VSLPackage.VARIABLE_DECLARATION__INIT_VALUE, newInitValue, newInitValue));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EObject getFilteredParentRule(EClass filter)
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Type getExpectedType()
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Element getContextElement()
+ {
+ return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.VARIABLE_DECLARATION__TYPE:
+ return basicSetType(null, msgs);
+ case VSLPackage.VARIABLE_DECLARATION__INIT_VALUE:
+ return basicSetInitValue(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 VSLPackage.VARIABLE_DECLARATION__VARIABLE_DECLARATION:
+ return getVariableDeclaration();
+ case VSLPackage.VARIABLE_DECLARATION__NAME:
+ return getName();
+ case VSLPackage.VARIABLE_DECLARATION__TYPE:
+ return getType();
+ case VSLPackage.VARIABLE_DECLARATION__INIT_VALUE:
+ return getInitValue();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.VARIABLE_DECLARATION__VARIABLE_DECLARATION:
+ setVariableDeclaration((String)newValue);
+ return;
+ case VSLPackage.VARIABLE_DECLARATION__NAME:
+ setName((String)newValue);
+ return;
+ case VSLPackage.VARIABLE_DECLARATION__TYPE:
+ setType((DataTypeName)newValue);
+ return;
+ case VSLPackage.VARIABLE_DECLARATION__INIT_VALUE:
+ setInitValue((Expression)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.VARIABLE_DECLARATION__VARIABLE_DECLARATION:
+ setVariableDeclaration(VARIABLE_DECLARATION_EDEFAULT);
+ return;
+ case VSLPackage.VARIABLE_DECLARATION__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ case VSLPackage.VARIABLE_DECLARATION__TYPE:
+ setType((DataTypeName)null);
+ return;
+ case VSLPackage.VARIABLE_DECLARATION__INIT_VALUE:
+ setInitValue((Expression)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case VSLPackage.VARIABLE_DECLARATION__VARIABLE_DECLARATION:
+ return VARIABLE_DECLARATION_EDEFAULT == null ? variableDeclaration != null : !VARIABLE_DECLARATION_EDEFAULT.equals(variableDeclaration);
+ case VSLPackage.VARIABLE_DECLARATION__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ case VSLPackage.VARIABLE_DECLARATION__TYPE:
+ return type != null;
+ case VSLPackage.VARIABLE_DECLARATION__INIT_VALUE:
+ return initValue != 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(" (variableDeclaration: ");
+ result.append(variableDeclaration);
+ result.append(", name: ");
+ result.append(name);
+ result.append(')');
+ return result.toString();
+ }
+
+} //VariableDeclarationImpl
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/util/VSLAdapterFactory.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/util/VSLAdapterFactory.java
new file mode 100644
index 00000000000..5b933b6bec2
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/util/VSLAdapterFactory.java
@@ -0,0 +1,896 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL.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.papyrus.marte.vsl.vSL.*;
+
+/**
+ * <!-- 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.papyrus.marte.vsl.vSL.VSLPackage
+ * @generated
+ */
+public class VSLAdapterFactory extends AdapterFactoryImpl
+{
+ /**
+ * The cached model package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static VSLPackage modelPackage;
+
+ /**
+ * Creates an instance of the adapter factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public VSLAdapterFactory()
+ {
+ if (modelPackage == null)
+ {
+ modelPackage = VSLPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Returns whether this factory is applicable for the type of the object.
+ * <!-- begin-user-doc -->
+ * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+ * <!-- end-user-doc -->
+ * @return whether this factory is applicable for the type of the object.
+ * @generated
+ */
+ @Override
+ public boolean isFactoryForType(Object object)
+ {
+ if (object == modelPackage)
+ {
+ return true;
+ }
+ if (object instanceof EObject)
+ {
+ return ((EObject)object).eClass().getEPackage() == modelPackage;
+ }
+ return false;
+ }
+
+ /**
+ * The switch that delegates to the <code>createXXX</code> methods.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected VSLSwitch<Adapter> modelSwitch =
+ new VSLSwitch<Adapter>()
+ {
+ @Override
+ public Adapter caseExpression(Expression object)
+ {
+ return createExpressionAdapter();
+ }
+ @Override
+ public Adapter caseAndOrXorExpression(AndOrXorExpression object)
+ {
+ return createAndOrXorExpressionAdapter();
+ }
+ @Override
+ public Adapter caseEqualityExpression(EqualityExpression object)
+ {
+ return createEqualityExpressionAdapter();
+ }
+ @Override
+ public Adapter caseRelationalExpression(RelationalExpression object)
+ {
+ return createRelationalExpressionAdapter();
+ }
+ @Override
+ public Adapter caseConditionalExpression(ConditionalExpression object)
+ {
+ return createConditionalExpressionAdapter();
+ }
+ @Override
+ public Adapter caseAdditiveExpression(AdditiveExpression object)
+ {
+ return createAdditiveExpressionAdapter();
+ }
+ @Override
+ public Adapter caseMultiplicativeExpression(MultiplicativeExpression object)
+ {
+ return createMultiplicativeExpressionAdapter();
+ }
+ @Override
+ public Adapter caseUnaryExpression(UnaryExpression object)
+ {
+ return createUnaryExpressionAdapter();
+ }
+ @Override
+ public Adapter casePrimaryExpression(PrimaryExpression object)
+ {
+ return createPrimaryExpressionAdapter();
+ }
+ @Override
+ public Adapter caseValueSpecification(ValueSpecification object)
+ {
+ return createValueSpecificationAdapter();
+ }
+ @Override
+ public Adapter caseSuffixExpression(SuffixExpression object)
+ {
+ return createSuffixExpressionAdapter();
+ }
+ @Override
+ public Adapter casePropertyCallExpression(PropertyCallExpression object)
+ {
+ return createPropertyCallExpressionAdapter();
+ }
+ @Override
+ public Adapter caseOperationCallExpression(OperationCallExpression object)
+ {
+ return createOperationCallExpressionAdapter();
+ }
+ @Override
+ public Adapter caseLiteral(Literal object)
+ {
+ return createLiteralAdapter();
+ }
+ @Override
+ public Adapter caseNameOrChoiceOrBehaviorCall(NameOrChoiceOrBehaviorCall object)
+ {
+ return createNameOrChoiceOrBehaviorCallAdapter();
+ }
+ @Override
+ public Adapter caseQualifiedName(QualifiedName object)
+ {
+ return createQualifiedNameAdapter();
+ }
+ @Override
+ public Adapter caseInterval(Interval object)
+ {
+ return createIntervalAdapter();
+ }
+ @Override
+ public Adapter caseCollectionOrTuple(CollectionOrTuple object)
+ {
+ return createCollectionOrTupleAdapter();
+ }
+ @Override
+ public Adapter caseTuple(Tuple object)
+ {
+ return createTupleAdapter();
+ }
+ @Override
+ public Adapter caseListOfValues(ListOfValues object)
+ {
+ return createListOfValuesAdapter();
+ }
+ @Override
+ public Adapter caseListOfValueNamePairs(ListOfValueNamePairs object)
+ {
+ return createListOfValueNamePairsAdapter();
+ }
+ @Override
+ public Adapter caseValueNamePair(ValueNamePair object)
+ {
+ return createValueNamePairAdapter();
+ }
+ @Override
+ public Adapter caseTimeExpression(TimeExpression object)
+ {
+ return createTimeExpressionAdapter();
+ }
+ @Override
+ public Adapter caseInstantObsExpression(InstantObsExpression object)
+ {
+ return createInstantObsExpressionAdapter();
+ }
+ @Override
+ public Adapter caseInstantObsName(InstantObsName object)
+ {
+ return createInstantObsNameAdapter();
+ }
+ @Override
+ public Adapter caseDurationObsExpression(DurationObsExpression object)
+ {
+ return createDurationObsExpressionAdapter();
+ }
+ @Override
+ public Adapter caseDurationObsName(DurationObsName object)
+ {
+ return createDurationObsNameAdapter();
+ }
+ @Override
+ public Adapter caseJitterExp(JitterExp object)
+ {
+ return createJitterExpAdapter();
+ }
+ @Override
+ public Adapter caseVariableDeclaration(VariableDeclaration object)
+ {
+ return createVariableDeclarationAdapter();
+ }
+ @Override
+ public Adapter caseDataTypeName(DataTypeName object)
+ {
+ return createDataTypeNameAdapter();
+ }
+ @Override
+ public Adapter caseNumberLiteralRule(NumberLiteralRule object)
+ {
+ return createNumberLiteralRuleAdapter();
+ }
+ @Override
+ public Adapter caseIntegerLiteralRule(IntegerLiteralRule object)
+ {
+ return createIntegerLiteralRuleAdapter();
+ }
+ @Override
+ public Adapter caseUnlimitedLiteralRule(UnlimitedLiteralRule object)
+ {
+ return createUnlimitedLiteralRuleAdapter();
+ }
+ @Override
+ public Adapter caseRealLiteralRule(RealLiteralRule object)
+ {
+ return createRealLiteralRuleAdapter();
+ }
+ @Override
+ public Adapter caseDateTimeLiteralRule(DateTimeLiteralRule object)
+ {
+ return createDateTimeLiteralRuleAdapter();
+ }
+ @Override
+ public Adapter caseBooleanLiteralRule(BooleanLiteralRule object)
+ {
+ return createBooleanLiteralRuleAdapter();
+ }
+ @Override
+ public Adapter caseNullLiteralRule(NullLiteralRule object)
+ {
+ return createNullLiteralRuleAdapter();
+ }
+ @Override
+ public Adapter caseDefaultLiteralRule(DefaultLiteralRule object)
+ {
+ return createDefaultLiteralRuleAdapter();
+ }
+ @Override
+ public Adapter caseStringLiteralRule(StringLiteralRule object)
+ {
+ return createStringLiteralRuleAdapter();
+ }
+ @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.papyrus.marte.vsl.vSL.Expression <em>Expression</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.Expression
+ * @generated
+ */
+ public Adapter createExpressionAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.marte.vsl.vSL.AndOrXorExpression <em>And Or Xor Expression</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.AndOrXorExpression
+ * @generated
+ */
+ public Adapter createAndOrXorExpressionAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.marte.vsl.vSL.EqualityExpression <em>Equality Expression</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.EqualityExpression
+ * @generated
+ */
+ public Adapter createEqualityExpressionAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.marte.vsl.vSL.RelationalExpression <em>Relational Expression</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.RelationalExpression
+ * @generated
+ */
+ public Adapter createRelationalExpressionAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.marte.vsl.vSL.ConditionalExpression <em>Conditional Expression</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.ConditionalExpression
+ * @generated
+ */
+ public Adapter createConditionalExpressionAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.marte.vsl.vSL.AdditiveExpression <em>Additive Expression</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.AdditiveExpression
+ * @generated
+ */
+ public Adapter createAdditiveExpressionAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.marte.vsl.vSL.MultiplicativeExpression <em>Multiplicative Expression</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.MultiplicativeExpression
+ * @generated
+ */
+ public Adapter createMultiplicativeExpressionAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.marte.vsl.vSL.UnaryExpression <em>Unary Expression</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.UnaryExpression
+ * @generated
+ */
+ public Adapter createUnaryExpressionAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.marte.vsl.vSL.PrimaryExpression <em>Primary Expression</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.PrimaryExpression
+ * @generated
+ */
+ public Adapter createPrimaryExpressionAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.marte.vsl.vSL.ValueSpecification <em>Value Specification</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.papyrus.marte.vsl.vSL.ValueSpecification
+ * @generated
+ */
+ public Adapter createValueSpecificationAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.marte.vsl.vSL.SuffixExpression <em>Suffix Expression</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.SuffixExpression
+ * @generated
+ */
+ public Adapter createSuffixExpressionAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.marte.vsl.vSL.PropertyCallExpression <em>Property Call Expression</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.PropertyCallExpression
+ * @generated
+ */
+ public Adapter createPropertyCallExpressionAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.marte.vsl.vSL.OperationCallExpression <em>Operation Call Expression</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.OperationCallExpression
+ * @generated
+ */
+ public Adapter createOperationCallExpressionAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.marte.vsl.vSL.Literal <em>Literal</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.papyrus.marte.vsl.vSL.Literal
+ * @generated
+ */
+ public Adapter createLiteralAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.marte.vsl.vSL.NameOrChoiceOrBehaviorCall <em>Name Or Choice Or Behavior Call</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.papyrus.marte.vsl.vSL.NameOrChoiceOrBehaviorCall
+ * @generated
+ */
+ public Adapter createNameOrChoiceOrBehaviorCallAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.marte.vsl.vSL.QualifiedName <em>Qualified Name</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.papyrus.marte.vsl.vSL.QualifiedName
+ * @generated
+ */
+ public Adapter createQualifiedNameAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.marte.vsl.vSL.Interval <em>Interval</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.papyrus.marte.vsl.vSL.Interval
+ * @generated
+ */
+ public Adapter createIntervalAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.marte.vsl.vSL.CollectionOrTuple <em>Collection Or Tuple</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.papyrus.marte.vsl.vSL.CollectionOrTuple
+ * @generated
+ */
+ public Adapter createCollectionOrTupleAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.marte.vsl.vSL.Tuple <em>Tuple</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.papyrus.marte.vsl.vSL.Tuple
+ * @generated
+ */
+ public Adapter createTupleAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.marte.vsl.vSL.ListOfValues <em>List Of Values</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.papyrus.marte.vsl.vSL.ListOfValues
+ * @generated
+ */
+ public Adapter createListOfValuesAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.marte.vsl.vSL.ListOfValueNamePairs <em>List Of Value Name Pairs</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.papyrus.marte.vsl.vSL.ListOfValueNamePairs
+ * @generated
+ */
+ public Adapter createListOfValueNamePairsAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.marte.vsl.vSL.ValueNamePair <em>Value Name Pair</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.papyrus.marte.vsl.vSL.ValueNamePair
+ * @generated
+ */
+ public Adapter createValueNamePairAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.marte.vsl.vSL.TimeExpression <em>Time Expression</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.TimeExpression
+ * @generated
+ */
+ public Adapter createTimeExpressionAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.marte.vsl.vSL.InstantObsExpression <em>Instant Obs Expression</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.InstantObsExpression
+ * @generated
+ */
+ public Adapter createInstantObsExpressionAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.marte.vsl.vSL.InstantObsName <em>Instant Obs Name</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.papyrus.marte.vsl.vSL.InstantObsName
+ * @generated
+ */
+ public Adapter createInstantObsNameAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.marte.vsl.vSL.DurationObsExpression <em>Duration Obs Expression</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.marte.vsl.vSL.DurationObsExpression
+ * @generated
+ */
+ public Adapter createDurationObsExpressionAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.marte.vsl.vSL.DurationObsName <em>Duration Obs Name</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.papyrus.marte.vsl.vSL.DurationObsName
+ * @generated
+ */
+ public Adapter createDurationObsNameAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.marte.vsl.vSL.JitterExp <em>Jitter Exp</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.papyrus.marte.vsl.vSL.JitterExp
+ * @generated
+ */
+ public Adapter createJitterExpAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.marte.vsl.vSL.VariableDeclaration <em>Variable 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.papyrus.marte.vsl.vSL.VariableDeclaration
+ * @generated
+ */
+ public Adapter createVariableDeclarationAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.marte.vsl.vSL.DataTypeName <em>Data Type Name</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.papyrus.marte.vsl.vSL.DataTypeName
+ * @generated
+ */
+ public Adapter createDataTypeNameAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.marte.vsl.vSL.NumberLiteralRule <em>Number Literal Rule</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.papyrus.marte.vsl.vSL.NumberLiteralRule
+ * @generated
+ */
+ public Adapter createNumberLiteralRuleAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.marte.vsl.vSL.IntegerLiteralRule <em>Integer Literal Rule</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.papyrus.marte.vsl.vSL.IntegerLiteralRule
+ * @generated
+ */
+ public Adapter createIntegerLiteralRuleAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.marte.vsl.vSL.UnlimitedLiteralRule <em>Unlimited Literal Rule</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.papyrus.marte.vsl.vSL.UnlimitedLiteralRule
+ * @generated
+ */
+ public Adapter createUnlimitedLiteralRuleAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.marte.vsl.vSL.RealLiteralRule <em>Real Literal Rule</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.papyrus.marte.vsl.vSL.RealLiteralRule
+ * @generated
+ */
+ public Adapter createRealLiteralRuleAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.marte.vsl.vSL.DateTimeLiteralRule <em>Date Time Literal Rule</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.papyrus.marte.vsl.vSL.DateTimeLiteralRule
+ * @generated
+ */
+ public Adapter createDateTimeLiteralRuleAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.marte.vsl.vSL.BooleanLiteralRule <em>Boolean Literal Rule</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.papyrus.marte.vsl.vSL.BooleanLiteralRule
+ * @generated
+ */
+ public Adapter createBooleanLiteralRuleAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.marte.vsl.vSL.NullLiteralRule <em>Null Literal Rule</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.papyrus.marte.vsl.vSL.NullLiteralRule
+ * @generated
+ */
+ public Adapter createNullLiteralRuleAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.marte.vsl.vSL.DefaultLiteralRule <em>Default Literal Rule</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.papyrus.marte.vsl.vSL.DefaultLiteralRule
+ * @generated
+ */
+ public Adapter createDefaultLiteralRuleAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.marte.vsl.vSL.StringLiteralRule <em>String Literal Rule</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.papyrus.marte.vsl.vSL.StringLiteralRule
+ * @generated
+ */
+ public Adapter createStringLiteralRuleAdapter()
+ {
+ 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;
+ }
+
+} //VSLAdapterFactory
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/util/VSLResourceFactoryImpl.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/util/VSLResourceFactoryImpl.java
new file mode 100644
index 00000000000..74979c30700
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/util/VSLResourceFactoryImpl.java
@@ -0,0 +1,59 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL.util;
+
+import org.eclipse.emf.common.util.URI;
+
+import org.eclipse.emf.ecore.resource.Resource;
+
+import org.eclipse.emf.ecore.resource.impl.ResourceFactoryImpl;
+
+import org.eclipse.emf.ecore.xmi.XMLResource;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Resource Factory</b> associated with the package.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.util.VSLResourceImpl
+ * @generated
+ */
+public class VSLResourceFactoryImpl extends ResourceFactoryImpl
+{
+ /**
+ * Creates an instance of the resource factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public VSLResourceFactoryImpl()
+ {
+ super();
+ }
+
+ /**
+ * Creates an instance of the resource.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Resource createResource(URI uri)
+ {
+ XMLResource result = new VSLResourceImpl(uri);
+ result.getDefaultSaveOptions().put(XMLResource.OPTION_EXTENDED_META_DATA, Boolean.TRUE);
+ result.getDefaultLoadOptions().put(XMLResource.OPTION_EXTENDED_META_DATA, Boolean.TRUE);
+
+ result.getDefaultSaveOptions().put(XMLResource.OPTION_SCHEMA_LOCATION, Boolean.TRUE);
+
+ result.getDefaultLoadOptions().put(XMLResource.OPTION_USE_ENCODED_ATTRIBUTE_STYLE, Boolean.TRUE);
+ result.getDefaultSaveOptions().put(XMLResource.OPTION_USE_ENCODED_ATTRIBUTE_STYLE, Boolean.TRUE);
+
+ result.getDefaultLoadOptions().put(XMLResource.OPTION_USE_LEXICAL_HANDLER, Boolean.TRUE);
+ return result;
+ }
+
+} //VSLResourceFactoryImpl
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/util/VSLResourceImpl.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/util/VSLResourceImpl.java
new file mode 100644
index 00000000000..6763f810ebd
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/util/VSLResourceImpl.java
@@ -0,0 +1,34 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL.util;
+
+import org.eclipse.emf.common.util.URI;
+
+import org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Resource </b> associated with the package.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.marte.vsl.vSL.util.VSLResourceFactoryImpl
+ * @generated
+ */
+public class VSLResourceImpl extends XMLResourceImpl
+{
+ /**
+ * Creates an instance of the resource.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param uri the URI of the new resource.
+ * @generated
+ */
+ public VSLResourceImpl(URI uri)
+ {
+ super(uri);
+ }
+
+} //VSLResourceImpl
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/util/VSLSwitch.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/util/VSLSwitch.java
new file mode 100644
index 00000000000..968663c472b
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/util/VSLSwitch.java
@@ -0,0 +1,1034 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.util.Switch;
+
+import org.eclipse.papyrus.marte.vsl.vSL.*;
+
+/**
+ * <!-- 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.papyrus.marte.vsl.vSL.VSLPackage
+ * @generated
+ */
+public class VSLSwitch<T> extends Switch<T>
+{
+ /**
+ * The cached model package
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static VSLPackage modelPackage;
+
+ /**
+ * Creates an instance of the switch.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public VSLSwitch()
+ {
+ if (modelPackage == null)
+ {
+ modelPackage = VSLPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Checks whether this is a switch for the given package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @parameter ePackage the package in question.
+ * @return whether this is a switch for the given package.
+ * @generated
+ */
+ @Override
+ protected boolean isSwitchFor(EPackage ePackage)
+ {
+ return ePackage == modelPackage;
+ }
+
+ /**
+ * 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
+ */
+ @Override
+ protected T doSwitch(int classifierID, EObject theEObject)
+ {
+ switch (classifierID)
+ {
+ case VSLPackage.EXPRESSION:
+ {
+ Expression expression = (Expression)theEObject;
+ T result = caseExpression(expression);
+ if (result == null) result = caseValueSpecification(expression);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case VSLPackage.AND_OR_XOR_EXPRESSION:
+ {
+ AndOrXorExpression andOrXorExpression = (AndOrXorExpression)theEObject;
+ T result = caseAndOrXorExpression(andOrXorExpression);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case VSLPackage.EQUALITY_EXPRESSION:
+ {
+ EqualityExpression equalityExpression = (EqualityExpression)theEObject;
+ T result = caseEqualityExpression(equalityExpression);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case VSLPackage.RELATIONAL_EXPRESSION:
+ {
+ RelationalExpression relationalExpression = (RelationalExpression)theEObject;
+ T result = caseRelationalExpression(relationalExpression);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case VSLPackage.CONDITIONAL_EXPRESSION:
+ {
+ ConditionalExpression conditionalExpression = (ConditionalExpression)theEObject;
+ T result = caseConditionalExpression(conditionalExpression);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case VSLPackage.ADDITIVE_EXPRESSION:
+ {
+ AdditiveExpression additiveExpression = (AdditiveExpression)theEObject;
+ T result = caseAdditiveExpression(additiveExpression);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case VSLPackage.MULTIPLICATIVE_EXPRESSION:
+ {
+ MultiplicativeExpression multiplicativeExpression = (MultiplicativeExpression)theEObject;
+ T result = caseMultiplicativeExpression(multiplicativeExpression);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case VSLPackage.UNARY_EXPRESSION:
+ {
+ UnaryExpression unaryExpression = (UnaryExpression)theEObject;
+ T result = caseUnaryExpression(unaryExpression);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case VSLPackage.PRIMARY_EXPRESSION:
+ {
+ PrimaryExpression primaryExpression = (PrimaryExpression)theEObject;
+ T result = casePrimaryExpression(primaryExpression);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case VSLPackage.VALUE_SPECIFICATION:
+ {
+ ValueSpecification valueSpecification = (ValueSpecification)theEObject;
+ T result = caseValueSpecification(valueSpecification);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case VSLPackage.SUFFIX_EXPRESSION:
+ {
+ SuffixExpression suffixExpression = (SuffixExpression)theEObject;
+ T result = caseSuffixExpression(suffixExpression);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case VSLPackage.PROPERTY_CALL_EXPRESSION:
+ {
+ PropertyCallExpression propertyCallExpression = (PropertyCallExpression)theEObject;
+ T result = casePropertyCallExpression(propertyCallExpression);
+ if (result == null) result = caseSuffixExpression(propertyCallExpression);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case VSLPackage.OPERATION_CALL_EXPRESSION:
+ {
+ OperationCallExpression operationCallExpression = (OperationCallExpression)theEObject;
+ T result = caseOperationCallExpression(operationCallExpression);
+ if (result == null) result = caseSuffixExpression(operationCallExpression);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case VSLPackage.LITERAL:
+ {
+ Literal literal = (Literal)theEObject;
+ T result = caseLiteral(literal);
+ if (result == null) result = caseValueSpecification(literal);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case VSLPackage.NAME_OR_CHOICE_OR_BEHAVIOR_CALL:
+ {
+ NameOrChoiceOrBehaviorCall nameOrChoiceOrBehaviorCall = (NameOrChoiceOrBehaviorCall)theEObject;
+ T result = caseNameOrChoiceOrBehaviorCall(nameOrChoiceOrBehaviorCall);
+ if (result == null) result = caseValueSpecification(nameOrChoiceOrBehaviorCall);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case VSLPackage.QUALIFIED_NAME:
+ {
+ QualifiedName qualifiedName = (QualifiedName)theEObject;
+ T result = caseQualifiedName(qualifiedName);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case VSLPackage.INTERVAL:
+ {
+ Interval interval = (Interval)theEObject;
+ T result = caseInterval(interval);
+ if (result == null) result = caseValueSpecification(interval);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case VSLPackage.COLLECTION_OR_TUPLE:
+ {
+ CollectionOrTuple collectionOrTuple = (CollectionOrTuple)theEObject;
+ T result = caseCollectionOrTuple(collectionOrTuple);
+ if (result == null) result = caseValueSpecification(collectionOrTuple);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case VSLPackage.TUPLE:
+ {
+ Tuple tuple = (Tuple)theEObject;
+ T result = caseTuple(tuple);
+ if (result == null) result = caseValueSpecification(tuple);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case VSLPackage.LIST_OF_VALUES:
+ {
+ ListOfValues listOfValues = (ListOfValues)theEObject;
+ T result = caseListOfValues(listOfValues);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case VSLPackage.LIST_OF_VALUE_NAME_PAIRS:
+ {
+ ListOfValueNamePairs listOfValueNamePairs = (ListOfValueNamePairs)theEObject;
+ T result = caseListOfValueNamePairs(listOfValueNamePairs);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case VSLPackage.VALUE_NAME_PAIR:
+ {
+ ValueNamePair valueNamePair = (ValueNamePair)theEObject;
+ T result = caseValueNamePair(valueNamePair);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case VSLPackage.TIME_EXPRESSION:
+ {
+ TimeExpression timeExpression = (TimeExpression)theEObject;
+ T result = caseTimeExpression(timeExpression);
+ if (result == null) result = caseValueSpecification(timeExpression);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case VSLPackage.INSTANT_OBS_EXPRESSION:
+ {
+ InstantObsExpression instantObsExpression = (InstantObsExpression)theEObject;
+ T result = caseInstantObsExpression(instantObsExpression);
+ if (result == null) result = caseTimeExpression(instantObsExpression);
+ if (result == null) result = caseValueSpecification(instantObsExpression);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case VSLPackage.INSTANT_OBS_NAME:
+ {
+ InstantObsName instantObsName = (InstantObsName)theEObject;
+ T result = caseInstantObsName(instantObsName);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case VSLPackage.DURATION_OBS_EXPRESSION:
+ {
+ DurationObsExpression durationObsExpression = (DurationObsExpression)theEObject;
+ T result = caseDurationObsExpression(durationObsExpression);
+ if (result == null) result = caseTimeExpression(durationObsExpression);
+ if (result == null) result = caseValueSpecification(durationObsExpression);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case VSLPackage.DURATION_OBS_NAME:
+ {
+ DurationObsName durationObsName = (DurationObsName)theEObject;
+ T result = caseDurationObsName(durationObsName);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case VSLPackage.JITTER_EXP:
+ {
+ JitterExp jitterExp = (JitterExp)theEObject;
+ T result = caseJitterExp(jitterExp);
+ if (result == null) result = caseTimeExpression(jitterExp);
+ if (result == null) result = caseValueSpecification(jitterExp);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case VSLPackage.VARIABLE_DECLARATION:
+ {
+ VariableDeclaration variableDeclaration = (VariableDeclaration)theEObject;
+ T result = caseVariableDeclaration(variableDeclaration);
+ if (result == null) result = caseValueSpecification(variableDeclaration);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case VSLPackage.DATA_TYPE_NAME:
+ {
+ DataTypeName dataTypeName = (DataTypeName)theEObject;
+ T result = caseDataTypeName(dataTypeName);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case VSLPackage.NUMBER_LITERAL_RULE:
+ {
+ NumberLiteralRule numberLiteralRule = (NumberLiteralRule)theEObject;
+ T result = caseNumberLiteralRule(numberLiteralRule);
+ if (result == null) result = caseLiteral(numberLiteralRule);
+ if (result == null) result = caseValueSpecification(numberLiteralRule);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case VSLPackage.INTEGER_LITERAL_RULE:
+ {
+ IntegerLiteralRule integerLiteralRule = (IntegerLiteralRule)theEObject;
+ T result = caseIntegerLiteralRule(integerLiteralRule);
+ if (result == null) result = caseNumberLiteralRule(integerLiteralRule);
+ if (result == null) result = caseLiteral(integerLiteralRule);
+ if (result == null) result = caseValueSpecification(integerLiteralRule);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case VSLPackage.UNLIMITED_LITERAL_RULE:
+ {
+ UnlimitedLiteralRule unlimitedLiteralRule = (UnlimitedLiteralRule)theEObject;
+ T result = caseUnlimitedLiteralRule(unlimitedLiteralRule);
+ if (result == null) result = caseNumberLiteralRule(unlimitedLiteralRule);
+ if (result == null) result = caseLiteral(unlimitedLiteralRule);
+ if (result == null) result = caseValueSpecification(unlimitedLiteralRule);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case VSLPackage.REAL_LITERAL_RULE:
+ {
+ RealLiteralRule realLiteralRule = (RealLiteralRule)theEObject;
+ T result = caseRealLiteralRule(realLiteralRule);
+ if (result == null) result = caseNumberLiteralRule(realLiteralRule);
+ if (result == null) result = caseLiteral(realLiteralRule);
+ if (result == null) result = caseValueSpecification(realLiteralRule);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case VSLPackage.DATE_TIME_LITERAL_RULE:
+ {
+ DateTimeLiteralRule dateTimeLiteralRule = (DateTimeLiteralRule)theEObject;
+ T result = caseDateTimeLiteralRule(dateTimeLiteralRule);
+ if (result == null) result = caseLiteral(dateTimeLiteralRule);
+ if (result == null) result = caseValueSpecification(dateTimeLiteralRule);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case VSLPackage.BOOLEAN_LITERAL_RULE:
+ {
+ BooleanLiteralRule booleanLiteralRule = (BooleanLiteralRule)theEObject;
+ T result = caseBooleanLiteralRule(booleanLiteralRule);
+ if (result == null) result = caseLiteral(booleanLiteralRule);
+ if (result == null) result = caseValueSpecification(booleanLiteralRule);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case VSLPackage.NULL_LITERAL_RULE:
+ {
+ NullLiteralRule nullLiteralRule = (NullLiteralRule)theEObject;
+ T result = caseNullLiteralRule(nullLiteralRule);
+ if (result == null) result = caseLiteral(nullLiteralRule);
+ if (result == null) result = caseValueSpecification(nullLiteralRule);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case VSLPackage.DEFAULT_LITERAL_RULE:
+ {
+ DefaultLiteralRule defaultLiteralRule = (DefaultLiteralRule)theEObject;
+ T result = caseDefaultLiteralRule(defaultLiteralRule);
+ if (result == null) result = caseLiteral(defaultLiteralRule);
+ if (result == null) result = caseValueSpecification(defaultLiteralRule);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case VSLPackage.STRING_LITERAL_RULE:
+ {
+ StringLiteralRule stringLiteralRule = (StringLiteralRule)theEObject;
+ T result = caseStringLiteralRule(stringLiteralRule);
+ if (result == null) result = caseLiteral(stringLiteralRule);
+ if (result == null) result = caseValueSpecification(stringLiteralRule);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ default: return defaultCase(theEObject);
+ }
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Expression</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Expression</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseExpression(Expression object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>And Or Xor Expression</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>And Or Xor Expression</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseAndOrXorExpression(AndOrXorExpression object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Equality Expression</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Equality Expression</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseEqualityExpression(EqualityExpression object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Relational Expression</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Relational Expression</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseRelationalExpression(RelationalExpression object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Conditional Expression</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Conditional Expression</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseConditionalExpression(ConditionalExpression object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Additive Expression</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Additive Expression</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseAdditiveExpression(AdditiveExpression object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Multiplicative Expression</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Multiplicative Expression</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseMultiplicativeExpression(MultiplicativeExpression object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Unary Expression</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Unary Expression</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseUnaryExpression(UnaryExpression object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Primary Expression</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Primary Expression</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T casePrimaryExpression(PrimaryExpression object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Value Specification</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>Value Specification</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseValueSpecification(ValueSpecification object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Suffix Expression</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Suffix Expression</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseSuffixExpression(SuffixExpression object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Property Call Expression</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Property Call Expression</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T casePropertyCallExpression(PropertyCallExpression object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Operation Call Expression</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Operation Call Expression</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseOperationCallExpression(OperationCallExpression object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Literal</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>Literal</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseLiteral(Literal object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Name Or Choice Or Behavior Call</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>Name Or Choice Or Behavior Call</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseNameOrChoiceOrBehaviorCall(NameOrChoiceOrBehaviorCall object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Qualified Name</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>Qualified Name</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseQualifiedName(QualifiedName object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Interval</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>Interval</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseInterval(Interval object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Collection Or Tuple</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>Collection Or Tuple</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseCollectionOrTuple(CollectionOrTuple object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Tuple</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>Tuple</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseTuple(Tuple object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>List Of Values</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>List Of Values</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseListOfValues(ListOfValues object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>List Of Value Name Pairs</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>List Of Value Name Pairs</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseListOfValueNamePairs(ListOfValueNamePairs object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Value Name Pair</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>Value Name Pair</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseValueNamePair(ValueNamePair object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Time Expression</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Time Expression</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseTimeExpression(TimeExpression object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Instant Obs Expression</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Instant Obs Expression</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseInstantObsExpression(InstantObsExpression object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Instant Obs Name</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>Instant Obs Name</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseInstantObsName(InstantObsName object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Duration Obs Expression</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Duration Obs Expression</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseDurationObsExpression(DurationObsExpression object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Duration Obs Name</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>Duration Obs Name</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseDurationObsName(DurationObsName object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Jitter Exp</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>Jitter Exp</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseJitterExp(JitterExp object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Variable 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>Variable Declaration</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseVariableDeclaration(VariableDeclaration object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Data Type Name</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>Data Type Name</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseDataTypeName(DataTypeName object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Number Literal Rule</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>Number Literal Rule</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseNumberLiteralRule(NumberLiteralRule object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Integer Literal Rule</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>Integer Literal Rule</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIntegerLiteralRule(IntegerLiteralRule object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Unlimited Literal Rule</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>Unlimited Literal Rule</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseUnlimitedLiteralRule(UnlimitedLiteralRule object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Real Literal Rule</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>Real Literal Rule</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseRealLiteralRule(RealLiteralRule object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Date Time Literal Rule</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>Date Time Literal Rule</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseDateTimeLiteralRule(DateTimeLiteralRule object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Boolean Literal Rule</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>Boolean Literal Rule</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseBooleanLiteralRule(BooleanLiteralRule object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Null Literal Rule</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>Null Literal Rule</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseNullLiteralRule(NullLiteralRule object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Default Literal Rule</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>Default Literal Rule</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseDefaultLiteralRule(DefaultLiteralRule object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>String Literal Rule</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>String Literal Rule</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseStringLiteralRule(StringLiteralRule 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
+ */
+ @Override
+ public T defaultCase(EObject object)
+ {
+ return null;
+ }
+
+} //VSLSwitch
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/util/VSLXMLProcessor.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/util/VSLXMLProcessor.java
new file mode 100644
index 00000000000..1a190e8934d
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/vSL/util/VSLXMLProcessor.java
@@ -0,0 +1,58 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.papyrus.marte.vsl.vSL.util;
+
+import java.util.Map;
+
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.resource.Resource;
+
+import org.eclipse.emf.ecore.xmi.util.XMLProcessor;
+
+import org.eclipse.papyrus.marte.vsl.vSL.VSLPackage;
+
+/**
+ * This class contains helper methods to serialize and deserialize XML documents
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class VSLXMLProcessor extends XMLProcessor
+{
+
+ /**
+ * Public constructor to instantiate the helper.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public VSLXMLProcessor()
+ {
+ super((EPackage.Registry.INSTANCE));
+ VSLPackage.eINSTANCE.eClass();
+ }
+
+ /**
+ * Register for "*" and "xml" file extensions the VSLResourceFactoryImpl factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected Map<String, Resource.Factory> getRegistrations()
+ {
+ if (registrations == null)
+ {
+ super.getRegistrations();
+ registrations.put(XML_EXTENSION, new VSLResourceFactoryImpl());
+ registrations.put(STAR_EXTENSION, new VSLResourceFactoryImpl());
+ }
+ return registrations;
+ }
+
+} //VSLXMLProcessor
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/validation/AbstractVSLJavaValidator.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/validation/AbstractVSLJavaValidator.java
new file mode 100644
index 00000000000..bcfc0f2a6c0
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src-gen/org/eclipse/papyrus/marte/vsl/validation/AbstractVSLJavaValidator.java
@@ -0,0 +1,20 @@
+package org.eclipse.papyrus.marte.vsl.validation;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.xtext.validation.AbstractDeclarativeValidator;
+import org.eclipse.xtext.validation.ComposedChecks;
+
+@ComposedChecks(validators= {org.eclipse.xtext.validation.ImportUriValidator.class, org.eclipse.xtext.validation.NamesAreUniqueValidator.class})
+public class AbstractVSLJavaValidator extends AbstractDeclarativeValidator {
+
+ @Override
+ protected List<EPackage> getEPackages() {
+ List<EPackage> result = new ArrayList<EPackage>();
+ result.add(org.eclipse.papyrus.marte.vsl.vSL.VSLPackage.eINSTANCE);
+ return result;
+ }
+
+}
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src/org/eclipse/papyrus/marte/vsl/Copy of VSLPostProcessor.ext b/plugins/marte/org.eclipse.papyrus.marte.vsl/src/org/eclipse/papyrus/marte/vsl/Copy of VSLPostProcessor.ext
new file mode 100644
index 00000000000..7158f3253e5
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src/org/eclipse/papyrus/marte/vsl/Copy of VSLPostProcessor.ext
@@ -0,0 +1,51 @@
+import ecore;
+//import uml ;
+
+process(xtext::GeneratedMetamodel this) :
+ process(ePackage)
+;
+
+process(EPackage this) :
+ eClassifiers.typeSelect(EClass).process()
+;
+
+/*process(EClass this) :
+ switch (name) {
+ case "Foo": (addOperation("doFoo", getEcoreDataType("EString")) -> addOperation("getBar", ePackage.getEClassifier("Bar")))
+ default: null
+ }
+;*/
+
+process(EClass this) :
+ addOperation(this, "getExpectedType", getTypeEClass())
+;
+
+EClass getTypeEClass () :
+ JAVA org.eclipse.papyrus.marte.vsl.extensions.XtendUtil.getTypeEClass() ;
+
+addOperation(EClass this, String name, EClassifier type) :
+ let op = newOperation(this, name, type) :
+ newDelegatingBodyAnnotation(op)
+;
+
+create EOperation newOperation(EClass owner, String name, EClassifier type) :
+ setName(name) -> setEType(type) -> owner.eOperations.add(this)
+;
+
+create EAnnotation newDelegatingBodyAnnotation(EOperation op) :
+ let d = new EStringToStringMapEntry :
+ setSource("http://www.eclipse.org/emf/2002/GenModel") ->
+ d.setKey("body") ->
+ //d.setValue((op.eType != null ? "return " : "") + op.delegateMethodName() + "(this);") ->
+ //d.setValue((op.eType != null ? "return " : "") + op.delegateMethodName() ) ->
+ d.setValue(op.delegateMethodName() ) ->
+ details.add(d) ->
+ op.eAnnotations.add(this)
+;
+
+delegateMethodName(EOperation this) :
+ //"com.mycompany." + eContainingClass.name + "Helper." + name
+ "
+ return org.eclipse.papyrus.marte.vsl.validation.VSLContextUtil.getExpectedType(this) ;
+ "
+; \ No newline at end of file
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src/org/eclipse/papyrus/marte/vsl/GenerateVSL.mwe2 b/plugins/marte/org.eclipse.papyrus.marte.vsl/src/org/eclipse/papyrus/marte/vsl/GenerateVSL.mwe2
new file mode 100644
index 00000000000..9471464606b
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src/org/eclipse/papyrus/marte/vsl/GenerateVSL.mwe2
@@ -0,0 +1,110 @@
+module org.eclipse.papyrus.marte.vsl.VSL
+
+import org.eclipse.emf.mwe.utils.*
+import org.eclipse.xtext.generator.*
+import org.eclipse.xtext.ui.generator.*
+
+var grammarURI = "classpath:/org/eclipse/papyrus/marte/vsl/VSL.xtext"
+var file.extensions = "vsl"
+var projectName = "org.eclipse.papyrus.marte.vsl"
+var runtimeProject = "../${projectName}"
+
+Workflow {
+ /*bean = StandaloneSetup {
+ platformUri = "${runtimeProject}/.."
+ }*/
+
+ bean = StandaloneSetup {
+ platformUri = "${runtimeProject}/.."
+ registerGeneratedEPackage = "org.eclipse.uml2.uml.UMLPackage"
+ registerGeneratedEPackage = "org.eclipse.uml2.codegen.ecore.genmodel.GenModelPackage"
+ uriMap = {from="platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore"
+ to="platform:/resource/org.eclipse.papyrus.marte.vsl/model/Ecore.ecore"}
+ uriMap = {from="platform:/plugin/org.eclipse.emf.ecore/model/Ecore.genmodel"
+ to="platform:/resource/org.eclipse.papyrus.marte.vsl/model/Ecore.genmodel"}
+ }
+
+ component = DirectoryCleaner {
+ directory = "${runtimeProject}/src-gen"
+ }
+
+ component = DirectoryCleaner {
+ directory = "${runtimeProject}.ui/src-gen"
+ }
+
+ component = Generator {
+ pathRtProject = runtimeProject
+ pathUiProject = "${runtimeProject}.ui"
+ projectNameRt = projectName
+ projectNameUi = "${projectName}.ui"
+ language = {
+ uri = grammarURI
+ fileExtensions = file.extensions
+
+ // Java API to access grammar elements (required by several other fragments)
+ fragment = grammarAccess.GrammarAccessFragment {}
+
+ // generates Java API for the generated EPackages
+ fragment = ecore.EcoreGeneratorFragment {
+ referencedGenModels = "platform:/resource/org.eclipse.papyrus.marte.vsl/model/UML.genmodel"
+
+ }
+
+ // the serialization component
+ fragment = parseTreeConstructor.ParseTreeConstructorFragment {}
+
+ // a custom ResourceFactory for use with EMF
+ fragment = resourceFactory.ResourceFactoryFragment {
+ fileExtensions = file.extensions
+ }
+
+ // The antlr parser generator fragment.
+ fragment = parser.antlr.XtextAntlrGeneratorFragment {
+ //options = {
+ // backtrack = true
+ //}
+ }
+
+ // java-based API for validation
+ fragment = validation.JavaValidatorFragment {
+ composedCheck = "org.eclipse.xtext.validation.ImportUriValidator"
+ composedCheck = "org.eclipse.xtext.validation.NamesAreUniqueValidator"
+ // registerForImportedPackages = true
+ }
+
+ // scoping and exporting API
+ fragment = scoping.ImportURIScopingFragment {}
+ fragment = exporting.SimpleNamesFragment {}
+
+ // scoping and exporting API
+ //fragment = scoping.ImportNamespacesScopingFragment {}
+ //fragment = exporting.QualifiedNamesFragment {}
+ //fragment = builder.BuilderIntegrationFragment {}
+
+ // formatter API
+ fragment = formatting.FormatterFragment {}
+
+ // labeling API
+ fragment = labeling.LabelProviderFragment {}
+
+ // outline API
+ fragment = outline.OutlineTreeProviderFragment {}
+ fragment = outline.QuickOutlineFragment {}
+
+ // quickfix API
+ fragment = quickfix.QuickfixProviderFragment {}
+
+ // content assist API
+ fragment = contentAssist.JavaBasedContentAssistFragment {}
+
+ // generates a more lightweight Antlr parser and lexer tailored for content assist
+ fragment = parser.antlr.XtextAntlrUiGeneratorFragment {}
+
+ // project wizard (optional)
+ // fragment = projectWizard.SimpleProjectWizardFragment {
+ // generatorProjectName = "${projectName}.generator"
+ // modelFileExtension = file.extensions
+ // }
+ }
+ }
+}
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src/org/eclipse/papyrus/marte/vsl/VSL.xtext b/plugins/marte/org.eclipse.papyrus.marte.vsl/src/org/eclipse/papyrus/marte/vsl/VSL.xtext
new file mode 100644
index 00000000000..ebd94df5479
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src/org/eclipse/papyrus/marte/vsl/VSL.xtext
@@ -0,0 +1,208 @@
+/*****************************************************************************
+ * Copyright (c) 2010 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+
+grammar org.eclipse.papyrus.marte.vsl.VSL with org.eclipse.xtext.common.Terminals
+
+import "http://www.eclipse.org/uml2/3.0.0/UML" as uml
+
+generate vSL "http://www.eclipse.org/papyrus/marte/vsl/VSL"
+
+Expression :
+ exp=AndOrXorExpression ;
+
+AndOrXorExpression :
+ exp+=EqualityExpression (op+=('and' | 'or' | 'xor') exp+=EqualityExpression)* ;
+
+EqualityExpression :
+ exp+=RelationalExpression (op+=('==' | '<>') exp+=RelationalExpression)* ;
+
+RelationalExpression :
+ exp+=ConditionalExpression (op+=('<' | '>' | '<=' | '>=') exp+=ConditionalExpression)* ;
+
+ConditionalExpression :
+ exp+=AdditiveExpression (op+='?' exp+=AdditiveExpression ':' exp+=AdditiveExpression)? ;
+
+AdditiveExpression :
+ exp+=MultiplicativeExpression (op+=('+' | '-') exp+=MultiplicativeExpression)* ;
+
+MultiplicativeExpression :
+ exp+=UnaryExpression (op+=('*' | '/' | 'mod') exp+=UnaryExpression)* ;
+
+UnaryExpression:
+ (op=('not'|'-'|'+')) unary=UnaryExpression | exp=PrimaryExpression ;
+
+PrimaryExpression :
+ prefix=ValueSpecification ('.' suffix=SuffixExpression)?;
+
+ValueSpecification:
+ Literal
+ | NameOrChoiceOrBehaviorCall
+ | Interval
+ | CollectionOrTuple
+ | Tuple
+ | TimeExpression
+ | VariableDeclaration
+ | '(' Expression ')'
+ ;
+
+SuffixExpression :
+ PropertyCallExpression | OperationCallExpression ;
+
+PropertyCallExpression :
+ property=[uml::Property] ('.' suffix=SuffixExpression)? ;
+
+OperationCallExpression :
+ operation=[uml::Operation]'('(arguments=ListOfValues)?')' ('.' suffix=SuffixExpression)? ;
+
+Literal:
+ NumberLiteralRule
+ | DateTimeLiteralRule
+ | BooleanLiteralRule
+ | NullLiteralRule
+ | DefaultLiteralRule
+ | StringLiteralRule ;
+
+NameOrChoiceOrBehaviorCall :
+ // can resolve to :
+ // - EnumSpecification,
+ // - VariableCallExpression
+ // - PropertyCallExpression
+ // - ChoiceExpression
+ (path=QualifiedName)? id=[uml::NamedElement] ('('(arguments = ListOfValues)?')')? ;
+
+QualifiedName :
+ path=[uml::Namespace]'::' (remaining=QualifiedName)? ;
+
+Interval :
+ (']'|isLowerIncluded='[') lower = Expression '..' upper = Expression (isUpperIncluded=']'|'[') ;
+
+CollectionOrTuple :
+ '{' listOfValues=ListOfValues '}';
+
+Tuple :
+ '{' listOfValueNamePairs=ListOfValueNamePairs '}';
+
+ListOfValues :
+ values+=Expression (',' values+=Expression )* ;
+
+ListOfValueNamePairs :
+ valueNamePairs+=ValueNamePair (',' valueNamePairs+=ValueNamePair)* ;
+
+ValueNamePair :
+ property = [uml::Property] '=' value=Expression ;
+
+TimeExpression :
+ InstantObsExpression |
+ DurationObsExpression |
+ JitterExp ;
+
+InstantObsExpression :
+ '@' id=InstantObsName ('('index=Expression')')? ('when' '('condition=Expression')' )?;
+
+InstantObsName :
+ (path=QualifiedName)? instantId=[uml::TimeObservation] ;
+
+DurationObsExpression :
+ '&' id=DurationObsName ('('index=Expression')')? ('when' '('condition=Expression')' )?;
+
+DurationObsName :
+ (path=QualifiedName)? durationId=[uml::DurationObservation] ;
+
+JitterExp :
+ 'jitter('firstInstant=InstantObsExpression ('-' secondInstant=InstantObsExpression)? ')' ;
+
+VariableDeclaration :
+ (variableDeclaration=VariableDirectionKind)?
+ '$' name=ID (
+ (':' type=DataTypeName ('=' '('initValue = Expression')')? ) |
+ ('=' '('initValue = Expression')')
+ ) ;
+
+VariableDirectionKind :
+ 'in'|'out'|'inout' ;
+
+DataTypeName :
+ (path=QualifiedName)? type=[uml::DataType] ;
+
+//////////////////////////////////////////////////////////////////////////////////////////////////////
+//LITERAL
+//////////////////////////////////////////////////////////////////////////////////////////////////////
+
+NumberLiteralRule :
+ IntegerLiteralRule
+ | UnlimitedLiteralRule
+ | RealLiteralRule ;
+
+IntegerLiteralRule :
+ value = IntegerLiteral ;
+terminal IntegerLiteral :
+ ('+'|'-')?
+ (
+ ('0'..'9')+ |
+ '0x' ('0'..'9' | 'A'..'F' | 'a'..'f')+ |
+ '0b' ('0'..'1')+
+ ) ;
+
+//UnlimitedLiteralRule :
+// value = UnlimitedLiteral ;
+//terminal UnlimitedLiteral :
+// '*' ;
+
+UnlimitedLiteralRule :
+ value = '*' ;
+
+RealLiteralRule :
+ value = RealLiteral ;
+terminal RealLiteral :
+ ('+'|'-')?('0'..'9')+ '.' ('0'..'9')+
+ ('E' ('+'|'-')? ('0'..'9')+)?;
+
+//DateTimeLiteral:
+// TimeString (DateString)? (DayString)? |
+// DateString (DayString)? |
+// DayString ;
+//terminal DateString :
+// ('0'..'9')('0'..'9')('0'..'9')('0'..'9')'/'('0'('0'..'9')|'1'('0'..'2'))'/'(('0'..'2')('0'..'9')|'3' ('0'|'1')) ;
+//terminal TimeString :
+// (('0'..'1')('0'..'9')|'2'('0'..'3'))':'('0'..'5')('0'..'9')(':'('0'..'5')('0'..'9')(':'('0'..'9')('0'..'9'))?)? ;
+//terminal DayString :
+// "Mon" | "Tue" | "Wed" | "Thr" | "Fri" | "Sat" | "Sun" ;
+
+DateTimeLiteralRule :
+ value = DateTimeLiteral ;
+terminal DateTimeLiteral:
+ ((('0'..'1')('0'..'9')|'2'('0'..'3'))':'('0'..'5')('0'..'9')(':'('0'..'5')('0'..'9')(':'('0'..'9')('0'..'9'))?)?) (" "('0'..'9')('0'..'9')('0'..'9')('0'..'9')'/'('0'('0'..'9')|'1'('0'..'2'))'/'(('0'..'2')('0'..'9')|'3' ('0'|'1')))? (" " ("Mon" | "Tue" | "Wed" | "Thr" | "Fri" | "Sat" | "Sun"))? |
+ (('0'..'9')('0'..'9')('0'..'9')('0'..'9')'/'('0'('0'..'9')|'1'('0'..'2'))'/'(('0'..'2')('0'..'9')|'3' ('0'|'1'))) (" "("Mon" | "Tue" | "Wed" | "Thr" | "Fri" | "Sat" | "Sun"))? |
+ ("Mon" | "Tue" | "Wed" | "Thr" | "Fri" | "Sat" | "Sun") ;
+
+BooleanLiteralRule :
+ value = BooleanLiteral ;
+terminal BooleanLiteral :
+ "true"|"false" ;
+
+NullLiteralRule :
+ value = NullLiteral ;
+terminal NullLiteral :
+ "null" ;
+
+//DefaultLiteralRule :
+// value = DefaultLiteral ;
+//terminal DefaultLiteral :
+// '/' ;
+
+DefaultLiteralRule:
+ value = '/' ;
+
+StringLiteralRule :
+ value = STRING ;
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src/org/eclipse/papyrus/marte/vsl/VSLPostProcessor.ext b/plugins/marte/org.eclipse.papyrus.marte.vsl/src/org/eclipse/papyrus/marte/vsl/VSLPostProcessor.ext
new file mode 100644
index 00000000000..289437f5ee9
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src/org/eclipse/papyrus/marte/vsl/VSLPostProcessor.ext
@@ -0,0 +1,84 @@
+import ecore;
+//import uml ;
+
+process(xtext::GeneratedMetamodel this) :
+ process(ePackage)
+;
+
+process(EPackage this) :
+ eClassifiers.typeSelect(EClass).process()
+;
+
+/*process(EClass this) :
+ switch (name) {
+ case "Foo": (addOperation("doFoo", getEcoreDataType("EString")) -> addOperation("getBar", ePackage.getEClassifier("Bar")))
+ default: null
+ }
+;*/
+
+process(EClass theClass) :
+ addOperationWithParameter(theClass, getEObjectEClass(), getEClassEClass(), "getFilteredParentRule", "return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getFilteredParentRule(this, filter) ;") ->
+ addOperation(theClass, getTypeEClass(), "getExpectedType", "return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getExpectedType(this) ;") ->
+ addOperation(theClass, getElementEClass(), "getContextElement", "return org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.getContextElement(this) ;")
+;
+
+
+EClass getTypeEClass() :
+ JAVA org.eclipse.papyrus.marte.vsl.extensions.XtendUtil.getTypeEClass() ;
+
+
+/*
+EClass getNamespaceEClass () :
+ JAVA org.eclipse.papyrus.marte.vsl.extensions.XtendUtil.getNamespaceEClass() ;
+*/
+EClass getElementEClass () :
+ JAVA org.eclipse.papyrus.marte.vsl.extensions.XtendUtil.getElementEClass() ;
+
+EClass getEClassEClass () :
+ JAVA org.eclipse.papyrus.marte.vsl.extensions.XtendUtil.getEClassEClass() ;
+
+EClass getEObjectEClass () :
+ JAVA org.eclipse.papyrus.marte.vsl.extensions.XtendUtil.getEObjectEClass() ;
+
+/*EClass getObjectClass() :
+ JAVA org.eclipse.papyrus.marte.vsl.extensions.XtendUtil.getObjectClass() ;*/
+
+addOperation(EClass this, EClassifier returnType, String operationName, String body) :
+ let op = newOperation(this, operationName, returnType) :
+ newDelegatingBodyAnnotation(op, body)
+;
+
+create EOperation newOperation(EClass owner, String name, EClassifier returnType) :
+ setName(name) -> setEType(returnType) -> owner.eOperations.add(this)
+;
+
+addOperationWithParameter(EClass this, EClassifier returnType, EClass parameterType, String operationName, String body) :
+ let op = newOperationWithParameter(this, operationName, returnType, parameterType) :
+ newDelegatingBodyAnnotation(op, body)
+;
+
+create EOperation newOperationWithParameter(EClass owner, String name, EClassifier returnType, EClassifier parameterType) :
+ setName(name) -> setEType(returnType) -> owner.eOperations.add(this) -> newParameter(this, "filter", parameterType)
+;
+
+create EParameter newParameter(EOperation owner, String name, EClassifier type) :
+ setName(name) -> setEType(type) -> owner.eParameters.add(this)
+;
+
+create EAnnotation newDelegatingBodyAnnotation(EOperation op, String body) :
+ let d = new EStringToStringMapEntry :
+ setSource("http://www.eclipse.org/emf/2002/GenModel") ->
+ d.setKey("body") ->
+ //d.setValue((op.eType != null ? "return " : "") + op.delegateMethodName() + "(this);") ->
+ //d.setValue((op.eType != null ? "return " : "") + op.delegateMethodName() ) ->
+ d.setValue(body) ->
+ details.add(d) ->
+ op.eAnnotations.add(this)
+;
+
+//delegateMethodName(EOperation this) :
+ //"com.mycompany." + eContainingClass.name + "Helper." + name
+// "
+// return org.eclipse.papyrus.marte.vsl.validation.VSLContextUtil.getExpectedType(this) ;
+// "
+//; \ No newline at end of file
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src/org/eclipse/papyrus/marte/vsl/VSLRuntimeModule.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src/org/eclipse/papyrus/marte/vsl/VSLRuntimeModule.java
new file mode 100644
index 00000000000..94d0d2e7757
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src/org/eclipse/papyrus/marte/vsl/VSLRuntimeModule.java
@@ -0,0 +1,21 @@
+/*****************************************************************************
+ * Copyright (c) 2010 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.marte.vsl;
+
+/**
+ * Use this class to register components to be used at runtime / without the Equinox extension registry.
+ */
+public class VSLRuntimeModule extends org.eclipse.papyrus.marte.vsl.AbstractVSLRuntimeModule {
+
+}
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src/org/eclipse/papyrus/marte/vsl/VSLStandaloneSetup.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src/org/eclipse/papyrus/marte/vsl/VSLStandaloneSetup.java
new file mode 100644
index 00000000000..560107c225f
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src/org/eclipse/papyrus/marte/vsl/VSLStandaloneSetup.java
@@ -0,0 +1,27 @@
+/*****************************************************************************
+ * Copyright (c) 2010 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.marte.vsl;
+
+/**
+ * Initialization support for running Xtext languages
+ * without equinox extension registry
+ */
+public class VSLStandaloneSetup extends VSLStandaloneSetupGenerated{
+
+ public static void doSetup() {
+ new VSLStandaloneSetup().createInjectorAndDoEMFRegistration();
+ }
+}
+
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src/org/eclipse/papyrus/marte/vsl/extensions/CopyOfVSLContextUtil.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src/org/eclipse/papyrus/marte/vsl/extensions/CopyOfVSLContextUtil.java
new file mode 100644
index 00000000000..76449d14b67
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src/org/eclipse/papyrus/marte/vsl/extensions/CopyOfVSLContextUtil.java
@@ -0,0 +1,310 @@
+/*****************************************************************************
+ * Copyright (c) 2010 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.marte.vsl.extensions;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.papyrus.marte.vsl.vSL.CollectionOrTuple;
+import org.eclipse.papyrus.marte.vsl.vSL.DurationObsExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.Expression;
+import org.eclipse.papyrus.marte.vsl.vSL.InstantObsExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.Interval;
+import org.eclipse.papyrus.marte.vsl.vSL.ListOfValueNamePairs;
+import org.eclipse.papyrus.marte.vsl.vSL.ListOfValues;
+import org.eclipse.papyrus.marte.vsl.vSL.NameOrChoiceOrBehaviorCall;
+import org.eclipse.papyrus.marte.vsl.vSL.OperationCallExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.ValueNamePair;
+import org.eclipse.papyrus.marte.vsl.vSL.VariableDeclaration;
+import org.eclipse.papyrus.marte.vsl.validation.VSLJavaValidator;
+import org.eclipse.uml2.uml.Behavior;
+import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Namespace;
+import org.eclipse.uml2.uml.Operation;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.Stereotype;
+import org.eclipse.uml2.uml.Type;
+
+public class CopyOfVSLContextUtil {
+
+ private static Type getExpectedType_forNestedElement(EObject rule) {
+ Type expectedType = null ;
+ //EObject container = rule.eContainer() ;
+ EObject container = rule ;
+ if (container != null) {
+ EObject tmpContainer = container ;
+ while (tmpContainer != null &&
+ !(tmpContainer instanceof Interval) &&
+ !(tmpContainer instanceof ListOfValueNamePairs) &&
+ !(tmpContainer instanceof NameOrChoiceOrBehaviorCall) &&
+ !(tmpContainer instanceof InstantObsExpression) &&
+ !(tmpContainer instanceof DurationObsExpression) &&
+ !(tmpContainer instanceof VariableDeclaration) &&
+ !(tmpContainer instanceof ListOfValues)) {
+ container = tmpContainer ;
+ tmpContainer = tmpContainer.eContainer() ;
+ }
+ if (tmpContainer instanceof ListOfValueNamePairs) {
+ return getExpectedType_forNestedElement(tmpContainer.eContainer()) ;
+
+ }
+ else if (tmpContainer instanceof ListOfValues) {
+ ListOfValues listOfValues = (ListOfValues) tmpContainer ;
+ int indexOfExpression = listOfValues.getValues().indexOf(container) ;
+ if (listOfValues.eContainer() instanceof CollectionOrTuple) {
+ Type typeOfCollectionOrTuple = ((CollectionOrTuple)listOfValues.eContainer()).getExpectedType() ;
+ if (typeOfCollectionOrTuple.getAppliedStereotype("MARTE::MARTE_Annexes::VSL::DataTypes::CollectionType") != null) {
+ Stereotype collectionStereotype = typeOfCollectionOrTuple.
+ getAppliedStereotype("MARTE::MARTE_Annexes::VSL::DataTypes::CollectionType") ;
+ EObject stereotypeApplication = typeOfCollectionOrTuple.getStereotypeApplication(collectionStereotype) ;
+ EStructuralFeature collectionAttrib = stereotypeApplication.eClass().getEStructuralFeature("collectionAttrib") ;
+ if (collectionAttrib != null) {
+ Property collectionProperty = (Property) stereotypeApplication.eGet(collectionAttrib) ;
+ return collectionProperty.getType() ;
+ }
+ }
+ else if (typeOfCollectionOrTuple.getAppliedStereotype("MARTE::MARTE_Annexes::VSL::DataTypes::TupleType") != null ||
+ typeOfCollectionOrTuple.getAppliedStereotype("MARTE::MARTE_Foundations::NFPs::NfpType") != null) {
+ if (indexOfExpression < ((Classifier)typeOfCollectionOrTuple).getAllAttributes().size())
+ return expectedType = ((Classifier)typeOfCollectionOrTuple).getAllAttributes().get(indexOfExpression).getType() ;
+ }
+
+ }
+ else if (listOfValues.eContainer() instanceof NameOrChoiceOrBehaviorCall) {
+ NameOrChoiceOrBehaviorCall call = (NameOrChoiceOrBehaviorCall) listOfValues.eContainer() ;
+ if (call.getId() != null && call.getId() instanceof Behavior) {
+ Behavior calledBehavior = (Behavior) call.getId() ;
+ if (indexOfExpression < calledBehavior.getOwnedParameters().size())
+ return calledBehavior.getOwnedParameters().get(indexOfExpression).getType() ;
+ }
+ else if (call.getId() != null && call.getId() instanceof Property) { // this is choice
+ Property calledProperty = (Property) call.getId() ;
+ return calledProperty.getType() ;
+ }
+ }
+ else if (listOfValues.eContainer() instanceof OperationCallExpression) {
+ Operation calledOperation = ((OperationCallExpression)listOfValues.eContainer()).getOperation() ;
+ if (calledOperation != null) {
+ if (indexOfExpression < calledOperation.getOwnedParameters().size())
+ return calledOperation.getOwnedParameters().get(indexOfExpression).getType() ;
+ }
+ }
+ }
+ else if (tmpContainer instanceof NameOrChoiceOrBehaviorCall) {
+ NameOrChoiceOrBehaviorCall obj = (NameOrChoiceOrBehaviorCall) tmpContainer ;
+ if (obj.getId() instanceof Property)
+ return ((Property)obj.getId()).getType() ;
+ }
+ else if (tmpContainer instanceof Interval) {
+ Exception e = new Exception("Not Implemented: GetExpectedTypeFor_Expression => Container instanceof Interval") ;
+ e.printStackTrace() ;
+ }
+ else if (tmpContainer instanceof InstantObsExpression) {
+ Exception e = new Exception("Not Implemented: GetExpectedTypeFor_Expression => Container instanceof InstantObsExpression") ;
+ e.printStackTrace() ;
+ }
+ else if (tmpContainer instanceof DurationObsExpression) {
+ Exception e = new Exception("Not Implemented: GetExpectedTypeFor_Expression => Container instanceof DurationObsExpression") ;
+ e.printStackTrace() ;
+ }
+ else if (tmpContainer instanceof VariableDeclaration) {
+ Exception e = new Exception("Not Implemented: GetExpectedTypeFor_Expression => Container instanceof VariablDeclaration") ;
+ e.printStackTrace() ;
+ }
+ return getExpectedType(tmpContainer) ;
+ }
+
+ return org.eclipse.papyrus.marte.vsl.validation.VSLJavaValidator.getExpectedType() ;
+ }
+
+ public static Type getExpectedType(EObject rule) {
+// if (rule instanceof Expression) {
+// Type expectedType = getExpectedTypeFor_Expression((Expression)rule) ;
+// if (expectedType != null)
+// return expectedType ;
+// }
+// else if (rule instanceof ValueNamePair) {
+// Type expectedType = getExpectedTypeFor_ValueNamePair((ValueNamePair)rule) ;
+// if (expectedType != null)
+// return expectedType ;
+// }
+
+ Type expectedType = getExpectedType_forNestedElement(rule) ;
+ if (expectedType != null)
+ return expectedType ;
+
+ if (rule instanceof ValueNamePair) {
+ expectedType = getExpectedTypeFor_ValueNamePair((ValueNamePair)rule) ;
+ if (expectedType != null)
+ return expectedType ;
+ }
+
+ java.lang.reflect.Method m ;
+ try {
+ Class<?>[] params = {} ;
+ m = rule.eContainer().getClass().getMethod("getExpectedType",params);
+ }
+ catch (Exception e) {
+ return org.eclipse.papyrus.marte.vsl.validation.VSLJavaValidator.getExpectedType() ;
+ }
+ try {
+ Object[] args = {} ;
+ return (Type) m.invoke(rule.eContainer(),args) ;
+ }
+ catch (Exception e){
+ return null ;
+ }
+ }
+
+ public static Namespace getModel(EObject rule) {
+ java.lang.reflect.Method m ;
+ try {
+ Class<?>[] params = {} ;
+ m = rule.eContainer().getClass().getMethod("getModel",params);
+ }
+ catch (Exception e) {
+ return org.eclipse.papyrus.marte.vsl.validation.VSLJavaValidator.getModel() ;
+ }
+ try {
+ Object[] args = {} ;
+ return (Namespace) m.invoke(rule.eContainer(),args) ;
+ }
+ catch (Exception e){
+ return null ;
+ }
+ }
+
+ public static Element getContextElement(EObject rule) {
+ java.lang.reflect.Method m ;
+ try {
+ Class<?>[] params = {} ;
+ m = rule.eContainer().getClass().getDeclaredMethod("getContextElement",params);
+ }
+ catch (Exception e) {
+ return org.eclipse.papyrus.marte.vsl.validation.VSLJavaValidator.getContextElement() ;
+ }
+ try {
+ Object[] args = {} ;
+ return (Element) m.invoke(rule.eContainer(),args) ;
+ }
+ catch (Exception e){
+ e.printStackTrace() ;
+ return null ;
+ }
+ }
+
+ private static Type getExpectedTypeFor_ValueNamePair(ValueNamePair rule) {
+ Type expectedType = null ;
+ EObject container = rule.eContainer() ;
+ while (container != null
+ && !(container instanceof NameOrChoiceOrBehaviorCall)
+ && !(container instanceof ValueNamePair)) {
+ container = container.eContainer() ;
+ }
+ if (container != null) {
+ if (container instanceof NameOrChoiceOrBehaviorCall) {
+ NameOrChoiceOrBehaviorCall obj = (NameOrChoiceOrBehaviorCall) container ;
+ if (obj.getId() != null && obj.getId() instanceof Property) {
+ return ((Property)obj.getId()).getType() ;
+ }
+ }
+ else if (container instanceof ValueNamePair) {
+ ValueNamePair obj = (ValueNamePair) container ;
+ if (obj.getProperty() != null)
+ return obj.getProperty().getType() ;
+ }
+ }
+ return expectedType ;
+ }
+
+ private static Type getExpectedTypeFor_Expression(Expression rule) {
+ Type expectedType = null ;
+ EObject container = rule.eContainer() ;
+ if (container != null) {
+ EObject tmpContainer = container ;
+ while (tmpContainer != null &&
+ !(tmpContainer instanceof Interval) &&
+ !(tmpContainer instanceof ValueNamePair) &&
+ !(tmpContainer instanceof InstantObsExpression) &&
+ !(tmpContainer instanceof DurationObsExpression) &&
+ !(tmpContainer instanceof VariableDeclaration) &&
+ !(tmpContainer instanceof ListOfValues)) {
+ tmpContainer = tmpContainer.eContainer() ;
+ }
+ if (tmpContainer instanceof ListOfValues) { // TODO: expression can be deeply nested
+ ListOfValues listOfValues = (ListOfValues) tmpContainer ;
+ int indexOfExpression = listOfValues.getValues().indexOf(rule) ;
+ if (listOfValues.eContainer() instanceof CollectionOrTuple) {
+ Type typeOfCollectionOrTuple = ((CollectionOrTuple)listOfValues.eContainer()).getExpectedType() ;
+ if (typeOfCollectionOrTuple.getAppliedStereotype("MARTE::MARTE_Annexes::VSL::DataTypes::CollectionType") != null) {
+ Stereotype collectionStereotype = typeOfCollectionOrTuple.
+ getAppliedStereotype("MARTE::MARTE_Annexes::VSL::DataTypes::CollectionType") ;
+ EObject stereotypeApplication = typeOfCollectionOrTuple.getStereotypeApplication(collectionStereotype) ;
+ EStructuralFeature collectionAttrib = stereotypeApplication.eClass().getEStructuralFeature("collectionAttrib") ;
+ if (collectionAttrib != null) {
+ Property collectionProperty = (Property) stereotypeApplication.eGet(collectionAttrib) ;
+ return collectionProperty.getType() ;
+ }
+ }
+ else if (typeOfCollectionOrTuple.getAppliedStereotype("MARTE::MARTE_Annexes::VSL::DataTypes::TupleType") != null ||
+ typeOfCollectionOrTuple.getAppliedStereotype("MARTE::MARTE_Foundations::NFPs::NfpType") != null) {
+ if (indexOfExpression < ((Classifier)typeOfCollectionOrTuple).getAllAttributes().size())
+ return expectedType = ((Classifier)typeOfCollectionOrTuple).getAllAttributes().get(indexOfExpression).getType() ;
+ }
+
+ }
+ else if (listOfValues.eContainer() instanceof NameOrChoiceOrBehaviorCall) {
+ NameOrChoiceOrBehaviorCall call = (NameOrChoiceOrBehaviorCall) listOfValues.eContainer() ;
+ if (call.getId() != null && call.getId() instanceof Behavior) {
+ Behavior calledBehavior = (Behavior) call.getId() ;
+ if (indexOfExpression < calledBehavior.getOwnedParameters().size())
+ return calledBehavior.getOwnedParameters().get(indexOfExpression).getType() ;
+ }
+ }
+ else if (listOfValues.eContainer() instanceof OperationCallExpression) {
+ Operation calledOperation = ((OperationCallExpression)listOfValues.eContainer()).getOperation() ;
+ if (calledOperation != null) {
+ if (indexOfExpression < calledOperation.getOwnedParameters().size())
+ return calledOperation.getOwnedParameters().get(indexOfExpression).getType() ;
+ }
+ }
+ }
+ else if (tmpContainer instanceof ValueNamePair) {
+ ValueNamePair obj = (ValueNamePair) tmpContainer ;
+ if (obj.getProperty() != null) {
+ return obj.getProperty().getType() ;
+ }
+ }
+ else if (tmpContainer instanceof Interval) {
+ Exception e = new Exception("Not Implemented: GetExpectedTypeFor_Expression => Container instanceof Interval") ;
+ e.printStackTrace() ;
+ }
+ else if (tmpContainer instanceof InstantObsExpression) {
+ Exception e = new Exception("Not Implemented: GetExpectedTypeFor_Expression => Container instanceof InstantObsExpression") ;
+ e.printStackTrace() ;
+ }
+ else if (tmpContainer instanceof DurationObsExpression) {
+ Exception e = new Exception("Not Implemented: GetExpectedTypeFor_Expression => Container instanceof DurationObsExpression") ;
+ e.printStackTrace() ;
+ }
+ else if (tmpContainer instanceof VariableDeclaration) {
+ Exception e = new Exception("Not Implemented: GetExpectedTypeFor_Expression => Container instanceof VariablDeclaration") ;
+ e.printStackTrace() ;
+ }
+ return getExpectedType(tmpContainer) ;
+ }
+
+ return expectedType ;
+ }
+}
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src/org/eclipse/papyrus/marte/vsl/extensions/VSLContextUtil.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src/org/eclipse/papyrus/marte/vsl/extensions/VSLContextUtil.java
new file mode 100644
index 00000000000..acd3a3203d7
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src/org/eclipse/papyrus/marte/vsl/extensions/VSLContextUtil.java
@@ -0,0 +1,257 @@
+/*****************************************************************************
+ * Copyright (c) 2010 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.marte.vsl.extensions;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.Namespace;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.Stereotype;
+import org.eclipse.uml2.uml.Type;
+
+public class VSLContextUtil {
+
+ public static final VSLContextUtil eInstance = new VSLContextUtil() ;
+
+ /**
+ * @param rule
+ * @return
+ */
+ public static Type getExpectedType(EObject rule) {
+
+ java.lang.reflect.Method m ;
+ try {
+ Class<?>[] params = {} ;
+ m = rule.eContainer().getClass().getMethod("getExpectedType",params);
+ }
+ catch (Exception e) {
+ return org.eclipse.papyrus.marte.vsl.validation.VSLJavaValidator.getExpectedType() ;
+ }
+ try {
+ Object[] args = {} ;
+ return (Type) m.invoke(rule.eContainer(),args) ;
+ }
+ catch (Exception e){
+ return null ;
+ }
+ }
+
+
+ /**
+ * @param rule
+ * @return
+ */
+ public static Namespace getModel(EObject rule) {
+ java.lang.reflect.Method m ;
+ try {
+ Class<?>[] params = {} ;
+ m = rule.eContainer().getClass().getMethod("getModel",params);
+ }
+ catch (Exception e) {
+ return org.eclipse.papyrus.marte.vsl.validation.VSLJavaValidator.getModel() ;
+ }
+ try {
+ Object[] args = {} ;
+ return (Namespace) m.invoke(rule.eContainer(),args) ;
+ }
+ catch (Exception e){
+ return null ;
+ }
+ }
+
+ /**
+ * @param rule
+ * @return
+ */
+ public static Element getContextElement(EObject rule) {
+ java.lang.reflect.Method m ;
+ try {
+ Class<?>[] params = {} ;
+ m = rule.eContainer().getClass().getDeclaredMethod("getContextElement",params);
+ }
+ catch (Exception e) {
+ return org.eclipse.papyrus.marte.vsl.validation.VSLJavaValidator.getContextElement() ;
+ }
+ try {
+ Object[] args = {} ;
+ return (Element) m.invoke(rule.eContainer(),args) ;
+ }
+ catch (Exception e){
+ e.printStackTrace() ;
+ return null ;
+ }
+ }
+
+ /**
+ * @param rule
+ * @param filter
+ * @return
+ */
+ public static EObject getFilteredParentRule(EObject rule, Object metaclassFilter) {
+ MetaclassFilter filter = null ;
+ if (metaclassFilter instanceof EClass)
+ filter = eInstance.new MetaclassFilter((EClass)metaclassFilter) ;
+ else if (metaclassFilter instanceof EClass[])
+ filter = eInstance.new MetaclassFilter((EClass[])metaclassFilter) ;
+
+ if (filter == null)
+ return null ;
+
+ if (rule != null) {
+ EObject container = rule.eContainer() ;
+ while (container != null && !(filter.isInstance(container))) {
+ container = container.eContainer() ;
+ }
+ if (container != null)
+ return container ;
+ }
+ return null ;
+ }
+
+ public class MetaclassFilter {
+ private EClass[] filters ;
+
+ public MetaclassFilter(EClass[] filters) {
+ this.filters = filters ;
+ }
+
+ public MetaclassFilter(EClass filter) {
+ this(new EClass[]{filter} ) ;
+ }
+
+ public boolean isInstance(EObject eObject) {
+ for (EClass eClass : filters) {
+ if (eClass.isInstance(eObject))
+ return true ;
+ }
+ return false ;
+ }
+ }
+
+ /**
+ * @param visited
+ * @return
+ */
+ public static boolean isAChoiceType(Classifier visited) {
+ if (visited.getAppliedStereotype("MARTE::MARTE_Annexes::VSL::DataTypes::ChoiceType") != null) {
+ return true ;
+ }
+ return false;
+ }
+
+
+ /**
+ * @param visited
+ * @return
+ */
+ public static List<NamedElement> getChoiceAttribs(Classifier visited) {
+ List<NamedElement> choiceAttribs = new ArrayList<NamedElement>() ;
+ Stereotype tupleStereotype = visited.
+ getAppliedStereotype("MARTE::MARTE_Annexes::VSL::DataTypes::ChoiceType") ;
+ if (tupleStereotype != null) {
+ EObject stereotypeApplication = visited.getStereotypeApplication(tupleStereotype) ;
+ EStructuralFeature choiceAttrib = stereotypeApplication.eClass().getEStructuralFeature("choiceAttrib") ;
+ List<Property> attribCollection = (List<Property>) stereotypeApplication.eGet(choiceAttrib) ;
+ if (attribCollection.isEmpty()) { // all the attributes of "visited" represent choice attributes
+ choiceAttribs.addAll(visited.getAttributes()) ;
+ }
+ }
+ return choiceAttribs;
+ }
+
+
+ public static boolean isATupleType(Classifier visited) {
+ if (visited.getAppliedStereotype("MARTE::MARTE_Annexes::VSL::DataTypes::TupleType") != null) {
+ return true ;
+ }
+ else if (visited.getAppliedStereotype("MARTE::MARTE_Foundations::NFPs::NfpType") != null) {
+ return true ;
+ }
+ return false;
+ }
+
+
+ public static List<NamedElement> getTupleAttribs(Classifier visited) {
+ List<NamedElement> tupleAttribs = new ArrayList<NamedElement>() ;
+ Stereotype tupleStereotype = visited.
+ getAppliedStereotype("MARTE::MARTE_Annexes::VSL::DataTypes::TupleType") ;
+ if (tupleStereotype != null) {
+ EObject stereotypeApplication = visited.getStereotypeApplication(tupleStereotype) ;
+ EStructuralFeature tupleAttribute = stereotypeApplication.eClass().getEStructuralFeature("tupleAttrib") ;
+ List<Property> attribCollection = (List<Property>) stereotypeApplication.eGet(tupleAttribute) ;
+ if (attribCollection.isEmpty()) { // no attributes are specified, add all
+ tupleAttribs.addAll(visited.getAttributes()) ;
+ }
+ else {
+ tupleAttribs.addAll(attribCollection) ;
+ }
+ }
+ else { // see if NfpType is applied
+ Stereotype nfpStereotype = visited.getAppliedStereotype("MARTE::MARTE_Foundations::NFPs::NfpType") ;
+ if (nfpStereotype != null) {
+ tupleAttribs.addAll(visited.getAttributes()) ;
+ }
+ }
+ for (Classifier general : visited.getGenerals()) {
+ if (isATupleType(general))
+ tupleAttribs.addAll(getTupleAttribs(general)) ;
+ }
+ return tupleAttribs;
+ }
+
+ public static boolean isACollectionType(Classifier visited) {
+ if (visited.getAppliedStereotype("MARTE::MARTE_Annexes::VSL::DataTypes::CollectionType") != null) {
+ return true ;
+ }
+ return false;
+ }
+
+ public static NamedElement getCollectionAttrib(Classifier visited) {
+ NamedElement collectionAttrib = null ;
+ Stereotype collectionStereotype = visited.
+ getAppliedStereotype("MARTE::MARTE_Annexes::VSL::DataTypes::CollectionType") ;
+ if (collectionStereotype != null) {
+ EObject stereotypeApplication = visited.getStereotypeApplication(collectionStereotype) ;
+ EStructuralFeature collectionAttribFeature = stereotypeApplication.eClass().getEStructuralFeature("collectionAttrib") ;
+ collectionAttrib = (Property) stereotypeApplication.eGet(collectionAttribFeature) ;
+ }
+ return collectionAttrib;
+ }
+
+ public static boolean isAnIntervalType(Classifier visited) {
+ if (visited.getAppliedStereotype("MARTE::MARTE_Annexes::VSL::DataTypes::IntervalType") != null) {
+ return true ;
+ }
+ return false;
+ }
+
+ public static NamedElement getIntervalAttrib(Classifier visited) {
+ NamedElement intervalAttrib = null ;
+ Stereotype intervalStereotype = visited.
+ getAppliedStereotype("MARTE::MARTE_Annexes::VSL::DataTypes::IntervalType") ;
+ if (intervalStereotype != null) {
+ EObject stereotypeApplication = visited.getStereotypeApplication(intervalStereotype) ;
+ EStructuralFeature intervalAttribFeature = stereotypeApplication.eClass().getEStructuralFeature("intervalAttrib") ;
+ intervalAttrib = (Property) stereotypeApplication.eGet(intervalAttribFeature) ;
+ }
+ return intervalAttrib;
+ }
+}
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src/org/eclipse/papyrus/marte/vsl/extensions/VSLSerializationUtil.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src/org/eclipse/papyrus/marte/vsl/extensions/VSLSerializationUtil.java
new file mode 100644
index 00000000000..2a01b139246
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src/org/eclipse/papyrus/marte/vsl/extensions/VSLSerializationUtil.java
@@ -0,0 +1,380 @@
+/*****************************************************************************
+ * Copyright (c) 2010 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.marte.vsl.extensions;
+
+import org.eclipse.papyrus.marte.vsl.vSL.AdditiveExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.AndOrXorExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.CollectionOrTuple;
+import org.eclipse.papyrus.marte.vsl.vSL.ConditionalExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.DataTypeName;
+import org.eclipse.papyrus.marte.vsl.vSL.DurationObsExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.DurationObsName;
+import org.eclipse.papyrus.marte.vsl.vSL.EqualityExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.Expression;
+import org.eclipse.papyrus.marte.vsl.vSL.InstantObsExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.InstantObsName;
+import org.eclipse.papyrus.marte.vsl.vSL.Interval;
+import org.eclipse.papyrus.marte.vsl.vSL.JitterExp;
+import org.eclipse.papyrus.marte.vsl.vSL.ListOfValueNamePairs;
+import org.eclipse.papyrus.marte.vsl.vSL.ListOfValues;
+import org.eclipse.papyrus.marte.vsl.vSL.Literal;
+import org.eclipse.papyrus.marte.vsl.vSL.MultiplicativeExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.NameOrChoiceOrBehaviorCall;
+import org.eclipse.papyrus.marte.vsl.vSL.OperationCallExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.PrimaryExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.PropertyCallExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.QualifiedName;
+import org.eclipse.papyrus.marte.vsl.vSL.RelationalExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.StringLiteralRule;
+import org.eclipse.papyrus.marte.vsl.vSL.SuffixExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.TimeExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.Tuple;
+import org.eclipse.papyrus.marte.vsl.vSL.UnaryExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.ValueNamePair;
+import org.eclipse.papyrus.marte.vsl.vSL.ValueSpecification;
+import org.eclipse.papyrus.marte.vsl.vSL.VariableDeclaration;
+
+public class VSLSerializationUtil {
+
+ public static String printExpression(Expression exp) {
+ return printAndOrXorExpression(exp.getExp()) ;
+ }
+
+ public static String printAndOrXorExpression(AndOrXorExpression exp) {
+ String stringRep = "" + printEqualityExpression(exp.getExp().get(0)) ;
+ for (int i = 1 ; i < exp.getExp().size() ; i++) {
+ stringRep += " " + exp.getOp().get(i-1) + " " + printEqualityExpression(exp.getExp().get(i)) ;
+ }
+ return stringRep ;
+ }
+
+ public static String printEqualityExpression(EqualityExpression exp) {
+ String stringRep = "" + printRelationalExpression(exp.getExp().get(0)) ;
+ for (int i = 1 ; i < exp.getExp().size() ; i++) {
+ stringRep += " " + exp.getOp().get(i-1) + " " + printRelationalExpression(exp.getExp().get(i)) ;
+ }
+ return stringRep ;
+ }
+
+ public static String printRelationalExpression(RelationalExpression exp) {
+ String stringRep = "" + printConditionalExpression(exp.getExp().get(0)) ;
+ for (int i = 1 ; i < exp.getExp().size() ; i++) {
+ stringRep += " " + exp.getOp().get(i-1) + " " + printConditionalExpression(exp.getExp().get(i)) ;
+ }
+ return stringRep ;
+ }
+
+ public static String printConditionalExpression(ConditionalExpression exp) {
+ String stringRep = "" + printAdditiveExpression(exp.getExp().get(0)) ;
+ if (exp.getExp().size() == 3) {
+ stringRep += " ? "
+ + printAdditiveExpression(exp.getExp().get(1))
+ + " : "
+ + printAdditiveExpression(exp.getExp().get(2)) ;
+ }
+ return stringRep ;
+ }
+
+ public static String printAdditiveExpression(AdditiveExpression exp) {
+ String stringRep = "" + printMultiplicativeExpression(exp.getExp().get(0)) ;
+ for (int i = 1 ; i < exp.getExp().size() ; i++) {
+ stringRep += " " + exp.getOp().get(i-1) + " " + printMultiplicativeExpression(exp.getExp().get(i)) ;
+ }
+ return stringRep ;
+ }
+
+ public static String printMultiplicativeExpression(MultiplicativeExpression exp) {
+ String stringRep = "" + printUnaryExpression(exp.getExp().get(0)) ;
+ for (int i = 1 ; i < exp.getExp().size() ; i++) {
+ stringRep += " " + exp.getOp().get(i-1) + " " + printUnaryExpression(exp.getExp().get(i)) ;
+ }
+ return stringRep ;
+ }
+
+ public static String printUnaryExpression(UnaryExpression exp) {
+ String stringRep = "" ;
+ if (exp.getUnary() != null) {
+ stringRep += exp.getOp() + " " + printUnaryExpression(exp.getUnary()) ;
+ }
+ else {
+ stringRep += printPrimaryExpression(exp.getExp()) ;
+ }
+ return stringRep ;
+ }
+
+ public static String printPrimaryExpression(PrimaryExpression exp) {
+ String stringRep = "" + printValueSpecification(exp.getPrefix());
+ if (exp.getSuffix() != null) {
+ stringRep += "." + printSuffixExpression(exp.getSuffix()) ;
+ }
+ return stringRep ;
+ }
+
+ public static String printSuffixExpression(SuffixExpression suffix) {
+ if (suffix instanceof PropertyCallExpression)
+ return printPropertyCallExpression((PropertyCallExpression)suffix) ;
+ // suffix instanceof OperationCallExpression
+ return printOperationCallExpression((OperationCallExpression)suffix) ;
+ }
+
+ public static String printOperationCallExpression(OperationCallExpression suffix) {
+ String stringRep = "" + suffix.getOperation().getName() + "(";
+ if (suffix.getArguments() != null)
+ stringRep+=printListOfValues(suffix.getArguments()) ;
+ stringRep += ")" ;
+ if (suffix.getSuffix() != null)
+ stringRep += "." + printSuffixExpression(suffix.getSuffix()) ;
+ return stringRep;
+ }
+
+ public static String printPropertyCallExpression(PropertyCallExpression suffix) {
+ String stringRep = "" + suffix.getProperty().getName() ;
+ if (suffix.getSuffix() != null)
+ stringRep += "." + printSuffixExpression(suffix.getSuffix()) ;
+ return stringRep;
+ }
+
+ public static String printValueSpecification(ValueSpecification exp) {
+ if (exp instanceof StringLiteralRule)
+ return "\"" + ((Literal)exp).getValue() + "\"" ;
+ else if (exp instanceof Literal)
+ return ((Literal)exp).getValue() ;
+ else if (exp instanceof NameOrChoiceOrBehaviorCall) {
+ return printNameOrChoiceOrBehaviorCall((NameOrChoiceOrBehaviorCall)exp) ;
+ }
+ else if (exp instanceof Interval) {
+ return printInterval((Interval)exp) ;
+ }
+ else if (exp instanceof CollectionOrTuple) {
+ return printCollectionOrTuple((CollectionOrTuple)exp) ;
+ }
+ else if (exp instanceof Tuple) {
+ return printTuple((Tuple)exp) ;
+ }
+ else if (exp instanceof TimeExpression) {
+ return printTimeExpression((TimeExpression)exp) ;
+ }
+ else if (exp instanceof VariableDeclaration) {
+ return printVariableDeclaration((VariableDeclaration)exp) ;
+ }
+ else if (exp instanceof Expression) {
+ return "(" + printExpression((Expression)exp) + ")" ;
+ }
+ return "" ; // should not occur
+ }
+
+ public static String printVariableDeclaration(VariableDeclaration exp) {
+ String stringRep = "" ;
+ if (exp.getVariableDeclaration() != null && !exp.getVariableDeclaration().equals("")) {
+ stringRep += exp.getVariableDeclaration() + " " ;
+ }
+ stringRep += "$" + exp.getName() ;
+ if (exp.getType() != null)
+ stringRep += " : " + printDataTypeName(exp.getType()) ;
+ if (exp.getInitValue() != null)
+ stringRep += " = (" + printExpression(exp.getInitValue()) + ")" ;
+ return stringRep ;
+ }
+
+ public static String printDataTypeName(DataTypeName type) {
+ String stringRep = "" ;
+ if (type.getPath() != null)
+ stringRep += printQualifiedName(type.getPath()) ;
+ stringRep += type.getType().getName() ;
+ return stringRep;
+ }
+
+ public static String printTimeExpression(TimeExpression exp) {
+ if (exp instanceof InstantObsExpression)
+ return printInstantObsExpression((InstantObsExpression)exp) ;
+ if (exp instanceof DurationObsExpression)
+ return printDurationObsExpression((DurationObsExpression)exp) ;
+ // exp instanceof JitterExp
+ return printJitterExp((JitterExp)exp) ;
+ }
+
+ public static String printJitterExp(JitterExp exp) {
+ String stringRep = "jitter(" ;
+ stringRep += printInstantObsExpression(exp.getFirstInstant()) ;
+ if (exp.getSecondInstant() != null)
+ stringRep += " - " + printInstantObsExpression(exp.getSecondInstant()) ;
+ stringRep += ")" ;
+ return stringRep ;
+ }
+
+ public static String printInstantObsExpression(InstantObsExpression exp) {
+ String stringRep = "@" + printInstantObsName(exp.getId());
+ if (exp.getIndex() != null)
+ stringRep += "(" + printExpression(exp.getIndex()) + ")" ;
+ if (exp.getCondition() != null)
+ stringRep += " when (" + printExpression(exp.getCondition()) + ")" ;
+ return stringRep ;
+ }
+
+ public static String printInstantObsName(InstantObsName id) {
+ String stringRep = "" ;
+ if (id.getPath() != null)
+ stringRep += printQualifiedName(id.getPath()) ;
+ stringRep+=id.getInstantId().getName() ;
+ return stringRep;
+ }
+
+ public static String printDurationObsExpression(DurationObsExpression exp) {
+ String stringRep = "&" + printDurationObsName(exp.getId());
+ if (exp.getIndex() != null)
+ stringRep += "(" + printExpression(exp.getIndex()) + ")" ;
+ if (exp.getCondition() != null)
+ stringRep += " when (" + printExpression(exp.getCondition()) + ")" ;
+ return stringRep ;
+ }
+
+ public static String printDurationObsName(DurationObsName id) {
+ String stringRep = "" ;
+ if (id.getPath() != null)
+ stringRep += printQualifiedName(id.getPath()) ;
+ stringRep+=id.getDurationId().getName() ;
+ return stringRep;
+ }
+
+ public static String printTuple(Tuple exp) {
+ String stringRep = "{" ;
+ stringRep += printListOfValueNamePairs(exp.getListOfValueNamePairs()) ;
+ stringRep += "}" ;
+ return stringRep ;
+ }
+
+
+
+ public static String printListOfValueNamePairs(ListOfValueNamePairs listOfValueNamePairs) {
+ String stringRep = "" ;
+ boolean first = true ;
+ for (ValueNamePair exp : listOfValueNamePairs.getValueNamePairs()) {
+ if (first) {
+ first = false ;
+ }
+ else {
+ stringRep += ", " ;
+ }
+ stringRep+= printValueNamePair(exp) ;
+ }
+ return stringRep;
+ }
+
+
+
+ public static String printValueNamePair(ValueNamePair exp) {
+ String stringRep = "" ;
+ stringRep += exp.getProperty().getName()
+ + " = "
+ + printExpression(exp.getValue()) ;
+ return stringRep ;
+ }
+
+ public static String printCollectionOrTuple(CollectionOrTuple exp) {
+ String stringRep = "{" ;
+ stringRep += printListOfValues(exp.getListOfValues()) ;
+ stringRep += "}" ;
+ return stringRep;
+ }
+
+ public static String printInterval(Interval exp) {
+ String stringRep = "" ;
+ stringRep+= (exp.getIsLowerIncluded()!= null && ! exp.getIsLowerIncluded().equals("")) ? "[" : "]" ;
+ stringRep+= printExpression(exp.getLower()) ;
+ stringRep+= " .. " ;
+ stringRep+= printExpression(exp.getUpper()) ;
+ stringRep+= (exp.getIsUpperIncluded()!= null && ! exp.getIsUpperIncluded().equals("")) ? "]" : "[" ;
+ return stringRep ;
+ }
+
+ public static String printNameOrChoiceOrBehaviorCall(NameOrChoiceOrBehaviorCall exp) {
+ String stringRep = "" ;
+ if (exp.getPath() != null)
+ stringRep += printQualifiedName(exp.getPath()) ;
+ stringRep+=exp.getId().getName() ;
+ if (exp.getArguments() != null) {
+ stringRep+= "(" + printListOfValues(exp.getArguments()) + ")" ;
+ }
+ return stringRep;
+ }
+
+ public static String printListOfValues(ListOfValues arguments) {
+ String stringRep = "" ;
+ boolean first = true ;
+ for (Expression exp : arguments.getValues()) {
+ if (first) {
+ first = false ;
+ }
+ else {
+ stringRep += ", " ;
+ }
+ stringRep+= printExpression(exp) ;
+ }
+ return stringRep;
+ }
+
+ public static String printQualifiedName(QualifiedName exp) {
+ String stringRep = exp.getPath().getName() + "::" ;
+ if (exp.getRemaining()!=null)
+ stringRep += printQualifiedName(exp.getRemaining()) ;
+ return stringRep;
+ }
+
+ public static NameOrChoiceOrBehaviorCall extractNameReference(Expression exp) {
+ return isANameOrBehaviorCall(exp.getExp()) ;
+ }
+
+ private static NameOrChoiceOrBehaviorCall isANameOrBehaviorCall(AndOrXorExpression exp) {
+ return isANameOrBehaviorCall(exp.getExp().get(0)) ;
+ }
+
+ private static NameOrChoiceOrBehaviorCall isANameOrBehaviorCall(EqualityExpression exp) {
+ return isANameOrBehaviorCall(exp.getExp().get(0)) ;
+ }
+
+ private static NameOrChoiceOrBehaviorCall isANameOrBehaviorCall(RelationalExpression exp) {
+ return isANameOrBehaviorCall(exp.getExp().get(0)) ;
+ }
+
+ private static NameOrChoiceOrBehaviorCall isANameOrBehaviorCall(ConditionalExpression exp) {
+ if (exp.getExp().size() == 1)
+ return isANameOrBehaviorCall(exp.getExp().get(0)) ;
+ if (exp.getExp().size() == 3) {
+ NameOrChoiceOrBehaviorCall coll = isANameOrBehaviorCall(exp.getExp().get(1)) ;
+ return coll != null ? isANameOrBehaviorCall(exp.getExp().get(2)) : null ;
+ }
+ return null ;
+ }
+
+ private static NameOrChoiceOrBehaviorCall isANameOrBehaviorCall(AdditiveExpression exp) {
+ return isANameOrBehaviorCall(exp.getExp().get(0)) ;
+ }
+
+ private static NameOrChoiceOrBehaviorCall isANameOrBehaviorCall(MultiplicativeExpression exp) {
+ return exp.getExp().isEmpty() ? null : isANameOrBehaviorCall(exp.getExp().get(0)) ;
+ }
+
+ private static NameOrChoiceOrBehaviorCall isANameOrBehaviorCall(UnaryExpression exp) {
+ return isANameOrBehaviorCall(exp.getExp()) ;
+ }
+
+ private static NameOrChoiceOrBehaviorCall isANameOrBehaviorCall(PrimaryExpression exp) {
+ return exp.getSuffix() == null ? isANameOrBehaviorCall(exp.getPrefix()) : null ;
+ }
+
+ private static NameOrChoiceOrBehaviorCall isANameOrBehaviorCall(ValueSpecification exp) {
+ return exp instanceof NameOrChoiceOrBehaviorCall ? (NameOrChoiceOrBehaviorCall) exp : null ;
+ }
+}
+
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src/org/eclipse/papyrus/marte/vsl/extensions/VSLTypeInferenceUtil.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src/org/eclipse/papyrus/marte/vsl/extensions/VSLTypeInferenceUtil.java
new file mode 100644
index 00000000000..b24b4598011
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src/org/eclipse/papyrus/marte/vsl/extensions/VSLTypeInferenceUtil.java
@@ -0,0 +1,718 @@
+/*****************************************************************************
+ * Copyright (c) 2010 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.marte.vsl.extensions ;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.uml2.uml.Behavior;
+import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.DataType;
+import org.eclipse.uml2.uml.Enumeration;
+import org.eclipse.uml2.uml.EnumerationLiteral;
+import org.eclipse.uml2.uml.Parameter;
+import org.eclipse.uml2.uml.ParameterDirectionKind;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.Stereotype;
+import org.eclipse.uml2.uml.Type;
+
+import org.eclipse.papyrus.marte.vsl.vSL.AdditiveExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.AndOrXorExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.BooleanLiteralRule;
+//import org.eclipse.papyrus.marte.vsl.vSL.Choice;
+import org.eclipse.papyrus.marte.vsl.vSL.CollectionOrTuple;
+import org.eclipse.papyrus.marte.vsl.vSL.ConditionalExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.DateTimeLiteralRule;
+import org.eclipse.papyrus.marte.vsl.vSL.DefaultLiteralRule;
+import org.eclipse.papyrus.marte.vsl.vSL.DurationObsExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.EqualityExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.Expression;
+import org.eclipse.papyrus.marte.vsl.vSL.InstantObsExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.IntegerLiteralRule;
+import org.eclipse.papyrus.marte.vsl.vSL.Interval;
+import org.eclipse.papyrus.marte.vsl.vSL.JitterExp;
+import org.eclipse.papyrus.marte.vsl.vSL.Literal;
+import org.eclipse.papyrus.marte.vsl.vSL.MultiplicativeExpression;
+//import org.eclipse.papyrus.marte.vsl.vSL.Name;
+import org.eclipse.papyrus.marte.vsl.vSL.NameOrChoiceOrBehaviorCall;
+import org.eclipse.papyrus.marte.vsl.vSL.NullLiteralRule;
+import org.eclipse.papyrus.marte.vsl.vSL.OperationCallExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.PrimaryExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.PropertyCallExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.RealLiteralRule;
+import org.eclipse.papyrus.marte.vsl.vSL.RelationalExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.StringLiteralRule;
+import org.eclipse.papyrus.marte.vsl.vSL.SuffixExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.TimeExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.Tuple;
+import org.eclipse.papyrus.marte.vsl.vSL.UnaryExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.UnlimitedLiteralRule;
+import org.eclipse.papyrus.marte.vsl.vSL.ValueNamePair;
+import org.eclipse.papyrus.marte.vsl.vSL.ValueSpecification;
+import org.eclipse.papyrus.marte.vsl.vSL.VariableDeclaration;
+//import org.eclipse.papyrus.marte.vsl.validation.VSLJavaValidator.ExpectedKind;
+import org.eclipse.papyrus.marte.vsl.validation.VSLJavaValidator;
+
+
+
+/**
+ * @author Arnaud Cuccuru, CEA LIST, LISE
+ *
+ */
+public class VSLTypeInferenceUtil {
+
+ //private Namespace model ;
+ //private Element contextElement ;
+ private Type expectedType ;
+ //private ExpectedKind expectedKind ;
+ private VSLTypeInferenceUtil self ;
+
+
+
+ public VSLTypeInferenceUtil(Type expectedType) {
+ this.expectedType = expectedType ;
+// if (this.expectedType != null) { // TODO : handle the case where it is null
+// if(expectedType.getAppliedStereotype("MARTE::MARTE_Annexes::VSL::DataTypes::TupleType")!=null)
+// expectedKind = ExpectedKind._TUPLE ;
+// else if (expectedType.getAppliedStereotype("MARTE::MARTE_Annexes::VSL::DataTypes::CollectionType")!=null)
+// expectedKind = ExpectedKind._COLLECTION ;
+// else if (expectedType.getAppliedStereotype("MARTE::MARTE_Annexes::VSL::DataTypes::IntervalType")!=null)
+// expectedKind = ExpectedKind._INTERVAL ;
+// else if (expectedType.getAppliedStereotype("MARTE::MARTE_Annexes::VSL::DataTypes::ChoiceType")!=null)
+// expectedKind = ExpectedKind._CHOICE ;
+// else if (expectedType instanceof Enumeration)
+// expectedKind = ExpectedKind._ENUM ;
+// else
+// expectedKind = ExpectedKind._DATATYPE ;
+// }
+ self = this ;
+ }
+
+// public VSLTypeInferenceUtil(Type expectedType) {
+// this(expectedType, null) ;
+// }
+
+ /**
+ * @param exp
+ * @return
+ */
+ public Type typeOfExpression (Expression exp) {
+ //Type oldGloballyExpectedType = VSLJavaValidator.expectedType ;
+ //ExpectedKind oldGloballyExpectedKind = VSLJavaValidator.expectedKind ;
+ //VSLJavaValidator.expectedKind = expectedKind ;
+ //VSLJavaValidator.expectedType = expectedType ;
+ Type inferedType = typeOfAndOrXorExpression(exp.getExp()) ;
+ //VSLJavaValidator.expectedType = oldGloballyExpectedType ;
+ //VSLJavaValidator.expectedKind = oldGloballyExpectedKind ;
+ return inferedType ;
+ }
+
+ /**
+ * @param exp
+ * @return
+ */
+ private Type typeOfAndOrXorExpression(AndOrXorExpression exp) {
+ if (exp.getExp().size() > 1 ) {
+ Type firstOperandType = typeOfEqualityExpression(exp.getExp().get(0)) ;
+ Type secondOperandType ;
+ for (int i=1 ; i<exp.getExp().size() ; i++) {
+ secondOperandType = typeOfEqualityExpression(exp.getExp().get(i)) ;
+ firstOperandType = VSLJavaValidator.opSignatures.get(
+ exp.getOp().get(i-1) + "(" +
+ (firstOperandType != null ? firstOperandType.getName() : "null") + "," +
+ (secondOperandType != null ? secondOperandType.getName() : "null") + ")") ;
+ }
+ return firstOperandType ;
+ }
+ return typeOfEqualityExpression (exp.getExp().get(0)) ;
+ }
+
+ /**
+ * @param exp
+ * @return
+ */
+ private Type typeOfEqualityExpression(EqualityExpression exp) {
+ if (exp.getExp().size() > 1 ) {
+ Type firstOperandType = typeOfRelationalExpression(exp.getExp().get(0)) ;
+ Type secondOperandType ;
+ for (int i=1 ; i<exp.getExp().size() ; i++) {
+ secondOperandType = typeOfRelationalExpression(exp.getExp().get(i)) ;
+ firstOperandType = VSLJavaValidator.opSignatures.get(
+ exp.getOp().get(i-1) + "(" +
+ (firstOperandType != null ? firstOperandType.getName() : "null") + "," +
+ (secondOperandType != null ? secondOperandType.getName() : "null") + ")") ;
+ }
+ return firstOperandType ;
+ }
+ return typeOfRelationalExpression (exp.getExp().get(0)) ;
+ }
+
+ /**
+ * @param exp
+ * @return
+ */
+ private Type typeOfRelationalExpression (RelationalExpression exp) {
+ if (exp.getExp().size() > 1 ) {
+ Type firstOperandType = typeOfConditionalExpression(exp.getExp().get(0)) ;
+ Type secondOperandType ;
+ for (int i=1 ; i<exp.getExp().size() ; i++) {
+ secondOperandType = typeOfConditionalExpression(exp.getExp().get(i)) ;
+ firstOperandType = VSLJavaValidator.opSignatures.get(
+ exp.getOp().get(i-1) + "(" +
+ (firstOperandType != null ? firstOperandType.getName() : "null") + "," +
+ (secondOperandType != null ? secondOperandType.getName() : "null") + ")") ;
+ }
+ return firstOperandType ;
+ }
+ return typeOfConditionalExpression (exp.getExp().get(0)) ;
+ }
+
+ /**
+ * @param exp
+ * @return
+ */
+ private Type typeOfConditionalExpression (ConditionalExpression exp) {
+ Classifier thenOperandType ;
+ Classifier elseOperandType ;
+ if (exp.getExp().size()==3) {
+ thenOperandType = (exp.getExp().get(1) != null) ? (Classifier)typeOfAdditiveExpression(exp.getExp().get(1)) : null;
+ elseOperandType = (exp.getExp().get(2) != null) ? (Classifier)typeOfAdditiveExpression(exp.getExp().get(2)) : null;
+ if (thenOperandType == elseOperandType)
+ return thenOperandType ;
+ else if (thenOperandType != null && areTypesCompatible(thenOperandType, elseOperandType) )
+ return elseOperandType ;
+ else if (elseOperandType != null && areTypesCompatible(elseOperandType, thenOperandType) )
+ return thenOperandType ;
+ else
+ return null ;
+ }
+ else if (exp.getExp().size() == 2)
+ return null ;
+ else
+ return typeOfAdditiveExpression (exp.getExp().get(0)) ;
+ }
+
+ /**
+ * @param exp
+ * @return
+ */
+ public Type typeOfAdditiveExpression (AdditiveExpression exp) {
+ if (exp.getExp().size() > 1 ) {
+ Type firstOperandType = typeOfMultiplicativeExpression(exp.getExp().get(0)) ;
+ Type secondOperandType ;
+ for (int i=1 ; i<exp.getExp().size() ; i++) {
+ secondOperandType = typeOfMultiplicativeExpression(exp.getExp().get(i)) ;
+ firstOperandType = VSLJavaValidator.opSignatures.get(
+ exp.getOp().get(i-1) + "(" +
+ (firstOperandType != null ? firstOperandType.getName() : "null") + "," +
+ (secondOperandType != null ? secondOperandType.getName() : "null") + ")") ;
+ }
+ return firstOperandType ;
+ }
+ return typeOfMultiplicativeExpression (exp.getExp().get(0)) ;
+ }
+
+ /**
+ * @param exp
+ * @return
+ */
+ private Type typeOfMultiplicativeExpression (MultiplicativeExpression exp) {
+ if (exp.getExp().size() > 1 ) {
+ Type firstOperandType = typeOfUnaryExpression(exp.getExp().get(0)) ;
+ Type secondOperandType ;
+ for (int i=1 ; i<exp.getExp().size() ; i++) {
+ secondOperandType = typeOfUnaryExpression(exp.getExp().get(i)) ;
+ firstOperandType = VSLJavaValidator.opSignatures.get(
+ exp.getOp().get(i-1) + "(" +
+ (firstOperandType != null ? firstOperandType.getName() : "null") + "," +
+ (secondOperandType != null ? secondOperandType.getName() : "null") + ")") ;
+ }
+ return firstOperandType ;
+ }
+ return exp.getExp().size() > 0 ? typeOfUnaryExpression (exp.getExp().get(0)) : null;
+ }
+
+ /**
+ * @param exp
+ * @return
+ */
+ private Type typeOfUnaryExpression (UnaryExpression exp) {
+ if (exp.getOp()!=null) {
+ Type typeOfUnary = typeOfUnaryExpression(exp.getUnary()) ;
+ return VSLJavaValidator.opSignatures.get(exp.getOp()+ "("+
+ (typeOfUnary != null ? typeOfUnary.getName() : "null")
+ +")") ;
+ }
+ else if (exp.getExp() != null)
+ return typeOfPrimaryExpression (exp.getExp());
+ else
+ return null ;
+ }
+
+ /**
+ * @param exp
+ * @return
+ */
+ private Type typeOfPrimaryExpression(PrimaryExpression exp) {
+ if (exp.getSuffix() != null) { // && exp.getSuffix() != suffixExpressionToIgnore) {
+ return typeOfSuffixPression(exp.getSuffix()) ;
+ }
+ return typeOfValueSpecification (exp.getPrefix());
+ }
+
+ private Type typeOfSuffixPression(SuffixExpression exp) {
+ if (exp instanceof OperationCallExpression) {
+ return typeOfOperationCallExpression((OperationCallExpression)exp) ;
+ }
+ else { // PropertyCallExpression
+ return typeOfPropertyCallExpression((PropertyCallExpression)exp) ;
+ }
+ }
+
+ /**
+ * @param exp
+ * @return
+ */
+ private Type typeOfOperationCallExpression(OperationCallExpression exp) {
+ if (exp.getSuffix() != null) // && exp.getSuffix() != suffixExpressionToIgnore)
+ return typeOfSuffixPression(exp.getSuffix()) ;
+ return exp.getOperation() != null ? exp.getOperation().getType() : null ;
+ }
+
+ /**
+ * @param exp
+ * @return
+ */
+ private Type typeOfPropertyCallExpression(PropertyCallExpression exp) {
+ if (exp.getSuffix() != null) // && exp.getSuffix() != suffixExpressionToIgnore)
+ return typeOfSuffixPression(exp.getSuffix()) ;
+ return exp.getProperty() != null ? exp.getProperty().getType() : null ;
+ }
+
+
+ /**
+ * @param value
+ * @return
+ */
+ public Type typeOfValueSpecification (ValueSpecification value) {
+
+ if (value instanceof Literal)
+ return typeOfLiteral((Literal)value) ;
+ if (value instanceof NameOrChoiceOrBehaviorCall)
+ return typeOfNameOrChoiceOrBehaviorCall((NameOrChoiceOrBehaviorCall)value) ;
+ if (value instanceof TimeExpression)
+ return typeOfTimeExpression((TimeExpression)value) ;
+ if (value instanceof VariableDeclaration)
+ return typeOfVariableDeclaration((VariableDeclaration)value) ;
+ if (value instanceof Expression)
+ return typeOfExpression((Expression)value) ;
+ //if (value instanceof Choice) {
+ // return typeOfChoice ((Choice)value) ;
+ //}
+ if (value instanceof Interval) {
+ return typeOfInterval((Interval)value) ;
+ }
+ if (value instanceof Tuple) {
+ return typeOfTuple((Tuple)value) ;
+ }
+ if (value instanceof CollectionOrTuple) {
+ return typeOfCollectionOrTuple ((CollectionOrTuple)value);
+ }
+
+ return null ;
+ }
+
+
+ /**
+ * @param literal
+ * @return
+ */
+ private Type typeOfLiteral (Literal literal) {
+ if (literal instanceof IntegerLiteralRule) {
+ return VSLJavaValidator._integer ;
+ }
+ if (literal instanceof UnlimitedLiteralRule) {
+ return VSLJavaValidator._unlimitedNatural ;
+ }
+ if (literal instanceof RealLiteralRule) {
+ return VSLJavaValidator._real ;
+ }
+ if (literal instanceof DateTimeLiteralRule) {
+ return VSLJavaValidator._datetime ;
+ }
+ if (literal instanceof BooleanLiteralRule) {
+ return VSLJavaValidator._boolean ;
+ }
+ if (literal instanceof NullLiteralRule) {
+ Type locallyExpected = VSLContextUtil.getExpectedType(literal) ;
+ //return expectedType ;
+ return locallyExpected ;
+ }
+ if (literal instanceof DefaultLiteralRule) {
+ Type locallyExpected = VSLContextUtil.getExpectedType(literal) ;
+ //return expectedType ;
+ return locallyExpected ;
+ }
+ if (literal instanceof StringLiteralRule) {
+ return VSLJavaValidator._string ;
+ }
+ return null ;
+ }
+
+
+ /**
+ * @param name
+ * @return
+ */
+ private Type typeOfNameOrChoiceOrBehaviorCall (NameOrChoiceOrBehaviorCall name) {
+ if (name.getId() != null) {
+ if (name.getId() instanceof EnumerationLiteral) {
+ return ((EnumerationLiteral) name.getId()).getEnumeration() ;
+ }
+ if (name.getId() instanceof Property) {
+ if (name.getId().getNamespace().getAppliedStereotype("MARTE::MARTE_Annexes::VSL::DataTypes::ChoiceType") != null)
+ return (Type)name.getId().getNamespace() ;
+ return ((Property)name.getId()).getType() ;
+ }
+ if (name.getId() instanceof Behavior)
+ for (Parameter p : ((Behavior)name.getId()).getOwnedParameters())
+ if (p.getDirection() == ParameterDirectionKind.RETURN_LITERAL)
+ return p.getType() ;
+ return null ;
+ }
+ return null ;
+ }
+
+ /**
+ * @param timeExpression
+ * @return
+ */
+ private Type typeOfTimeExpression (TimeExpression timeExpression) {
+ if (timeExpression instanceof InstantObsExpression)
+ return VSLJavaValidator._datetime ;
+ else if (timeExpression instanceof DurationObsExpression)
+ return VSLJavaValidator._real ;
+ else if (timeExpression instanceof JitterExp)
+ return VSLJavaValidator._real ;
+ else
+ return null ;
+ }
+
+ /**
+ * @param variableDeclaration
+ * @return
+ */
+ private Type typeOfVariableDeclaration (VariableDeclaration variableDeclaration) {
+ if (variableDeclaration.getType() != null)
+ return variableDeclaration.getType().getType() ;
+ else if (variableDeclaration.getInitValue() != null)
+ return typeOfExpression(variableDeclaration.getInitValue()) ;
+ return null ;
+ }
+
+ /**
+ * @param choice
+ * @return
+ */
+ //private Type typeOfChoice (Choice choice) {
+ // if (choice.getChosenAlternative() != null)
+ // return (Type)choice.getChosenAlternative().getNamespace() ;
+ // return null ;
+ //}
+
+ /**
+ * @param interval
+ * @return
+ */
+ private Type typeOfInterval (Interval interval) { // TODO: Works only for a depth-level of one
+
+ final class IntervalTypeProposal {
+
+ private Type boundsType = null ;
+
+ public IntervalTypeProposal(Interval interval) {
+ Type typeOfLower ;
+ Type typeOfUpper ;
+ VSLTypeInferenceUtil localTypeChecker = self ;
+ if (expectedType.getAppliedStereotype("MARTE::MARTE_Annexes::VSL::DataTypes::IntervalType") != null) {
+ Type expectedBoundType ;
+ Stereotype intervalStereotype = expectedType.
+ getAppliedStereotype("MARTE::MARTE_Annexes::VSL::DataTypes::IntervalType") ;
+ EObject stereotypeApplication = expectedType.getStereotypeApplication(intervalStereotype) ;
+ EStructuralFeature intervalAttrib = stereotypeApplication.eClass().getEStructuralFeature("intervalAttrib") ;
+ Property intervalProperty = (Property) stereotypeApplication.eGet(intervalAttrib) ;
+ expectedBoundType = intervalProperty.getType() ;
+ if(expectedBoundType.getAppliedStereotype("MARTE::MARTE_Annexes::VSL::DataTypes::TupleType")!=null ||
+ expectedBoundType.getAppliedStereotype("MARTE::MARTE_Foundations::NFPs::NfpType")!=null ||
+ expectedBoundType.getAppliedStereotype("MARTE::MARTE_Annexes::VSL::DataTypes::CollectionType")!=null ||
+ expectedBoundType.getAppliedStereotype("MARTE::MARTE_Annexes::VSL::DataTypes::IntervalType")!=null ||
+ expectedBoundType.getAppliedStereotype("MARTE::MARTE_Annexes::VSL::DataTypes::ChoiceType")!=null)
+ localTypeChecker = new VSLTypeInferenceUtil(expectedBoundType) ;
+ }
+ if (interval.getLower() != null && interval.getUpper() != null) {
+ typeOfLower = localTypeChecker.typeOfExpression (interval.getLower()) ;
+ typeOfUpper = localTypeChecker.typeOfExpression (interval.getUpper()) ;
+ if (typeOfLower != null && typeOfUpper != null) {
+ if (areTypesCompatible(typeOfLower, typeOfUpper) || areTypesCompatible(typeOfUpper, typeOfLower)) {
+ if (areTypesCompatible(typeOfLower,typeOfUpper))
+ this.boundsType = typeOfUpper ;
+ else
+ this.boundsType = typeOfLower ;
+ }
+ }
+ }
+ }
+
+ public boolean matchesExpectedType(Type expectedType) {
+ if (this.boundsType == null)
+ return false ;
+
+ Stereotype intervalStereotype = expectedType.
+ getAppliedStereotype("MARTE::MARTE_Annexes::VSL::DataTypes::IntervalType") ;
+ if (intervalStereotype != null) { // i.e. the expected type is indeed an IntervalType
+ EObject stereotypeApplication = expectedType.getStereotypeApplication(intervalStereotype) ;
+ EStructuralFeature intervalAttrib = stereotypeApplication.eClass().getEStructuralFeature("intervalAttrib") ;
+ Property intervalProperty = (Property) stereotypeApplication.eGet(intervalAttrib) ;
+ if (areTypesCompatible(boundsType, intervalProperty.getType())) {
+ return true ;
+ }
+ }
+ return false ;
+ }
+
+ public Type makeTypeProsal() {
+ //TODO: to be implemented
+ return null ;
+ }
+ }
+
+ IntervalTypeProposal proposal = new IntervalTypeProposal(interval) ;
+ if (proposal.matchesExpectedType(expectedType)) {
+ return expectedType ;
+ }
+ else
+ return proposal.makeTypeProsal() ;
+ }
+
+ /**
+ * @param tuple
+ * @return
+ */
+ private Type typeOfTuple (Tuple tuple) { // TODO: Works only for a depth-level of one
+
+ final class TupleTypeProposal {
+
+ private List<Property> tupleAttribs = new ArrayList<Property>() ;
+
+ public TupleTypeProposal(Tuple tuple) {
+ for (ValueNamePair v : tuple.getListOfValueNamePairs().getValueNamePairs()) {
+ if (v.getProperty() != null)
+ tupleAttribs.add(v.getProperty()) ;
+ }
+ }
+
+ public boolean matchesExpectedType(Type expectedType) {
+ Stereotype tupleStereotype = expectedType.
+ getAppliedStereotype("MARTE::MARTE_Annexes::VSL::DataTypes::TupleType") ;
+ if (tupleStereotype == null)
+ tupleStereotype = expectedType.
+ getAppliedStereotype("MARTE::MARTE_Foundations::NFPs::NfpType") ;
+ if (tupleStereotype != null) { // i.e. the expected type is indeed a TupleType
+ EObject stereotypeApplication = expectedType.getStereotypeApplication(tupleStereotype) ;
+ EStructuralFeature tupleAttrib = stereotypeApplication.eClass().getEStructuralFeature("tupleAttrib") ;
+ List<Property> tupleProperty = (List<Property>) stereotypeApplication.eGet(tupleAttrib) ;
+ if (tupleProperty.isEmpty())
+ return ((DataType)expectedType).getAllAttributes().containsAll(tupleAttribs) ;
+ else
+ return tupleProperty.containsAll(tupleAttribs) ;
+ }
+ //TODO: Handle the case where the tuple syntax is used for fixing a value for a default chosen alternative in a choice
+ return false ;
+ }
+
+ public Type makeTypeProposal() {
+ //TODO: To be implemented
+ return null ;
+ }
+ }
+
+ TupleTypeProposal proposal = new TupleTypeProposal(tuple) ;
+ if (proposal.matchesExpectedType(expectedType)) {
+ return expectedType ;
+ }
+ else
+ return proposal.makeTypeProposal() ;
+ }
+
+ /**
+ * @param collOrtuple
+ * @return
+ */
+ private Type typeOfCollectionOrTuple (CollectionOrTuple collOrtuple) { // TODO : Works only for a depth-level of one
+
+ final class CollectionOrTupleTypeProposal {
+
+ private List<Type> collectionOrTupleElemTypes = new ArrayList<Type>() ;
+
+ public CollectionOrTupleTypeProposal(CollectionOrTuple collOrTuple) {
+ VSLTypeInferenceUtil localTypeChecker = self ;
+ List<VSLTypeInferenceUtil> localListOfTypeCheckers = new ArrayList<VSLTypeInferenceUtil>() ;
+ if (expectedType.getAppliedStereotype("MARTE::MARTE_Annexes::VSL::DataTypes::CollectionType") != null) {
+ Type expectedElementType ;
+ Stereotype collectionStereotype = expectedType.
+ getAppliedStereotype("MARTE::MARTE_Annexes::VSL::DataTypes::CollectionType") ;
+ EObject stereotypeApplication = expectedType.getStereotypeApplication(collectionStereotype) ;
+ EStructuralFeature collectionAttrib = stereotypeApplication.eClass().getEStructuralFeature("collectionAttrib") ;
+ Property collectionProperty = (Property) stereotypeApplication.eGet(collectionAttrib) ;
+ expectedElementType = collectionProperty.getType() ;
+ if(expectedElementType.getAppliedStereotype("MARTE::MARTE_Annexes::VSL::DataTypes::TupleType")!=null ||
+ expectedElementType.getAppliedStereotype("MARTE::MARTE_Foundations::NFPs::NfpType")!=null ||
+ expectedElementType.getAppliedStereotype("MARTE::MARTE_Annexes::VSL::DataTypes::CollectionType")!=null ||
+ expectedElementType.getAppliedStereotype("MARTE::MARTE_Annexes::VSL::DataTypes::IntervalType")!=null ||
+ expectedElementType.getAppliedStereotype("MARTE::MARTE_Annexes::VSL::DataTypes::ChoiceType")!=null)
+ localTypeChecker = new VSLTypeInferenceUtil(expectedElementType) ;
+ }
+ else if (expectedType.getAppliedStereotype("MARTE::MARTE_Annexes::VSL::DataTypes::TupleType") != null ||
+ expectedType.getAppliedStereotype("MARTE::MARTE_Foundations::NFPs::NfpType")!=null) {
+ //Stereotype tupleStereotype = expectedType.
+ // getAppliedStereotype("MARTE::MARTE_Annexes::VSL::DataTypes::TupleType") ;
+ //EObject stereotypeApplication = expectedType.getStereotypeApplication(tupleStereotype) ;
+ //EStructuralFeature tupleAttrib = stereotypeApplication.eClass().getEStructuralFeature("tupleAttrib") ;
+ //List<Property> collectionProperty = (List<Property>) stereotypeApplication.eGet(tupleAttrib) ;
+ List<Property> collectionProperty = new ArrayList<Property>() ;
+ collectionProperty.addAll(((Classifier)expectedType).getAllAttributes()) ;
+ if (collectionProperty.isEmpty())
+ collectionProperty = ((Classifier)expectedType).getAllAttributes() ;
+ for (int i = 0 ; i < collOrTuple.getListOfValues().getValues().size() ; i++) {
+ Type expectedElementType ;
+ expectedElementType = i < collectionProperty.size() ? collectionProperty.get(i).getType() : null ;
+ if(expectedElementType != null &&
+ (expectedElementType.getAppliedStereotype("MARTE::MARTE_Annexes::VSL::DataTypes::TupleType")!=null ||
+ expectedElementType.getAppliedStereotype("MARTE::MARTE_Foundations::NFPs::NfpType")!=null ||
+ expectedElementType.getAppliedStereotype("MARTE::MARTE_Annexes::VSL::DataTypes::CollectionType")!=null ||
+ expectedElementType.getAppliedStereotype("MARTE::MARTE_Annexes::VSL::DataTypes::IntervalType")!=null ||
+ expectedElementType.getAppliedStereotype("MARTE::MARTE_Annexes::VSL::DataTypes::ChoiceType")!=null))
+ localListOfTypeCheckers.add(new VSLTypeInferenceUtil(expectedElementType)) ;
+ else
+ localListOfTypeCheckers.add(self) ;
+ }
+ }
+ for (int i = 0 ; i < collOrTuple.getListOfValues().getValues().size() ; i++) {
+ Expression exp = collOrTuple.getListOfValues().getValues().get(i);
+ Type typeOfExp = ((expectedType.getAppliedStereotype("MARTE::MARTE_Annexes::VSL::DataTypes::TupleType") != null ||
+ expectedType.getAppliedStereotype("MARTE::MARTE_Foundations::NFPs::NfpType")!= null)
+ ? localListOfTypeCheckers.get(i) : localTypeChecker).typeOfExpression(exp) ;
+ //if (typeOfExp != null)
+ collectionOrTupleElemTypes.add(typeOfExp) ;
+ }
+ }
+
+ public boolean matchesExpectedType(Type expectedType) {
+ Stereotype tupleStereotype = expectedType.
+ getAppliedStereotype("MARTE::MARTE_Annexes::VSL::DataTypes::TupleType") ;
+ tupleStereotype = expectedType.getAppliedStereotype("MARTE::MARTE_Foundations::NFPs::NfpType") ;
+ Stereotype collectionStereotype = expectedType.
+ getAppliedStereotype("MARTE::MARTE_Annexes::VSL::DataTypes::CollectionType") ;
+ if (collectionStereotype != null) { // i.e. the expected type is indeed a CollectionType
+ // there must be one distinguishable type in collectionOrTupleElemTypes
+ // and it must conform to the type of the collectionAttrib
+ EObject stereotypeApplication = expectedType.getStereotypeApplication(collectionStereotype) ;
+ EStructuralFeature collectionAttrib = stereotypeApplication.eClass().getEStructuralFeature("collectionAttrib") ;
+ Property collectionProperty = (Property) stereotypeApplication.eGet(collectionAttrib) ;
+ if (collectionProperty.getType() != null) {
+ // collectionOrTupleElemTypes must not be empty
+ // and each of its types must conform to collectionProperty.getType
+ if (collectionOrTupleElemTypes.isEmpty())
+ return false ;
+ for (Type t : collectionOrTupleElemTypes) {
+ if (! areTypesCompatible(t, collectionProperty.getType()))
+ return false ;
+ }
+ return true ;
+ }
+ }
+ else if (tupleStereotype != null) { // i.e. the expected type is indeed a TupleType
+ //EObject stereotypeApplication = expectedType.getStereotypeApplication(tupleStereotype) ;
+ //EStructuralFeature tupleAttrib = stereotypeApplication.eClass().getEStructuralFeature("tupleAttrib") ;
+ //List<Property> tupleProperty = (List<Property>) stereotypeApplication.eGet(tupleAttrib) ;
+ List<Property> tupleProperty = new ArrayList<Property>();
+ tupleProperty.addAll(((Classifier)expectedType).getAllAttributes()) ;
+ if (tupleProperty.isEmpty()) {
+ int numberOfElementsToTest = Math.min(((DataType)expectedType).getAllAttributes().size() , collectionOrTupleElemTypes.size()) ;
+// if (((DataType)expectedType).getAllAttributes().size() != collectionOrTupleElemTypes.size())
+// return false ;
+// else {
+ for (int i = 0 ; i < numberOfElementsToTest ; i++) {
+ if (collectionOrTupleElemTypes.get(i) != null &&
+ ((DataType)expectedType).getAllAttributes().get(i) != null &&
+ ((DataType)expectedType).getAllAttributes().get(i).getType() != null) {
+ if (! areTypesCompatible(collectionOrTupleElemTypes.get(i), ((DataType)expectedType).getAllAttributes().get(i).getType()))
+ return false ;
+ }
+ else return false ;
+ }
+ return true ;
+ //}
+ }
+ else {
+ int numberOfElementsToTest = Math.min(((DataType)expectedType).getAllAttributes().size() , collectionOrTupleElemTypes.size()) ;
+ //if (tupleProperty.size() != collectionOrTupleElemTypes.size())
+// if (tupleProperty.size() > collectionOrTupleElemTypes.size())
+// return false ;
+// else {
+ //for (int i = 0 ; i < collectionOrTupleElemTypes.size() ; i++) {
+ for (int i = 0 ; i < numberOfElementsToTest ; i++) {
+ if (collectionOrTupleElemTypes.get(i) != null &&
+ tupleProperty.get(i) != null &&
+ tupleProperty.get(i).getType() != null) {
+ if (!areTypesCompatible(collectionOrTupleElemTypes.get(i), tupleProperty.get(i).getType()))
+ return false ;
+ }
+ else return false ;
+ }
+ return true ;
+// }
+ }
+ }
+ //TODO: Handle the case where the tuple syntax is used for fixing a value for a default chosen alternative in a choice
+ return false ;
+ }
+
+ public Type makeTypeProposal() {
+ //TODO: to be implemented
+ return null ;
+ }
+ }
+
+ CollectionOrTupleTypeProposal proposal = new CollectionOrTupleTypeProposal(collOrtuple) ;
+ if (proposal.matchesExpectedType(expectedType)) {
+ return expectedType ;
+ }
+ else
+ return proposal.makeTypeProposal() ;
+ }
+
+ public boolean areTypesCompatible (Type found, Type expected) {
+
+ if (found == null)
+ return false ;
+
+ if (found == VSLJavaValidator._integer && expected == VSLJavaValidator._unlimitedNatural)
+ return true ;
+
+ return found.conformsTo(expected) ;
+ }
+}
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src/org/eclipse/papyrus/marte/vsl/extensions/XtendUtil.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src/org/eclipse/papyrus/marte/vsl/extensions/XtendUtil.java
new file mode 100644
index 00000000000..f4d7c45a262
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src/org/eclipse/papyrus/marte/vsl/extensions/XtendUtil.java
@@ -0,0 +1,41 @@
+/*****************************************************************************
+ * Copyright (c) 2010 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.marte.vsl.extensions;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EcorePackage;
+import org.eclipse.uml2.uml.UMLPackage;
+
+public class XtendUtil {
+ public static EClass getTypeEClass() {
+ return UMLPackage.eINSTANCE.getType() ;
+ }
+
+ public static EClass getNamespaceEClass() {
+ return UMLPackage.eINSTANCE.getNamespace() ;
+ }
+
+ public static EClass getElementEClass() {
+ return UMLPackage.eINSTANCE.getElement() ;
+ }
+
+ public static EClass getEClassEClass() {
+ return EcorePackage.eINSTANCE.getEClass() ;
+ }
+
+ public static EClass getEObjectEClass() {
+ return EcorePackage.eINSTANCE.getEObject() ;
+ }
+
+}
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src/org/eclipse/papyrus/marte/vsl/formatting/VSLFormatter.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src/org/eclipse/papyrus/marte/vsl/formatting/VSLFormatter.java
new file mode 100644
index 00000000000..53a13adea76
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src/org/eclipse/papyrus/marte/vsl/formatting/VSLFormatter.java
@@ -0,0 +1,39 @@
+/*****************************************************************************
+ * Copyright (c) 2010 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.marte.vsl.formatting;
+
+import org.eclipse.xtext.formatting.impl.AbstractDeclarativeFormatter;
+import org.eclipse.xtext.formatting.impl.FormattingConfig;
+
+/**
+ * This class contains custom formatting description.
+ *
+ * see : http://www.eclipse.org/Xtext/documentation/latest/xtext.html#formatting
+ * on how and when to use it
+ *
+ * Also see {@link org.eclipse.xtext.xtext.XtextFormattingTokenSerializer} as an example
+ */
+public class VSLFormatter extends AbstractDeclarativeFormatter {
+
+ @Override
+ protected void configureFormatting(FormattingConfig c) {
+ org.eclipse.papyrus.marte.vsl.services.VSLGrammarAccess f = (org.eclipse.papyrus.marte.vsl.services.VSLGrammarAccess) getGrammarAccess();
+
+ c.setLinewrap(0, 1, 2).before(f.getSL_COMMENTRule());
+ c.setLinewrap(0, 1, 2).before(f.getML_COMMENTRule());
+ c.setLinewrap(0, 1, 1).after(f.getML_COMMENTRule());
+
+ // ...
+ }
+}
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src/org/eclipse/papyrus/marte/vsl/scoping/VSLScopeProvider.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src/org/eclipse/papyrus/marte/vsl/scoping/VSLScopeProvider.java
new file mode 100644
index 00000000000..3dde4047965
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src/org/eclipse/papyrus/marte/vsl/scoping/VSLScopeProvider.java
@@ -0,0 +1,1028 @@
+/*****************************************************************************
+ * Copyright (c) 2010 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.marte.vsl.scoping;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil;
+import org.eclipse.papyrus.marte.vsl.extensions.VSLTypeInferenceUtil;
+import org.eclipse.papyrus.marte.vsl.scoping.visitors.ScopingVisitors;
+import org.eclipse.papyrus.marte.vsl.scoping.visitors.Visitor;
+import org.eclipse.papyrus.marte.vsl.vSL.CollectionOrTuple;
+import org.eclipse.papyrus.marte.vsl.vSL.DataTypeName;
+import org.eclipse.papyrus.marte.vsl.vSL.DurationObsName;
+import org.eclipse.papyrus.marte.vsl.vSL.Expression;
+import org.eclipse.papyrus.marte.vsl.vSL.InstantObsName;
+import org.eclipse.papyrus.marte.vsl.vSL.Interval;
+import org.eclipse.papyrus.marte.vsl.vSL.ListOfValues;
+import org.eclipse.papyrus.marte.vsl.vSL.NameOrChoiceOrBehaviorCall;
+import org.eclipse.papyrus.marte.vsl.vSL.OperationCallExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.PrimaryExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.PropertyCallExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.QualifiedName;
+import org.eclipse.papyrus.marte.vsl.vSL.VSLPackage;
+import org.eclipse.papyrus.marte.vsl.vSL.ValueNamePair;
+import org.eclipse.papyrus.marte.vsl.validation.VSLJavaValidator;
+import org.eclipse.uml2.uml.Behavior;
+import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Enumeration;
+import org.eclipse.uml2.uml.EnumerationLiteral;
+import org.eclipse.uml2.uml.MultiplicityElement;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.Namespace;
+import org.eclipse.uml2.uml.Operation;
+import org.eclipse.uml2.uml.Parameter;
+import org.eclipse.uml2.uml.ParameterDirectionKind;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.Stereotype;
+import org.eclipse.uml2.uml.UMLPackage;
+import org.eclipse.xtext.resource.IEObjectDescription;
+import org.eclipse.xtext.scoping.IScope;
+import org.eclipse.xtext.scoping.Scopes;
+import org.eclipse.xtext.scoping.impl.AbstractDeclarativeScopeProvider;
+import org.eclipse.xtext.scoping.impl.SimpleScope;
+
+/**
+ * This class contains custom scoping description.
+ *
+ * see : http://www.eclipse.org/Xtext/documentation/latest/xtext.html#scoping
+ * on how and when to use it
+ *
+ */
+public class VSLScopeProvider extends AbstractDeclarativeScopeProvider {
+
+ public static VSLScopeProvider eInstance = new VSLScopeProvider() ;
+
+ /**
+ * A private helper class for scope computing
+ *
+ */
+ public class ScopingHelper {
+ private List<EObject> eObjectHierarchy ;
+ private List<EObject> bindingKeys ;
+ private HashMap<EObject, Classifier> ruleToClassifierBinding ;
+ private HashMap<EObject, Element> ruleToContextInformation ;
+ private HashMap<EObject, MultiplicityElement> ruleToMultiplicityInformation ;
+
+ private EObject analyzedRule ;
+
+ public boolean isExpectedTypeAUMLMetaclass() {
+ Classifier expectedType = (Classifier)VSLContextUtil.getExpectedType(analyzedRule) ;
+ if (expectedType instanceof org.eclipse.uml2.uml.Class) {
+ String name = "" + ((org.eclipse.uml2.uml.Class)expectedType).getName() ;
+ if (UMLPackage.eINSTANCE.getEClassifier(name) != null) {
+ return true ;
+ }
+ }
+ return false ;
+ }
+
+ public boolean isExpectedTypeAStereotype() {
+ Classifier expectedType = (Classifier)VSLContextUtil.getExpectedType(analyzedRule) ;
+ if (expectedType instanceof Stereotype) {
+ return true ;
+ }
+ return false ;
+ }
+
+ public ScopingHelper(EObject rule) {
+ this.analyzedRule = rule ;
+ Classifier expectedType = (Classifier)VSLContextUtil.getExpectedType(analyzedRule) ;
+ // if expected type is not a metaclass or a stereotype
+ this.buildEObjectHierarchy() ;
+ this.buildRuleToClassifierBinding() ; // default case
+ }
+
+ public Classifier getClassifierForScoping() {
+ EObject previousKey = this.getPreviousRuleKey(analyzedRule) ;
+ return ruleToClassifierBinding.get(previousKey) ;
+ }
+
+ public MultiplicityElement getExpectedMultiplicity() {
+ EObject previousKey = this.getPreviousRuleKey(analyzedRule) ;
+ return ruleToMultiplicityInformation.get(previousKey) ;
+ }
+
+ private void buildEObjectHierarchy() {
+ eObjectHierarchy = new ArrayList<EObject>() ;
+ EObject currentRule = this.analyzedRule ;
+ while (currentRule != null && VSLPackage.eINSTANCE.getEClassifier(currentRule.eClass().getName()) != null) {
+ eObjectHierarchy.add(0, currentRule) ;
+ currentRule = currentRule.eContainer() ;
+ }
+ }
+
+ private void buildRuleToClassifierBinding() {
+ ruleToClassifierBinding = new HashMap<EObject, Classifier>() ;
+ ruleToContextInformation = new HashMap<EObject, Element>() ;
+ ruleToMultiplicityInformation = new HashMap<EObject, MultiplicityElement>() ;
+ if (eObjectHierarchy.isEmpty())
+ return ;
+ Classifier expectedType = (Classifier)VSLContextUtil.getExpectedType(analyzedRule) ;
+ ruleToClassifierBinding.put(eObjectHierarchy.get(0), expectedType) ;
+ if (analyzedRule instanceof MultiplicityElement) {
+ MultiplicityElement expectedMultiplicity = (MultiplicityElement)VSLContextUtil.getContextElement(analyzedRule) ;
+ ruleToMultiplicityInformation.put(eObjectHierarchy.get(0), expectedMultiplicity) ;
+ }
+ bindingKeys = new ArrayList<EObject>() ;
+ bindingKeys.add(eObjectHierarchy.get(0)) ;
+ if (! isExpectedTypeAStereotype() && ! isExpectedTypeAUMLMetaclass()) {
+ for (int i = 1 ; i < eObjectHierarchy.size() ; i++) {
+ EObject currentRule = eObjectHierarchy.get(i) ;
+ this.bindExpectedType(currentRule) ;
+ }
+ }
+ else {
+ for (int i = 1 ; i < eObjectHierarchy.size() ; i++) {
+ EObject currentRule = eObjectHierarchy.get(i) ;
+ this.bindExpectedMetaclassOrStereotype(currentRule) ;
+ }
+ }
+ }
+
+ private void bindExpectedMetaclassOrStereotype(EObject rule) {
+ if (eObjectHierarchy.isEmpty())
+ return ;
+ EObject previousKey = this.getPreviousRuleKey(rule) ;
+ if (previousKey != null) {
+ ruleToClassifierBinding.put(rule, ruleToClassifierBinding.get(previousKey)) ;
+ ruleToMultiplicityInformation.put(rule, ruleToMultiplicityInformation.get(previousKey)) ;
+ if (ruleToContextInformation.containsKey(previousKey)) {
+ ruleToContextInformation.put(rule, ruleToContextInformation.get(previousKey)) ;
+ }
+ }
+ else
+ ruleToClassifierBinding.put(rule, null) ;
+ }
+
+ private void bindExpectedType(EObject rule) {
+ if (eObjectHierarchy.isEmpty())
+ return ;
+
+ if (rule instanceof PropertyCallExpression) {
+ if (((PropertyCallExpression) rule).getProperty() != null) {
+ ruleToClassifierBinding.put(rule, (Classifier)((((PropertyCallExpression) rule).getProperty()).getType())) ;
+ }
+ else
+ ruleToClassifierBinding.put(rule, null) ;
+ }
+ else if (rule instanceof OperationCallExpression) {
+ if (((OperationCallExpression) rule).getOperation() != null) {
+ ruleToClassifierBinding.put(rule, (Classifier)((OperationCallExpression) rule).getOperation().getType()) ;
+ ruleToContextInformation.put(rule, ((OperationCallExpression) rule).getOperation()) ;
+ }
+ else
+ ruleToClassifierBinding.put(rule, null) ;
+ }
+ else if (rule instanceof NameOrChoiceOrBehaviorCall) {
+ if (((NameOrChoiceOrBehaviorCall) rule).getId() != null) {
+ if (((NameOrChoiceOrBehaviorCall) rule).getId() instanceof Property) {
+ ruleToClassifierBinding.put(rule, (Classifier)((Property)((NameOrChoiceOrBehaviorCall) rule).getId()).getType()) ;
+ if (VSLContextUtil.isAChoiceType((Classifier)((Property)((NameOrChoiceOrBehaviorCall) rule).getId()).getOwner())) {
+ ruleToContextInformation.put(rule, ((NameOrChoiceOrBehaviorCall) rule).getId()) ;
+ }
+ }
+ else if (((NameOrChoiceOrBehaviorCall) rule).getId() instanceof EnumerationLiteral) {
+ ruleToClassifierBinding.put(rule, ((EnumerationLiteral)((NameOrChoiceOrBehaviorCall) rule).getId()).getEnumeration()) ;
+ }
+ else if (((NameOrChoiceOrBehaviorCall) rule).getId() instanceof Behavior) {
+ Behavior calledBehavior = (Behavior)((NameOrChoiceOrBehaviorCall) rule).getId() ;
+ boolean done = false ;
+ for (Parameter p : calledBehavior.getOwnedParameters()) {
+ if (p.getDirection() == ParameterDirectionKind.RETURN_LITERAL) {
+ ruleToClassifierBinding.put(rule, (Classifier)p.getType()) ;
+ done = true ;
+ }
+ }
+ ruleToContextInformation.put(rule, calledBehavior) ;
+ if (!done)
+ ruleToClassifierBinding.put(rule, null) ;
+ }
+ }
+ else
+ ruleToClassifierBinding.put(rule, null) ;
+ }
+// else if (rule instanceof QualifiedName) {
+// // tODO ??
+// }
+ else if (rule instanceof ValueNamePair) {
+ if (((ValueNamePair) rule).getProperty() != null) {
+ ruleToClassifierBinding.put(rule, (Classifier)((ValueNamePair) rule).getProperty().getType()) ;
+ }
+ else
+ ruleToClassifierBinding.put(rule, null) ;
+ }
+// else if (rule instanceof InstantObsName) {
+// // tODO ??
+// }
+// else if (rule instanceof DurationObsName) {
+// // tODO ?
+// }
+// else if (rule instanceof DataTypeName) {
+// // tODO ?
+// }
+ else if (rule instanceof CollectionOrTuple) {
+ EObject previousKey = this.getPreviousRuleKey(rule) ;
+ if (previousKey != null) {
+ ruleToClassifierBinding.put(rule, ruleToClassifierBinding.get(previousKey)) ;
+ ruleToMultiplicityInformation.put(rule, ruleToMultiplicityInformation.get(previousKey)) ;
+ if (ruleToContextInformation.containsKey(previousKey)) {
+ ruleToContextInformation.put(rule, ruleToContextInformation.get(previousKey)) ;
+ }
+ }
+ else
+ ruleToClassifierBinding.put(rule, null) ;
+ }
+ else if (rule instanceof ListOfValues) {
+ EObject previousKey = this.getPreviousRuleKey(rule) ;
+ if (previousKey != null) {
+ ruleToClassifierBinding.put(rule, ruleToClassifierBinding.get(previousKey)) ;
+ ruleToMultiplicityInformation.put(rule, ruleToMultiplicityInformation.get(previousKey)) ;
+ if (ruleToContextInformation.containsKey(previousKey)) {
+ ruleToContextInformation.put(rule, ruleToContextInformation.get(previousKey)) ;
+ }
+ }
+ else
+ ruleToClassifierBinding.put(rule, null) ;
+ }
+ else if (rule instanceof Interval) {
+ EObject previousKey = this.getPreviousRuleKey(rule) ;
+ if (previousKey != null) {
+ ruleToClassifierBinding.put(rule, ruleToClassifierBinding.get(previousKey)) ;
+ if (ruleToContextInformation.containsKey(previousKey)) {
+ ruleToContextInformation.put(rule, ruleToContextInformation.get(previousKey)) ;
+ }
+ }
+ else
+ ruleToClassifierBinding.put(rule, null) ;
+ }
+ else if (rule instanceof Expression) {
+ EObject previousKey = this.getPreviousRuleKey(rule) ;
+ if (previousKey instanceof ListOfValues) {
+ Classifier expectedType =
+ this.retrieveExpectedClassifierForExpressionFromListOfValues
+ ((Expression)rule,
+ (ListOfValues)previousKey) ;
+ ruleToClassifierBinding.put(rule, expectedType) ;
+ }
+ else if (previousKey instanceof Interval) {
+ Classifier expectedType = ruleToClassifierBinding.get(previousKey);
+ if (VSLContextUtil.isAnIntervalType(expectedType)) {
+ Property intervalAttribProperty = (Property)VSLContextUtil.getIntervalAttrib(expectedType) ;
+ if (intervalAttribProperty != null)
+ ruleToClassifierBinding.put(rule, (Classifier)intervalAttribProperty.getType()) ;
+ else
+ ruleToClassifierBinding.put(rule, expectedType) ;
+ }
+ else
+ ruleToClassifierBinding.put(rule, expectedType) ;
+ }
+ else {
+ ruleToClassifierBinding.put(rule, ruleToClassifierBinding.get(previousKey)) ;
+ }
+ }
+ else {
+ // Do nothing
+ //System.out.println() ;
+ }
+ }
+
+ private EObject getPreviousRuleKey(EObject rule) {
+ int index = eObjectHierarchy.indexOf(rule) ;
+ while (index >= 0) {
+ EObject currentRule = eObjectHierarchy.get(index) ;
+ if (ruleToClassifierBinding.get(currentRule) != null)
+ return currentRule ;
+ index -- ;
+ }
+ return null ;
+ }
+
+ private Classifier retrieveExpectedClassifierForExpressionFromListOfValues(Expression exp, ListOfValues listOfValues) {
+ Classifier expectedType = ruleToClassifierBinding.get(listOfValues) ;
+ MultiplicityElement multiplicity = ruleToMultiplicityInformation.get(listOfValues) ;
+ if (listOfValues.getValues().contains(exp)) {
+ if (multiplicity != null && (multiplicity.getUpper() > 1 || multiplicity.getUpper() == -1))
+ return expectedType ;
+ int indexOfExp = listOfValues.getValues().indexOf(exp) ;
+ Element optionalContextElement = ruleToContextInformation.get(listOfValues) ;
+ if (optionalContextElement != null) {
+ if (optionalContextElement instanceof Behavior) {
+ Behavior calledBehavior = (Behavior) optionalContextElement ;
+ List<Parameter> inoutParameters = new ArrayList<Parameter>() ;
+ for (Parameter p : calledBehavior.getOwnedParameters()) {
+ if (p.getDirection() != ParameterDirectionKind.RETURN_LITERAL)
+ inoutParameters.add(p) ;
+ }
+ if (inoutParameters.size() > indexOfExp) {
+ return (Classifier)inoutParameters.get(indexOfExp).getType() ;
+ }
+ }
+ else if (optionalContextElement instanceof Operation) {
+ Operation calledOperation = (Operation) optionalContextElement ;
+ List<Parameter> inoutParameters = new ArrayList<Parameter>() ;
+ for (Parameter p : calledOperation.getOwnedParameters()) {
+ if (p.getDirection() != ParameterDirectionKind.RETURN_LITERAL)
+ inoutParameters.add(p) ;
+ }
+ if (inoutParameters.size() > indexOfExp) {
+ return (Classifier)inoutParameters.get(indexOfExp).getType() ;
+ }
+ }
+ else if (optionalContextElement instanceof Property) {// This is a chosen alternative
+ System.out.println(((Property) optionalContextElement).getType().getName()) ;
+ return (Classifier)((Property) optionalContextElement).getType() ;
+ }
+ else {
+ System.out.println("should not be reached") ;
+ }
+ }
+ else {
+ if (VSLContextUtil.isATupleType(expectedType)) {
+ List<NamedElement> tupleProperties =
+ new ArrayList<NamedElement>(VSLContextUtil.getTupleAttribs(expectedType)) ;
+ if (tupleProperties.size() > indexOfExp) {
+ System.out.println(((Property)tupleProperties.get(indexOfExp)).getType().getName()) ;
+ System.out.println(((Property)tupleProperties.get(indexOfExp)).getName() + "") ;
+ return (Classifier)((Property)tupleProperties.get(indexOfExp)).getType() ;
+ }
+ }
+ else if (VSLContextUtil.isACollectionType(expectedType)) {
+ if (VSLContextUtil.getCollectionAttrib(expectedType) != null)
+ return (Classifier)((Property)VSLContextUtil.getCollectionAttrib(expectedType)).getType() ;
+ }
+ else if (VSLContextUtil.isAnIntervalType(expectedType)) {
+ if (VSLContextUtil.getIntervalAttrib(expectedType) != null)
+ return (Classifier)((Property)VSLContextUtil.getIntervalAttrib(expectedType)).getType() ;
+ }
+ }
+ }
+ return expectedType ;
+ }
+ }
+
+ /* ****************************************************
+ *
+ * Scope for qualified names
+ *
+ **************************************************** */
+
+ public IScope scope_QualifiedName_path (QualifiedName ctx, EReference ref) {
+ List<Namespace> visibleNamespaces = new ArrayList<Namespace>() ;
+ if (ctx != null && ctx.eContainer() != null && ctx.eContainer() instanceof QualifiedName) {
+ Namespace parentNameSpace = ((QualifiedName)ctx.eContainer()).getPath() ;
+ visibleNamespaces.addAll(ScopingVisitors.ownedAndImportedNamespaces.visit(parentNameSpace)) ;
+ }
+ else {
+ visibleNamespaces.add(VSLJavaValidator.getModel()) ;
+ visibleNamespaces.addAll(ScopingVisitors.ownedAndImportedNamespaces.visit(VSLJavaValidator.getModel())) ;
+ }
+ Iterable<IEObjectDescription> iterableIEobjectDescription = Scopes.scopedElementsFor(visibleNamespaces) ;
+ return new SimpleScope(iterableIEobjectDescription) ;
+ }
+
+ public IScope scope_QualifiedName_remaining(QualifiedName ctx, EReference ref) {
+ List<Namespace> visibleNamespaces = new ArrayList<Namespace>() ;
+ if (ctx != null) {
+ Namespace parentNameSpace = ctx.getPath() ;
+ if (parentNameSpace != null)
+ visibleNamespaces.addAll(ScopingVisitors.ownedAndImportedNamespaces.visit(parentNameSpace)) ;
+ }
+ Iterable<IEObjectDescription> iterableIEobjectDescription = Scopes.scopedElementsFor(visibleNamespaces) ;
+ return new SimpleScope(iterableIEobjectDescription) ;
+ }
+
+ /* ****************************************************
+ *
+ * Scope for names
+ *
+ **************************************************** */
+ private IScope scope_Name_ifExpectingAStereotype (NameOrChoiceOrBehaviorCall ctx, EReference ref) {
+ List<Element> visibleElementsFromPath = new ArrayList<Element>() ;
+ if (ctx.getPath() != null) {
+ QualifiedName qualifiedName = ctx.getPath() ;
+ while (qualifiedName.getRemaining() != null) {
+ qualifiedName = qualifiedName.getRemaining() ;
+ }
+ Namespace nearestNamespace = qualifiedName.getPath() ;
+ if (nearestNamespace != null) {
+ Stereotype expectedStereotype =
+ (Stereotype) new ScopingHelper(ctx.eContainer()).getClassifierForScoping() ;
+ visibleElementsFromPath.addAll(ScopingVisitors.Visitor_GetOwnedAndImportedStereotypeInstances.visit(nearestNamespace, expectedStereotype)) ;
+ }
+ }
+ else {
+ // TODO: handle the case where no qualified name is specified
+ }
+
+ // builds the nested scope base on hierarchy and then inheritance
+ SimpleScope resultScope = null;
+
+ Iterable<IEObjectDescription> iterableIEobjectDescriptions ;
+ iterableIEobjectDescriptions = Scopes.scopedElementsFor(visibleElementsFromPath) ;
+ resultScope = new SimpleScope(iterableIEobjectDescriptions) ;
+
+ return resultScope ;
+ }
+
+ private IScope scope_Name_ifExpectingAMetaclassInstance (NameOrChoiceOrBehaviorCall ctx, EReference ref) {
+ List<Element> visibleElementsFromPath = new ArrayList<Element>() ;
+ if (ctx.getPath() != null) {
+ QualifiedName qualifiedName = ctx.getPath() ;
+ while (qualifiedName.getRemaining() != null) {
+ qualifiedName = qualifiedName.getRemaining() ;
+ }
+ Namespace nearestNamespace = qualifiedName.getPath() ;
+ if (nearestNamespace != null) {
+ org.eclipse.uml2.uml.Class expectedMetaclass =
+ (org.eclipse.uml2.uml.Class) new ScopingHelper(ctx.eContainer()).getClassifierForScoping() ;
+ visibleElementsFromPath.addAll(ScopingVisitors.Visitor_GetOwnedAndImportedMetaclassInstances.visit(nearestNamespace, expectedMetaclass)) ;
+ }
+ }
+ else {
+ // TODO: handle the case where no qualified name is specified
+ }
+
+ // builds the nested scope base on hierarchy and then inheritance
+ SimpleScope resultScope = null;
+
+ Iterable<IEObjectDescription> iterableIEobjectDescriptions ;
+ iterableIEobjectDescriptions = Scopes.scopedElementsFor(visibleElementsFromPath) ;
+ resultScope = new SimpleScope(iterableIEobjectDescriptions) ;
+
+ return resultScope ;
+ }
+
+ public IScope scope_NameOrChoiceOrBehaviorCall_id (NameOrChoiceOrBehaviorCall ctx, EReference ref) {
+ //List<List<Element>> visibleElements = new ArrayList<List<Element>>() ;
+
+
+ ScopingHelper tmpHelper = new ScopingHelper(ctx.eContainer()) ;
+ if (tmpHelper.isExpectedTypeAStereotype())
+ return scope_Name_ifExpectingAStereotype(ctx, ref) ;
+ else if (tmpHelper.isExpectedTypeAUMLMetaclass())
+ return scope_Name_ifExpectingAMetaclassInstance(ctx, ref) ;
+
+ List<List<Element>> tmpOwnedOrInheritedVisibleProperties = new ArrayList<List<Element>>() ;
+ List<Element> tmpFlatListOfVisibleElements = new ArrayList<Element>() ;
+ List<List<Element>> tmpHierarchichallyVisibleBehaviors = new ArrayList<List<Element>>() ;
+ List<List<Element>> tmpHierarchichallyVisibleProperties = new ArrayList<List<Element>>() ;
+
+ // In the case where a path (qualified name prefix) has been specified,
+ // retrieves visible elements from this name space
+ List<Element> tmpVisibleElementsFromPath = new ArrayList<Element>() ;
+ if (ctx.getPath() != null) {
+ QualifiedName qualifiedName = ctx.getPath() ;
+ while (qualifiedName.getRemaining() != null) {
+ qualifiedName = qualifiedName.getRemaining() ;
+ }
+ Namespace nearestNamespace = qualifiedName.getPath() ;
+ if (nearestNamespace != null) {
+ List<Element> tmpVisibleBehaviorsFromPath = new ArrayList<Element>() ;
+ List<Element> tmpVisiblePropertiesFromPath = new ArrayList<Element>() ;
+ List<Element> tmpVisibleEnumerationLiteralFromPath = new ArrayList<Element>() ;
+ tmpVisibleBehaviorsFromPath.addAll(ScopingVisitors.ownedAndImportedBehaviors.visit(nearestNamespace)) ;
+ tmpVisiblePropertiesFromPath.addAll(ScopingVisitors.ownedAndImportedProperties.visit(nearestNamespace)) ;
+ tmpVisibleEnumerationLiteralFromPath.addAll(ScopingVisitors.ownedAndImportedEnumerationLiterals.visit(nearestNamespace)) ;
+ for (Element e : tmpVisibleBehaviorsFromPath) {
+ if (! tmpFlatListOfVisibleElements.contains(e))
+ tmpVisibleElementsFromPath.add(e) ;
+ }
+ for (Element e : tmpVisiblePropertiesFromPath) {
+ if (! tmpFlatListOfVisibleElements.contains(e))
+ tmpVisibleElementsFromPath.add(e) ;
+ }
+ for (Element e : tmpVisibleEnumerationLiteralFromPath) {
+ if (! tmpFlatListOfVisibleElements.contains(e))
+ tmpVisibleElementsFromPath.add(e) ;
+ }
+ }
+ }
+ else {
+ // if the global context element is nested inside a classifier:
+ // - retrieves the classifier, and gets all its owned and inherited attributes
+ Element context = VSLJavaValidator.getContextElement() ;
+ while (context != null && !(context instanceof Classifier)) {
+ context = context.getOwner();
+ }
+ if (context != null) {
+ tmpOwnedOrInheritedVisibleProperties.addAll(ScopingVisitors.ownedOrInheritedAttributes.visit(((Classifier)context))) ;
+ }
+
+ // retrieves any hierarchically visible behavior from context (not based on inheritance)
+ context = VSLJavaValidator.getContextElement() ;
+ tmpHierarchichallyVisibleBehaviors = new ArrayList<List<Element>>() ;
+ tmpHierarchichallyVisibleBehaviors.addAll(ScopingVisitors.hierarchichallyAccessibleBehaviors.visit(context)) ;
+ for (List<Element> l : tmpHierarchichallyVisibleBehaviors) {
+ tmpFlatListOfVisibleElements.addAll(l) ;
+ }
+
+ // retrieves any hierarchically visible properties from context (not based on inheritance)
+ context = VSLJavaValidator.getContextElement() ;
+ tmpHierarchichallyVisibleProperties = new ArrayList<List<Element>>() ;
+ tmpHierarchichallyVisibleProperties.addAll(ScopingVisitors.hierarchichallyAccessibleProperties.visit(context)) ;
+ for (List<Element> l : tmpHierarchichallyVisibleProperties) {
+ List<Element> elementsToBeRemovedFromTheScope = new ArrayList<Element>() ;
+ for (Element e : l) {
+ if (tmpFlatListOfVisibleElements.contains(e))
+ // The element has already been considered by inheritance scoping,
+ // and must not be considered by hierarchy scoping
+ elementsToBeRemovedFromTheScope.add(e);
+ tmpFlatListOfVisibleElements.addAll(l) ;
+ }
+ l.removeAll(elementsToBeRemovedFromTheScope) ;
+ }
+ }
+
+ // builds the nested scope base on hierarchy and then inheritance
+ SimpleScope resultScope = null;
+
+ Iterable<IEObjectDescription> iterableIEobjectDescriptions ;
+ for (List<Element> l : tmpHierarchichallyVisibleBehaviors) {
+ if (! l.isEmpty()) {
+ iterableIEobjectDescriptions = Scopes.scopedElementsFor(l) ;
+ resultScope = resultScope != null ? new SimpleScope(resultScope, iterableIEobjectDescriptions) : new SimpleScope(iterableIEobjectDescriptions) ;
+ }
+ }
+ if (! tmpVisibleElementsFromPath.isEmpty()) {
+ iterableIEobjectDescriptions = Scopes.scopedElementsFor(tmpVisibleElementsFromPath) ;
+ resultScope = resultScope != null ? new SimpleScope(resultScope, iterableIEobjectDescriptions) : new SimpleScope(iterableIEobjectDescriptions) ;
+ }
+ for (List<Element> l : tmpHierarchichallyVisibleProperties) {
+ if (! l.isEmpty()) {
+ iterableIEobjectDescriptions = Scopes.scopedElementsFor(l) ;
+ resultScope = resultScope != null ? new SimpleScope(resultScope, iterableIEobjectDescriptions) : new SimpleScope(iterableIEobjectDescriptions) ;
+ }
+ }
+ for (List<Element> l : tmpOwnedOrInheritedVisibleProperties) {
+ if (! l.isEmpty()) {
+ iterableIEobjectDescriptions = Scopes.scopedElementsFor(l) ;
+ resultScope = resultScope != null ? new SimpleScope(resultScope, iterableIEobjectDescriptions) : new SimpleScope(iterableIEobjectDescriptions) ;
+ }
+ }
+
+ // Finally handle specific cases due to the expected type of the expression
+ // - enumeration literals of an Enumeration
+ // - choice alternatives of a ChoiceType
+ Classifier expectedTypeForScoping = new ScopingHelper(ctx.eContainer()).getClassifierForScoping() ;
+ if (VSLContextUtil.isAChoiceType(expectedTypeForScoping)) {
+ List<Element> visibleLiterals = new ArrayList<Element>() ;
+ visibleLiterals.addAll(VSLContextUtil.getChoiceAttribs(expectedTypeForScoping)) ;
+ iterableIEobjectDescriptions = Scopes.scopedElementsFor(visibleLiterals) ;
+ resultScope = resultScope != null ? new SimpleScope(resultScope, iterableIEobjectDescriptions) : new SimpleScope(iterableIEobjectDescriptions) ;
+ }
+ //else if (VSLContextUtil.isATupleType(expectedTypeForScoping)) {
+ // visibleElements.addAll(VSLContextUtil.getTupleAttribs(expectedTypeForScoping)) ;
+ //}
+ else if (expectedTypeForScoping instanceof Enumeration) {
+ List<Element> visibleLiterals = new ArrayList<Element>() ;
+ visibleLiterals.addAll(((Enumeration)expectedTypeForScoping).getOwnedLiterals()) ;
+ iterableIEobjectDescriptions = Scopes.scopedElementsFor(visibleLiterals) ;
+ resultScope = resultScope != null ? new SimpleScope(resultScope, iterableIEobjectDescriptions) : new SimpleScope(iterableIEobjectDescriptions) ;
+ }
+
+ return resultScope != null ? resultScope : new SimpleScope(Scopes.scopedElementsFor(new ArrayList<Element>())) ;
+ }
+
+ /* ****************************************************
+ *
+ * Scope for names of time observation
+ *
+ **************************************************** */
+
+ public IScope scope_InstantObsName_instantId (InstantObsName ctx, EReference ref) {
+ List<Element> tmpFlatListOfVisibleElements = new ArrayList<Element>() ;
+
+ // retrieves any hierarchically visible properties from context (not based on inheritance)
+ Element context = VSLJavaValidator.getContextElement() ;
+ List<List<Element>> tmpHierarchichallyVisibleElements = new ArrayList<List<Element>>() ;
+
+ // In the case where a path (qualified name prefix) has been specified,
+ // retrieves visible elements from this name space
+ List<Element> tmpVisibleElementsFromPath = new ArrayList<Element>() ;
+ if (ctx.getPath() != null) {
+ QualifiedName qualifiedName = ctx.getPath() ;
+ while (qualifiedName.getRemaining() != null) {
+ qualifiedName = qualifiedName.getRemaining() ;
+ }
+ Namespace nearestNamespace = qualifiedName.getPath() ;
+ if (nearestNamespace != null) {
+ List<Element> tmpVisiblePropertiesFromPath = new ArrayList<Element>() ;
+ tmpVisiblePropertiesFromPath.addAll(ScopingVisitors.ownedAndImportedInstantObservations.visit(nearestNamespace)) ;
+ for (Element e : tmpVisiblePropertiesFromPath) {
+ if (! tmpFlatListOfVisibleElements.contains(e))
+ tmpVisibleElementsFromPath.add(e) ;
+ }
+ }
+ }
+ else {
+ tmpHierarchichallyVisibleElements.addAll(ScopingVisitors.hierarchichallyAccessibleInstantObservations.visit(context)) ;
+ for (List<Element> l : tmpHierarchichallyVisibleElements) {
+ List<Element> elementsToBeRemovedFromTheScope = new ArrayList<Element>() ;
+ for (Element e : l) {
+ if (tmpFlatListOfVisibleElements.contains(e))
+ // The element has already been considered by inheritance scoping,
+ // and must not be considered by hierarchy scoping
+ elementsToBeRemovedFromTheScope.add(e);
+ tmpFlatListOfVisibleElements.addAll(l) ;
+ }
+ l.removeAll(elementsToBeRemovedFromTheScope) ;
+ }
+ }
+
+ // builds the nested scope base on hierarchy and then inheritance
+ SimpleScope resultScope = null;
+
+ Iterable<IEObjectDescription> iterableIEobjectDescriptions ;
+ if (! tmpVisibleElementsFromPath.isEmpty()) {
+ iterableIEobjectDescriptions = Scopes.scopedElementsFor(tmpVisibleElementsFromPath) ;
+ resultScope = resultScope != null ? new SimpleScope(resultScope, iterableIEobjectDescriptions) : new SimpleScope(iterableIEobjectDescriptions) ;
+ }
+ for (List<Element> l : tmpHierarchichallyVisibleElements) {
+ if (! l.isEmpty()) {
+ iterableIEobjectDescriptions = Scopes.scopedElementsFor(l) ;
+ resultScope = resultScope != null ? new SimpleScope(resultScope, iterableIEobjectDescriptions) : new SimpleScope(iterableIEobjectDescriptions) ;
+ }
+ }
+
+ return resultScope != null ? resultScope : new SimpleScope(Scopes.scopedElementsFor(new ArrayList<Element>())) ;
+
+ }
+
+ /* ****************************************************
+ *
+ * Scope for names of duration observation
+ *
+ **************************************************** */
+
+
+ public IScope scope_DurationObsName_durationId (DurationObsName ctx, EReference ref) {
+ List<Element> tmpFlatListOfVisibleElements = new ArrayList<Element>() ;
+
+ // retrieves any hierarchically visible properties from context (not based on inheritance)
+ Element context = VSLJavaValidator.getContextElement() ;
+ List<List<Element>> tmpHierarchichallyVisibleElements = new ArrayList<List<Element>>() ;
+ tmpHierarchichallyVisibleElements.addAll(ScopingVisitors.hierarchichallyAccessibleDurationObservations.visit(context)) ;
+ for (List<Element> l : tmpHierarchichallyVisibleElements) {
+ List<Element> elementsToBeRemovedFromTheScope = new ArrayList<Element>() ;
+ for (Element e : l) {
+ if (tmpFlatListOfVisibleElements.contains(e))
+ // The element has already been considered by inheritance scoping,
+ // and must not be considered by hierarchy scoping
+ elementsToBeRemovedFromTheScope.add(e);
+ tmpFlatListOfVisibleElements.addAll(l) ;
+ }
+ l.removeAll(elementsToBeRemovedFromTheScope) ;
+ }
+
+ // In the case where a path (qualified name prefix) has been specified,
+ // retrieves visible elements from this name space
+ List<Element> tmpVisibleElementsFromPath = new ArrayList<Element>() ;
+ if (ctx.getPath() != null) {
+ QualifiedName qualifiedName = ctx.getPath() ;
+ while (qualifiedName.getRemaining() != null) {
+ qualifiedName = qualifiedName.getRemaining() ;
+ }
+ Namespace nearestNamespace = qualifiedName.getPath() ;
+ if (nearestNamespace != null) {
+ List<Element> tmpVisiblePropertiesFromPath = new ArrayList<Element>() ;
+ tmpVisiblePropertiesFromPath.addAll(ScopingVisitors.ownedAndImportedDurationObservations.visit(nearestNamespace)) ;
+ for (Element e : tmpVisiblePropertiesFromPath) {
+ if (! tmpFlatListOfVisibleElements.contains(e))
+ tmpVisibleElementsFromPath.add(e) ;
+ }
+ }
+ }
+
+ // builds the nested scope base on hierarchy and then inheritance
+ SimpleScope resultScope = null;
+
+ Iterable<IEObjectDescription> iterableIEobjectDescriptions ;
+ if (! tmpVisibleElementsFromPath.isEmpty()) {
+ iterableIEobjectDescriptions = Scopes.scopedElementsFor(tmpVisibleElementsFromPath) ;
+ resultScope = resultScope != null ? new SimpleScope(resultScope, iterableIEobjectDescriptions) : new SimpleScope(iterableIEobjectDescriptions) ;
+ }
+ for (List<Element> l : tmpHierarchichallyVisibleElements) {
+ if (! l.isEmpty()) {
+ iterableIEobjectDescriptions = Scopes.scopedElementsFor(l) ;
+ resultScope = resultScope != null ? new SimpleScope(resultScope, iterableIEobjectDescriptions) : new SimpleScope(iterableIEobjectDescriptions) ;
+ }
+ }
+
+ return resultScope != null ? resultScope : new SimpleScope(Scopes.scopedElementsFor(new ArrayList<Element>())) ;
+ }
+
+ /* ****************************************************
+ *
+ * Scope for data types (used to type local variables)
+ *
+ **************************************************** */
+
+ public IScope scope_DataTypeName_type (DataTypeName ctx, EReference ref) {
+ List<Element> tmpFlatListOfVisibleElements = new ArrayList<Element>() ;
+
+ // retrieves any hierarchically visible properties from context (not based on inheritance)
+ Element context = VSLJavaValidator.getContextElement() ;
+ List<List<Element>> tmpHierarchichallyVisibleElements = new ArrayList<List<Element>>() ;
+ tmpHierarchichallyVisibleElements.addAll(ScopingVisitors.hierarchichallyAccessibleDataTypes.visit(context)) ;
+ for (List<Element> l : tmpHierarchichallyVisibleElements) {
+ List<Element> elementsToBeRemovedFromTheScope = new ArrayList<Element>() ;
+ for (Element e : l) {
+ if (tmpFlatListOfVisibleElements.contains(e))
+ // The element has already been considered by inheritance scoping,
+ // and must not be considered by hierarchy scoping
+ elementsToBeRemovedFromTheScope.add(e);
+ tmpFlatListOfVisibleElements.addAll(l) ;
+ }
+ l.removeAll(elementsToBeRemovedFromTheScope) ;
+ }
+
+ // In the case where a path (qualified name prefix) has been specified,
+ // retrieves visible elements from this name space
+ List<Element> tmpVisibleElementsFromPath = new ArrayList<Element>() ;
+ if (ctx.getPath() != null) {
+ QualifiedName qualifiedName = ctx.getPath() ;
+ while (qualifiedName.getRemaining() != null) {
+ qualifiedName = qualifiedName.getRemaining() ;
+ }
+ Namespace nearestNamespace = qualifiedName.getPath() ;
+ if (nearestNamespace != null) {
+ List<Element> tmpVisiblePropertiesFromPath = new ArrayList<Element>() ;
+ tmpVisiblePropertiesFromPath.addAll(ScopingVisitors.ownedAndImportedDataTypes.visit(nearestNamespace)) ;
+ for (Element e : tmpVisiblePropertiesFromPath) {
+ if (! tmpFlatListOfVisibleElements.contains(e))
+ tmpVisibleElementsFromPath.add(e) ;
+ }
+ }
+ }
+
+ // builds the nested scope base on hierarchy and then inheritance
+ SimpleScope resultScope = null;
+
+ Iterable<IEObjectDescription> iterableIEobjectDescriptions ;
+ if (! tmpVisibleElementsFromPath.isEmpty()) {
+ iterableIEobjectDescriptions = Scopes.scopedElementsFor(tmpVisibleElementsFromPath) ;
+ resultScope = resultScope != null ? new SimpleScope(resultScope, iterableIEobjectDescriptions) : new SimpleScope(iterableIEobjectDescriptions) ;
+ }
+ for (List<Element> l : tmpHierarchichallyVisibleElements) {
+ if (! l.isEmpty()) {
+ iterableIEobjectDescriptions = Scopes.scopedElementsFor(l) ;
+ resultScope = resultScope != null ? new SimpleScope(resultScope, iterableIEobjectDescriptions) : new SimpleScope(iterableIEobjectDescriptions) ;
+ }
+ }
+
+ return resultScope != null ? resultScope : new SimpleScope(Scopes.scopedElementsFor(new ArrayList<Element>())) ;
+ }
+
+ /* ****************************************************
+ *
+ * Scope for PropertyCallExpression
+ *
+ **************************************************** */
+
+ public IScope scope_PropertyCallExpression_property (PropertyCallExpression ctx, EReference ref) {
+ SimpleScope resultScope = null ;
+ List<List<Element>> visibleProperties = new ArrayList<List<Element>>() ;
+ Classifier expectedTypeForScoping = null ;
+ if (ctx.eContainer() instanceof PrimaryExpression) {
+ PrimaryExpression primary = (PrimaryExpression)ctx.eContainer() ;
+ if (primary.getPrefix() instanceof NameOrChoiceOrBehaviorCall) {
+ NameOrChoiceOrBehaviorCall n = (NameOrChoiceOrBehaviorCall) primary.getPrefix() ;
+ if (n.getId() instanceof Property) {
+ expectedTypeForScoping = (Classifier)((Property)n.getId()).getType() ;
+ }
+ else
+ expectedTypeForScoping = new ScopingHelper(ctx.eContainer()).getClassifierForScoping() ;
+ }
+ else
+ expectedTypeForScoping = new ScopingHelper(ctx.eContainer()).getClassifierForScoping() ;
+ }
+ else
+ expectedTypeForScoping = new ScopingHelper(ctx.eContainer()).getClassifierForScoping() ;
+ if (expectedTypeForScoping != null) {
+ visibleProperties.addAll(ScopingVisitors.ownedOrInheritedAttributes.visit(expectedTypeForScoping)) ;
+ Iterable<IEObjectDescription> iterableIEobjectDescriptions ;
+ for (List<Element> l : visibleProperties) {
+ iterableIEobjectDescriptions = Scopes.scopedElementsFor(l) ;
+ resultScope = resultScope != null ? new SimpleScope(resultScope, iterableIEobjectDescriptions) : new SimpleScope(iterableIEobjectDescriptions) ;
+ }
+ }
+ return resultScope != null ? resultScope : new SimpleScope(Scopes.scopedElementsFor(new ArrayList<EObject>())) ;
+ }
+
+
+ /* ****************************************************
+ *
+ * Scope for OperationCallExpression
+ *
+ **************************************************** */
+
+ public IScope scope_OperationCallExpression_operation (OperationCallExpression ctx, EReference ref) {
+ SimpleScope resultScope = null ;
+ List<List<Element>> visibleOperations = new ArrayList<List<Element>>() ;
+ Classifier expectedTypeForScoping = null ;
+ if (ctx.eContainer() instanceof PrimaryExpression) {
+ PrimaryExpression primary = (PrimaryExpression)ctx.eContainer() ;
+ if (primary.getPrefix() instanceof NameOrChoiceOrBehaviorCall) {
+ NameOrChoiceOrBehaviorCall n = (NameOrChoiceOrBehaviorCall) primary.getPrefix() ;
+ if (n.getId() instanceof Property) {
+ expectedTypeForScoping = (Classifier)((Property)n.getId()).getType() ;
+ }
+ else
+ expectedTypeForScoping = new ScopingHelper(ctx.eContainer()).getClassifierForScoping() ;
+ }
+ else
+ expectedTypeForScoping = new ScopingHelper(ctx.eContainer()).getClassifierForScoping() ;
+ }
+ else
+ expectedTypeForScoping = new ScopingHelper(ctx.eContainer()).getClassifierForScoping() ;
+ if (expectedTypeForScoping != null) {
+ visibleOperations.addAll(ScopingVisitors.ownedOrInheritedOperations.visit(expectedTypeForScoping)) ;
+ Iterable<IEObjectDescription> iterableIEobjectDescriptions ;
+ for (List<Element> l : visibleOperations) {
+ iterableIEobjectDescriptions = Scopes.scopedElementsFor(l) ;
+ resultScope = resultScope != null ? new SimpleScope(resultScope, iterableIEobjectDescriptions) : new SimpleScope(iterableIEobjectDescriptions) ;
+ }
+ }
+ return resultScope != null ? resultScope : new SimpleScope(Scopes.scopedElementsFor(new ArrayList<EObject>())) ;
+ }
+
+ /* ****************************************************
+ *
+ * Scope for ValueNamePair
+ *
+ **************************************************** */
+
+ public IScope scope_ValueNamePair_property (ValueNamePair ctx, EReference ref) {
+ SimpleScope resultScope = null ;
+ Iterable<IEObjectDescription> iterableIEobjectDescriptions ;
+
+ Classifier expectedTypeForScoping = new ScopingHelper(ctx.eContainer()).getClassifierForScoping() ;
+ if (VSLContextUtil.isAChoiceType(expectedTypeForScoping)) {
+ List<NamedElement> visibleProperties = new ArrayList<NamedElement>() ;
+ visibleProperties.addAll(VSLContextUtil.getChoiceAttribs(expectedTypeForScoping)) ;
+ iterableIEobjectDescriptions = Scopes.scopedElementsFor(visibleProperties) ;
+ resultScope = new SimpleScope(iterableIEobjectDescriptions) ;
+ }
+ else if (VSLContextUtil.isATupleType(expectedTypeForScoping)) {
+ List<List<Element>> visibleProperties = new ArrayList<List<Element>>() ;
+ visibleProperties.addAll(ScopingVisitors.ownedOrInheritedTupleAttributes.visit(expectedTypeForScoping)) ;
+ for (List<Element> l : visibleProperties) {
+ iterableIEobjectDescriptions = Scopes.scopedElementsFor(l) ;
+ resultScope = resultScope != null ? new SimpleScope(resultScope, iterableIEobjectDescriptions) : new SimpleScope(iterableIEobjectDescriptions) ;
+ }
+ }
+ else { // A tuple has been specified, and the expected type is not a tuple or choice type
+ // We put in the scope all the properties of NFP_Duration, since it is the only tuple type involved in operators in this implementation of VSL
+ // TODO This solution is temporary and MUST be generalized to any operator.
+ List<List<Element>> visibleProperties = new ArrayList<List<Element>>() ;
+ visibleProperties.addAll(ScopingVisitors.ownedOrInheritedTupleAttributes.visit((Classifier)VSLJavaValidator._nfp_duration)) ;
+ for (List<Element> l : visibleProperties) {
+ iterableIEobjectDescriptions = Scopes.scopedElementsFor(l) ;
+ resultScope = resultScope != null ? new SimpleScope(resultScope, iterableIEobjectDescriptions) : new SimpleScope(iterableIEobjectDescriptions) ;
+ }
+ }
+
+ return resultScope != null ? resultScope : new SimpleScope(Scopes.scopedElementsFor(new ArrayList<Element>())) ;
+ }
+
+
+
+ /////////////////
+ // UTILS
+ /////////////////
+
+ public static List<EObject> getVisibleNamesAsAList(NameOrChoiceOrBehaviorCall ctx) {
+ List<EObject> allVisibleNames = new ArrayList<EObject>() ;
+
+ if (ctx.getPath() != null) {
+ QualifiedName qualifiedName = ctx.getPath() ;
+ while (qualifiedName.getRemaining() != null) {
+ qualifiedName = qualifiedName.getRemaining() ;
+ }
+ Namespace nearestNamespace = qualifiedName.getPath() ;
+ if (nearestNamespace != null) {
+ allVisibleNames.addAll(nearestNamespace.getOwnedMembers()) ;
+ }
+ }
+
+ return allVisibleNames ;
+ }
+
+ public static IScope getVisibleNamesAsAScope(IScope outer, Element context) {
+ IScope result = null ;
+ if (outer != null) {
+ for (Element currentContext : context.getOwnedElements()) {
+ List<Element> ownedElements = currentContext.getOwnedElements() ;
+ List<NamedElement> ownedNamedElements = new ArrayList<NamedElement>() ;
+ for (Element ownedElement : ownedElements) {
+ if (ownedElement instanceof NamedElement) {
+ ownedNamedElements.add((NamedElement)ownedElement) ;
+ }
+ }
+ Iterable<IEObjectDescription> localIterableIEobjectDescriptions = Scopes.scopedElementsFor(ownedNamedElements) ;
+ result = new SimpleScope(outer, localIterableIEobjectDescriptions) ;
+ }
+ }
+ else {
+ List<Element> contextHierarchy = new ArrayList<Element>() ;
+ contextHierarchy.add(context) ;
+ Element tmpContext = context.getOwner() ;
+ while (tmpContext != null) {
+ contextHierarchy.add(0, tmpContext) ;
+ tmpContext = tmpContext.getOwner() ;
+ }
+ for (Element currentContext : contextHierarchy) {
+ List<Element> ownedElements = currentContext.getOwnedElements() ;
+ List<NamedElement> ownedNamedElements = new ArrayList<NamedElement>() ;
+ for (Element ownedElement : ownedElements) {
+ if (ownedElement instanceof NamedElement) {
+ ownedNamedElements.add((NamedElement)ownedElement) ;
+ }
+ }
+ Iterable<IEObjectDescription> locallyVisibleElements = Scopes.scopedElementsFor(ownedNamedElements) ;
+ if (result == null) {
+ result = new SimpleScope(locallyVisibleElements) ;
+ }
+ else {
+ result = new SimpleScope(result, locallyVisibleElements) ;
+ }
+ }
+ }
+ if (context instanceof NamedElement) {
+ List<NamedElement> self = new ArrayList<NamedElement>() ;
+ self.add((NamedElement)context) ;
+ Iterable<IEObjectDescription> locallyVisibleElements = Scopes.scopedElementsFor(self) ;
+ result = new SimpleScope(result, locallyVisibleElements) ;
+ }
+ return result ;
+ }
+
+ private static IScope getVisibleNamesAsAScopeWithAccountForInheritance(IScope outer, Classifier type, List<Visitor<NamedElement, Classifier>> visitors) {
+ IScope result = null ;
+
+ // build the classifier inheritance hierarchy
+
+ List<List<Classifier>> inheritanceStructure = new ArrayList<List<Classifier>>() ;
+ List<Classifier> tmpList = new ArrayList<Classifier>() ;
+ tmpList.add(type) ;
+
+ do {
+ inheritanceStructure.add(tmpList) ;
+ List<Classifier> localClassifierList = new ArrayList<Classifier>() ;
+ for (Classifier currentClassifier : tmpList) {
+ for (Classifier general : currentClassifier.getGenerals()) {
+ localClassifierList.add(general) ;
+ }
+ }
+ tmpList = new ArrayList<Classifier>() ;
+ tmpList.addAll(localClassifierList) ;
+ } while (!tmpList.isEmpty());
+
+ // builds the nested scope
+
+ if (! inheritanceStructure.isEmpty()) {
+ List<NamedElement> visibleProperties = new ArrayList<NamedElement>() ;
+ List<Classifier> currentList = inheritanceStructure.get(inheritanceStructure.size() - 1) ;
+ for (Classifier currentClassifier : currentList) {
+ for (Visitor<NamedElement, Classifier> v : visitors) {
+ visibleProperties.addAll(v.visit(currentClassifier)) ;
+ }
+ }
+ Iterable<IEObjectDescription> visiblePropertiesIterable =
+ Scopes.scopedElementsFor(visibleProperties) ;
+ result = new SimpleScope(visiblePropertiesIterable) ;
+ for (int i = inheritanceStructure.size() - 2 ; i >= 0 ; i--) {
+ visibleProperties = new ArrayList<NamedElement>() ;
+ currentList = inheritanceStructure.get(i) ;
+ for (Classifier currentClassifier : currentList) {
+ for (Visitor<NamedElement, Classifier> v : visitors) {
+ visibleProperties.addAll(v.visit(currentClassifier)) ;
+ }
+ }
+ visiblePropertiesIterable =
+ Scopes.scopedElementsFor(visibleProperties) ;
+ result = new SimpleScope(result, visiblePropertiesIterable) ;
+ }
+ }
+
+ return result ;
+ }
+
+}
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src/org/eclipse/papyrus/marte/vsl/scoping/visitors/ScopingVisitors.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src/org/eclipse/papyrus/marte/vsl/scoping/visitors/ScopingVisitors.java
new file mode 100644
index 00000000000..9f4d7ecdcfe
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src/org/eclipse/papyrus/marte/vsl/scoping/visitors/ScopingVisitors.java
@@ -0,0 +1,600 @@
+/*****************************************************************************
+ * Copyright (c) 2010 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.marte.vsl.scoping.visitors;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EClassifier;
+import org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil;
+import org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil.MetaclassFilter;
+import org.eclipse.papyrus.marte.vsl.validation.VSLJavaValidator;
+import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.ElementImport;
+import org.eclipse.uml2.uml.Generalization;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.Namespace;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.uml2.uml.PackageImport;
+import org.eclipse.uml2.uml.PackageableElement;
+import org.eclipse.uml2.uml.Stereotype;
+import org.eclipse.uml2.uml.UMLPackage;
+
+public class ScopingVisitors {
+
+ private static ScopingVisitors eInstance = new ScopingVisitors() ;
+
+ /////////////////////
+ // Static visitor variables
+ /////////////////////
+
+ public static final Visitor<Namespace, Namespace> importedNamespaces =
+ eInstance.new Visitor_GetImportedNamespaces() ;
+ public static final Visitor<Namespace, Namespace> ownedAndImportedNamespaces =
+ eInstance.new Visitor_GetOwnedNamespacesAndImportedNamespaces() ;
+ public static final Visitor<Element, Namespace> ownedAndImportedProperties =
+ eInstance.new Visitor_GetOwnedAndImportedProperties() ;
+ public static final Visitor<Element, Namespace> ownedAndImportedBehaviors =
+ eInstance.new Visitor_GetOwnedAndImportedBehaviors() ;
+ public static final Visitor<Element, Namespace> ownedAndImportedEnumerationLiterals =
+ eInstance.new Visitor_GetOwnedAndImportedEnumerationLiterals() ;
+ public static final Visitor<Element, Namespace> ownedAndImportedInstantObservations =
+ eInstance.new Visitor_GetOwnedAndImportedInstantObservations() ;
+ public static final Visitor<Element, Namespace> ownedAndImportedDurationObservations =
+ eInstance.new Visitor_GetOwnedAndImportedDurationObservations() ;
+ public static final Visitor<Element, Namespace> ownedAndImportedDataTypes =
+ eInstance.new Visitor_GetOwnedAndImportedDataTypes() ;
+ public static final Visitor<List<Element>, Classifier> ownedOrInheritedAttributes =
+ eInstance.new Visitor_GetOwnedOrInheritedAttributes() ;
+ public static final Visitor<List<Element>, Classifier> ownedOrInheritedTupleAttributes =
+ eInstance.new Visitor_GetOwnedOrInheritedTupleAttributes() ;
+ public static final Visitor<List<Element>, Classifier> ownedOrInheritedOperations =
+ eInstance.new Visitor_GetOwnedOrInheritedOperations() ;
+ public static final Visitor<List<Element>, Element> hierarchichallyAccessibleProperties =
+ eInstance.new Visitor_GetHierarchichallyAccessibleProperties() ;
+ public static final Visitor<List<Element>, Element> hierarchichallyAccessibleBehaviors =
+ eInstance.new Visitor_GetHierarchichallyAccessibleBehaviors() ;
+ public static final Visitor<List<Element>, Element> hierarchichallyAccessibleInstantObservations =
+ eInstance.new Visitor_GetHierarchichallyAccessibleInstantObservations() ;
+ public static final Visitor<List<Element>, Element> hierarchichallyAccessibleDurationObservations =
+ eInstance.new Visitor_GetHierarchichallyAccessibleDurationObservations() ;
+ public static final Visitor<List<Element>, Element> hierarchichallyAccessibleDataTypes =
+ eInstance.new Visitor_GetHierarchichallyAccessibleDataTypes() ;
+ public static final Visitor<Element, Namespace> recursivelyownedAndImportedInstantObservations =
+ eInstance.new Visitor_getRecursivelyOwnedAndImportedInstantObservations() ;
+ public static final Visitor<Element, Namespace> recursivelyownedAndImportedDurationObservations =
+ eInstance.new Visitor_getRecursivelyOwnedAndImportedDurationObservations() ;
+
+ /////////////////////
+ // Private visitor classes
+ /////////////////////
+
+ private abstract class Visitor_GetOwnedAndImportedElements implements Visitor<Element, Namespace> {
+
+ protected MetaclassFilter filter = null ;
+
+ protected abstract void instantiateFilter() ;
+
+
+ public List<Element> visit(Namespace visited) {
+ this.instantiateFilter() ;
+ List<Element> visibleElements = new ArrayList<Element>() ;
+ // first retrieves imported properties
+ for (ElementImport eImport : visited.getElementImports()) {
+ if (filter.isInstance(eImport.getImportedElement()))
+ visibleElements.add(eImport.getImportedElement()) ;
+ }
+ // then retrieves owned properties
+ for (NamedElement n : visited.getOwnedMembers()) {
+ if (filter.isInstance(n))
+ visibleElements.add(n) ;
+ }
+
+ return visibleElements;
+ }
+
+ }
+
+ public static class Visitor_GetOwnedAndImportedStereotypeInstances {
+
+ public static List<Element> visit(Namespace visited, Stereotype appliedStereotype) {
+ List<Element> visibleElements = new ArrayList<Element>() ;
+ if (appliedStereotype == null)
+ return visibleElements ;
+
+ // first retrieves imported stereotype instances
+ for (ElementImport eImport : visited.getElementImports()) {
+ if (eImport.getImportedElement().
+ getStereotypeApplication(appliedStereotype) != null)
+ visibleElements.add(eImport.getImportedElement()) ;
+ }
+ // then retrieves owned stereotype instances
+ for (NamedElement n : visited.getOwnedMembers()) {
+ if (n.getStereotypeApplication(appliedStereotype) != null)
+ visibleElements.add(n) ;
+ }
+
+ return visibleElements;
+ }
+ }
+
+ public static class Visitor_GetRecursivelyOwnedAndImportedStereotypeInstances {
+ public static List<Element> visit(Namespace visited, Stereotype appliedStereotype) {
+ // the customization consists in proposing nothing. Proposals are handled by other methods.
+ List<Element> elements = new ArrayList<Element>() ;
+ elements.addAll(getRecursivelyOwnedStereotypeInstances(VSLJavaValidator.getModel(), appliedStereotype)) ;
+ elements.addAll(getRecursivelyImportedStereotypeInstances(VSLJavaValidator.getModel(), appliedStereotype)) ;
+ return elements ;
+ }
+ }
+
+ private static List<Element> getRecursivelyOwnedStereotypeInstances(Namespace context, Stereotype appliedStereotype) {
+ List<Element> recursivelyOwnedStereotypeInstances = new ArrayList<Element>();
+ List<Element> allOwnedElements = context.getOwnedElements() ;
+ for (Element e : allOwnedElements) {
+ if (e.getStereotypeApplication(appliedStereotype) != null)
+ recursivelyOwnedStereotypeInstances.add(e) ;
+ if (e instanceof Namespace)
+ recursivelyOwnedStereotypeInstances.addAll(getRecursivelyOwnedStereotypeInstances((Namespace)e, appliedStereotype)) ;
+ }
+ return recursivelyOwnedStereotypeInstances ;
+ }
+
+ private static List<Element> getRecursivelyImportedStereotypeInstances(Namespace context, Stereotype appliedStereotype) {
+ List<Element> recursivelyImportedStereotypeInstances = new ArrayList<Element>() ;
+
+ List<Package> importedPackages = context.getImportedPackages() ;
+ for (Package p : importedPackages) {
+ recursivelyImportedStereotypeInstances.addAll(getRecursivelyOwnedStereotypeInstances(p, appliedStereotype)) ;
+ }
+
+ return recursivelyImportedStereotypeInstances ;
+ }
+
+ public static class Visitor_GetRecursivelyOwnedAndImportedMetaclassInstances {
+ public static List<Element> visit(Namespace visited, org.eclipse.uml2.uml.Class metaclass) {
+ // the customization consists in proposing nothing. Proposals are handled by other methods.
+ List<Element> elements = new ArrayList<Element>() ;
+ elements.addAll(getRecursivelyOwnedMetaclassInstances(VSLJavaValidator.getModel(), metaclass)) ;
+ elements.addAll(getRecursivelyImportedMetaclassInstances(VSLJavaValidator.getModel(), metaclass)) ;
+ return elements ;
+ }
+
+ public static List<Element> visit(Namespace visited, EClass metaclass) {
+ // the customization consists in proposing nothing. Proposals are handled by other methods.
+ List<Element> elements = new ArrayList<Element>() ;
+ elements.addAll(getRecursivelyOwnedMetaclassInstances(VSLJavaValidator.getModel(), metaclass)) ;
+ elements.addAll(getRecursivelyImportedMetaclassInstances(VSLJavaValidator.getModel(), metaclass)) ;
+ return elements ;
+ }
+ }
+
+ private static List<Element> getRecursivelyOwnedMetaclassInstances(Namespace context, org.eclipse.uml2.uml.Class metaclass) {
+ List<Element> recursivelyOwnedMetaclassInstances = new ArrayList<Element>();
+ List<Element> allOwnedElements = context.getOwnedElements() ;
+
+ if (metaclass == null)
+ return recursivelyOwnedMetaclassInstances ;
+
+ EClass namedElementEClass = UMLPackage.eINSTANCE.getNamedElement() ;
+ EClassifier expectedEClass = UMLPackage.eINSTANCE.getEClassifier(metaclass.getName()) ;
+
+ if (expectedEClass == null)
+ return recursivelyOwnedMetaclassInstances ;
+
+ for (Element n : context.getOwnedElements()) {
+ if (expectedEClass.isInstance(n))
+ recursivelyOwnedMetaclassInstances.add(n) ;
+ if (n instanceof Namespace) {
+ recursivelyOwnedMetaclassInstances.addAll(getRecursivelyOwnedMetaclassInstances((Namespace)n, metaclass)) ;
+ }
+ }
+
+ return recursivelyOwnedMetaclassInstances ;
+ }
+
+ private static List<Element> getRecursivelyOwnedMetaclassInstances(Namespace context, EClass expectedEClass) {
+ List<Element> recursivelyOwnedMetaclassInstances = new ArrayList<Element>();
+
+ if (expectedEClass == null)
+ return recursivelyOwnedMetaclassInstances ;
+
+ for (Element n : context.getOwnedElements()) {
+ if (expectedEClass.isInstance(n))
+ recursivelyOwnedMetaclassInstances.add(n) ;
+ if (n instanceof Namespace) {
+ recursivelyOwnedMetaclassInstances.addAll(getRecursivelyOwnedMetaclassInstances((Namespace)n, expectedEClass)) ;
+ }
+ }
+
+ return recursivelyOwnedMetaclassInstances ;
+ }
+
+ private static List<Element> getRecursivelyImportedMetaclassInstances(Namespace context, org.eclipse.uml2.uml.Class metaclass) {
+ List<Element> recursivelyImportedMetaclassInstances = new ArrayList<Element>() ;
+
+ List<Package> importedPackages = context.getImportedPackages() ;
+ for (Package p : importedPackages) {
+ recursivelyImportedMetaclassInstances.addAll(getRecursivelyOwnedMetaclassInstances(p, metaclass)) ;
+ }
+
+ return recursivelyImportedMetaclassInstances ;
+ }
+
+ private static List<Element> getRecursivelyImportedMetaclassInstances(Namespace context, EClass metaclass) {
+ List<Element> recursivelyImportedMetaclassInstances = new ArrayList<Element>() ;
+
+ List<Package> importedPackages = context.getImportedPackages() ;
+ for (Package p : importedPackages) {
+ recursivelyImportedMetaclassInstances.addAll(getRecursivelyOwnedMetaclassInstances(p, metaclass)) ;
+ }
+
+ return recursivelyImportedMetaclassInstances ;
+ }
+
+ public static class Visitor_GetOwnedAndImportedMetaclassInstances {
+
+ public static List<Element> visit(Namespace visited, org.eclipse.uml2.uml.Class expectedMetaclass) {
+ List<Element> visibleElements = new ArrayList<Element>() ;
+ if (expectedMetaclass == null)
+ return visibleElements ;
+
+ EClass namedElementEClass = UMLPackage.eINSTANCE.getNamedElement() ;
+ EClassifier expectedEClass = UMLPackage.eINSTANCE.getEClassifier(expectedMetaclass.getName()) ;
+
+ if (expectedEClass == null)
+ return visibleElements ;
+
+ // first retrieves imported stereotype instances
+ for (ElementImport eImport : visited.getElementImports()) {
+ if (expectedEClass.isInstance(eImport.getImportedElement()) &&
+ namedElementEClass.isInstance(eImport.getImportedElement()))
+ visibleElements.add(eImport.getImportedElement()) ;
+ }
+ // then retrieves owned stereotype instances
+ for (NamedElement n : visited.getOwnedMembers()) {
+ if (expectedEClass.isInstance(n))
+ visibleElements.add(n) ;
+ }
+
+ return visibleElements;
+ }
+ }
+
+ private class Visitor_GetOwnedAndImportedProperties extends Visitor_GetOwnedAndImportedElements {
+
+
+ protected void instantiateFilter() {
+ this.filter = VSLContextUtil.eInstance.new MetaclassFilter(UMLPackage.eINSTANCE.getProperty()) ;
+ }
+
+ }
+
+ private class Visitor_GetOwnedAndImportedBehaviors extends Visitor_GetOwnedAndImportedElements {
+
+
+ protected void instantiateFilter() {
+ this.filter = VSLContextUtil.eInstance.new MetaclassFilter(UMLPackage.eINSTANCE.getBehavior()) ;
+ }
+
+ }
+
+ private class Visitor_GetOwnedAndImportedEnumerationLiterals extends Visitor_GetOwnedAndImportedElements {
+
+
+ protected void instantiateFilter() {
+ this.filter = VSLContextUtil.eInstance.new MetaclassFilter(UMLPackage.eINSTANCE.getEnumerationLiteral()) ;
+ }
+
+ }
+
+ private class Visitor_GetOwnedAndImportedInstantObservations extends Visitor_GetOwnedAndImportedElements {
+
+
+ protected void instantiateFilter() {
+ this.filter = VSLContextUtil.eInstance.new MetaclassFilter(UMLPackage.eINSTANCE.getTimeObservation()) ;
+ }
+
+ }
+
+ private class Visitor_getRecursivelyOwnedAndImportedInstantObservations extends Visitor_GetOwnedAndImportedInstantObservations {
+
+ @Override
+ public List<Element> visit(Namespace visited) {
+ if (this.filter == null)
+ instantiateFilter() ;
+ List<Element> allInstantObservations = new ArrayList<Element>() ;
+ List<Element> allOwnedElements = visited.allOwnedElements() ;
+ for (Element e : allOwnedElements) {
+ if (this.filter.isInstance(e)) {
+ allInstantObservations.add(e) ;
+ }
+ }
+ for (Package p : visited.getImportedPackages()) {
+ allInstantObservations.addAll(super.visit(p)) ;
+ }
+ return allInstantObservations ;
+ }
+
+ }
+
+ private class Visitor_GetOwnedAndImportedDurationObservations extends Visitor_GetOwnedAndImportedElements {
+
+
+ protected void instantiateFilter() {
+ this.filter = VSLContextUtil.eInstance.new MetaclassFilter(UMLPackage.eINSTANCE.getDurationObservation()) ;
+ }
+
+ }
+
+ private class Visitor_getRecursivelyOwnedAndImportedDurationObservations extends Visitor_GetOwnedAndImportedDurationObservations {
+
+ @Override
+ public List<Element> visit(Namespace visited) {
+ if (this.filter == null)
+ instantiateFilter() ;
+ List<Element> allDurationObservations = new ArrayList<Element>() ;
+ List<Element> allOwnedElements = visited.allOwnedElements() ;
+ for (Element e : allOwnedElements) {
+ if (this.filter.isInstance(e)) {
+ allDurationObservations.add(e) ;
+ }
+ }
+ for (Package p : visited.getImportedPackages()) {
+ allDurationObservations.addAll(super.visit(p)) ;
+ }
+ return allDurationObservations ;
+ }
+
+ }
+
+ private class Visitor_GetOwnedAndImportedDataTypes extends Visitor_GetOwnedAndImportedElements {
+
+
+ protected void instantiateFilter() {
+ this.filter = VSLContextUtil.eInstance.new MetaclassFilter(UMLPackage.eINSTANCE.getDataType()) ;
+ }
+
+ }
+
+ private class Visitor_GetOwnedNamespacesAndImportedNamespaces extends Visitor_GetImportedNamespaces
+ implements Visitor<Namespace, Namespace> {
+
+ public List<Namespace> visit(Namespace visited) {
+ List<Namespace> namespaces = new ArrayList<Namespace>() ;
+ // first retrieves imported namespaces
+ namespaces.addAll(super.visit(visited)) ;
+ // then retrieves owned namespaces
+ for (NamedElement n : visited.getOwnedMembers()) {
+ if (filter.isInstance(n))
+ namespaces.add((Namespace)n) ;
+ }
+ return namespaces;
+ }
+ }
+
+ private class Visitor_GetImportedNamespaces implements Visitor<Namespace, Namespace> {
+
+ protected MetaclassFilter filter = VSLContextUtil.eInstance.new MetaclassFilter(UMLPackage.eINSTANCE.getNamespace()) ;
+
+
+ public List<Namespace> visit(Namespace visited) {
+ List<Namespace> namespaces = new ArrayList<Namespace>() ;
+
+ // retrieves imported namespaces
+ for (PackageImport pImport : visited.getPackageImports()) {
+ namespaces.add(pImport.getImportedPackage()) ;
+ }
+ for (ElementImport eImport : visited.getElementImports()) {
+ if (filter.isInstance(eImport.getImportedElement()))
+ namespaces.add((Namespace)eImport.getImportedElement()) ;
+ }
+
+ return namespaces;
+ }
+ }
+
+ private abstract class Visitor_GetOwnedAndInheritedElements implements Visitor<List<Element>, Classifier> {
+
+ protected Classifier visited ;
+
+ protected abstract List<Element> nestedVisit(Classifier visited) ;
+
+
+ public List<List<Element>> visit(Classifier visited) {
+ this.visited = visited ;
+ List<List<Element>> allAttributes = new ArrayList<List<Element>>() ;
+
+ // build the classifier inheritance hierarchy
+ List<List<Classifier>> inheritanceStructure = new ArrayList<List<Classifier>>() ;
+ List<Classifier> tmpList = new ArrayList<Classifier>() ;
+ tmpList.add(visited) ;
+
+ do {
+ inheritanceStructure.add(0, tmpList) ;
+ List<Classifier> localClassifierList = new ArrayList<Classifier>() ;
+ for (Classifier currentClassifier : tmpList) {
+ for (Generalization generalization : currentClassifier.getGeneralizations()) {
+ localClassifierList.add(generalization.getGeneral()) ;
+ }
+ }
+ tmpList = new ArrayList<Classifier>() ;
+ tmpList.addAll(localClassifierList) ;
+ } while (!tmpList.isEmpty());
+
+ // builds the list of "list of" inherited elements
+ // TODO: take into account visibility for inheritance?
+ if (! inheritanceStructure.isEmpty()) {
+ for (List<Classifier> currentList : inheritanceStructure) {
+ List<Element> visibleElements= new ArrayList<Element>() ;
+ //List<Classifier> currentList = inheritanceStructure.get(inheritanceStructure.size() - 1) ;
+ for (Classifier currentClassifier : currentList) {
+ visibleElements.addAll(this.nestedVisit(currentClassifier)) ;
+ }
+ allAttributes.add(visibleElements) ;
+ }
+ }
+
+ return allAttributes;
+ }
+ }
+
+ private class Visitor_GetOwnedOrInheritedAttributes extends Visitor_GetOwnedAndInheritedElements {
+
+
+ protected List<Element> nestedVisit(Classifier visited) {
+ List<Element> elements = new ArrayList<Element>() ;
+ elements.addAll(visited.getAttributes()) ;
+ return elements;
+ }
+
+ }
+
+ private class Visitor_GetOwnedOrInheritedTupleAttributes extends Visitor_GetOwnedOrInheritedAttributes {
+
+
+ protected List<Element> nestedVisit(Classifier visited) {
+ List<Element> elements = new ArrayList<Element>() ;
+ elements.addAll(VSLContextUtil.getTupleAttribs(visited)) ;
+ return elements;
+ }
+
+
+ public List<List<Element>> visit(Classifier visited) {
+ List<List<Element>> tupleProperties = new ArrayList<List<Element>>() ;
+ if (VSLContextUtil.isATupleType(visited)) {
+ tupleProperties.addAll(super.visit(visited)) ;
+ }
+ return tupleProperties ;
+ }
+
+ }
+
+ private class Visitor_GetOwnedOrInheritedOperations extends Visitor_GetOwnedAndInheritedElements {
+
+
+ protected List<Element> nestedVisit(Classifier visited) {
+ List<Element> elements = new ArrayList<Element>() ;
+ elements.addAll(visited.getOperations()) ;
+ return elements;
+ }
+
+ }
+
+ private abstract class Visitor_GetHierarchichallyAccessibleElements implements Visitor<List<Element>, Element> {
+
+ protected abstract List<Element> nestedVisit(Element context) ;
+
+ public List<List<Element>> visit(Element visited) {
+ List<List<Element>> accessibleElements = new ArrayList<List<Element>>() ;
+
+ List<Element> contextHierarchy = new ArrayList<Element>() ;
+ contextHierarchy.add(visited) ;
+ Element tmpContext = visited.getOwner() ;
+ while (tmpContext != null) {
+ contextHierarchy.add(0, tmpContext) ;
+ tmpContext = tmpContext.getOwner() ;
+ }
+ for (Element currentContext : contextHierarchy) {
+ List<Element> elements = new ArrayList<Element>() ;
+ elements.addAll(this.nestedVisit(currentContext)) ;
+ accessibleElements.add(elements) ;
+ }
+
+ return accessibleElements ;
+ }
+ }
+
+ private class Visitor_GetHierarchichallyAccessibleProperties extends Visitor_GetHierarchichallyAccessibleElements {
+
+ MetaclassFilter filter = VSLContextUtil.eInstance.new MetaclassFilter(UMLPackage.eINSTANCE.getProperty()) ;
+
+
+ protected List<Element> nestedVisit(Element context) {
+ List<Element> accessibleProperties = new ArrayList<Element>() ;
+ for (Element e : context.getOwnedElements()) {
+ if (filter.isInstance(e))
+ accessibleProperties.add(e) ;
+ }
+ return accessibleProperties;
+ }
+
+ }
+
+ private class Visitor_GetHierarchichallyAccessibleBehaviors extends Visitor_GetHierarchichallyAccessibleElements {
+
+ MetaclassFilter filter = VSLContextUtil.eInstance.new MetaclassFilter(UMLPackage.eINSTANCE.getBehavior()) ;
+
+
+ protected List<Element> nestedVisit(Element context) {
+ List<Element> accessibleBehaviors = new ArrayList<Element>() ;
+ for (Element e : context.getOwnedElements()) {
+ if (filter.isInstance(e))
+ accessibleBehaviors.add(e) ;
+ }
+ return accessibleBehaviors;
+ }
+
+ }
+
+ private class Visitor_GetHierarchichallyAccessibleInstantObservations extends Visitor_GetHierarchichallyAccessibleElements {
+
+ MetaclassFilter filter = VSLContextUtil.eInstance.new MetaclassFilter(UMLPackage.eINSTANCE.getTimeObservation()) ;
+
+
+ protected List<Element> nestedVisit(Element context) {
+ List<Element> accessibleInstantObservation = new ArrayList<Element>() ;
+ for (Element e : context.getOwnedElements()) {
+ if (filter.isInstance(e))
+ accessibleInstantObservation.add(e) ;
+ }
+ return accessibleInstantObservation;
+ }
+
+ }
+
+ private class Visitor_GetHierarchichallyAccessibleDataTypes extends Visitor_GetHierarchichallyAccessibleElements {
+
+ MetaclassFilter filter = VSLContextUtil.eInstance.new MetaclassFilter(UMLPackage.eINSTANCE.getDataType()) ;
+
+
+ protected List<Element> nestedVisit(Element context) {
+ List<Element> accessibleDataTypes = new ArrayList<Element>() ;
+ for (Element e : context.getOwnedElements()) {
+ if (filter.isInstance(e))
+ accessibleDataTypes.add(e) ;
+ }
+ return accessibleDataTypes;
+ }
+
+ }
+
+ private class Visitor_GetHierarchichallyAccessibleDurationObservations extends Visitor_GetHierarchichallyAccessibleElements {
+
+ MetaclassFilter filter = VSLContextUtil.eInstance.new MetaclassFilter(UMLPackage.eINSTANCE.getDurationObservation()) ;
+
+
+ protected List<Element> nestedVisit(Element context) {
+ List<Element> accessibleDurationObservations = new ArrayList<Element>() ;
+ for (Element e : context.getOwnedElements()) {
+ if (filter.isInstance(e))
+ accessibleDurationObservations.add(e) ;
+ }
+ return accessibleDurationObservations;
+ }
+
+ }
+}
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src/org/eclipse/papyrus/marte/vsl/scoping/visitors/Visitor.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src/org/eclipse/papyrus/marte/vsl/scoping/visitors/Visitor.java
new file mode 100644
index 00000000000..9595d9d6431
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src/org/eclipse/papyrus/marte/vsl/scoping/visitors/Visitor.java
@@ -0,0 +1,20 @@
+/*****************************************************************************
+ * Copyright (c) 2010 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.marte.vsl.scoping.visitors;
+
+import java.util.List;
+
+public interface Visitor<ReturnType, VisitedKind> {
+ public List<ReturnType> visit(VisitedKind visited) ;
+}
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src/org/eclipse/papyrus/marte/vsl/validation/VSLErrorMessage.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src/org/eclipse/papyrus/marte/vsl/validation/VSLErrorMessage.java
new file mode 100644
index 00000000000..04d340f6a89
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src/org/eclipse/papyrus/marte/vsl/validation/VSLErrorMessage.java
@@ -0,0 +1,162 @@
+/*****************************************************************************
+ * Copyright (c) 2010 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.marte.vsl.validation;
+
+import java.util.List;
+
+public class VSLErrorMessage {
+
+ public static String getUndefinedBinaryOperatorSignatureMessage(
+ String operatorSymbol, String firstOperandTypeName, String secondOperandTypeName) {
+ return "Operator "
+ + operatorSymbol
+ + " is undefined for signature ("
+ + firstOperandTypeName
+ + ", "
+ + secondOperandTypeName
+ + ")" ;
+ }
+
+ public static String getUndefinedUnaryOperatorSignatureMessage(String operatorSymbol,
+ String operandTypeName) {
+ return "Unary operator "
+ + operatorSymbol
+ + " does not apply to type "
+ + operandTypeName ;
+ }
+
+ public static String getUntypedPropertyMessage(String propertyName) {
+ return "Property " + propertyName + " is not typed" ;
+ }
+
+ public static String getMissingArgumentForChosenAlternativeMessage(String chosenAlternativeName,
+ String expectedTypeName) {
+ return "Argument is missing for the chosen alternative "
+ + chosenAlternativeName
+ + ". Expecting a single argument of type "
+ + expectedTypeName ;
+ }
+
+ public static String getTooManyArgumentsForChosenAlternativeMessage(String chosenAlternativeName,
+ String expectedTypeName) {
+ return "Too many arguments for the chosen alternative "
+ + chosenAlternativeName
+ + ". Expecting a single argument of type "
+ + expectedTypeName ;
+ }
+
+ public static String getInvalidArgumentForChosenAlternativeMessage(String chosenAlternativeName,
+ String expectedTypeName, String foundTypeName) {
+ return "Invalid argument for the chosen alternative "
+ + chosenAlternativeName
+ + ". Found an argument of type "
+ + foundTypeName
+ + ". Expecting a single argument of type "
+ + expectedTypeName ;
+ }
+
+ public static String getBehaviorWithoutReturnParameterMessage(String behaviorName) {
+ return "Behavior "
+ + behaviorName
+ + " has no return parameter";
+ }
+
+ public static String getOperationWithoutReturnParameterMessage(String operationName) {
+ return "Operation "
+ + operationName
+ + " has no return parameter";
+ }
+
+ public static String getMissingArgumentsForBehaviorCall(String behaviorName, List<String> expectedTypeNames) {
+ String errorMessage = "Arguments are missing for the call to behavior " ;
+ errorMessage += behaviorName +"(" ;
+ for (int i = 0 ; i < expectedTypeNames.size() ; i++) {
+ if (i>=1)
+ errorMessage+= ", " ;
+ errorMessage+=expectedTypeNames.get(i) ;
+ }
+ errorMessage+=")" ;
+ return errorMessage;
+ }
+
+ public static String getInvalidNumberOfArgumentsForBehaviorCall(String behaviorName, List<String> expectedTypeNames) {
+ String errorMessage = "Invalid number of arguments for the call to behavior " ;
+ errorMessage += behaviorName +"(" ;
+ for (int i = 0 ; i < expectedTypeNames.size() ; i++) {
+ if (i>=1)
+ errorMessage+= ", " ;
+ errorMessage+=expectedTypeNames.get(i) ;
+ }
+ errorMessage+=")" ;
+ return errorMessage;
+ }
+
+ public static String getInvalidNumberOfArgumentsForOperationCall(String operationName, List<String> expectedTypeNames) {
+ String errorMessage = "Invalid number of arguments for the call to operation " ;
+ errorMessage += operationName +"(" ;
+ for (int i = 0 ; i < expectedTypeNames.size() ; i++) {
+ if (i>=1)
+ errorMessage+= ", " ;
+ errorMessage+=expectedTypeNames.get(i) ;
+ }
+ errorMessage+=")" ;
+ return errorMessage;
+ }
+
+ public static String getInvalidArgumentsForBehaviorCall(String behaviorName,
+ List<String> expectedTypeNames, List<String> foundTypeNames) {
+ String errorMessage = "The behavior " ;
+ errorMessage += behaviorName +"(" ;
+ for (int i = 0 ; i < expectedTypeNames.size() ; i++) {
+ if (i>=1)
+ errorMessage+= ", " ;
+ errorMessage+=expectedTypeNames.get(i) ;
+ }
+ errorMessage+=") is not applicable for the arguments (" ;
+ for (int i = 0 ; i < foundTypeNames.size() ; i++) {
+ if (i>=1)
+ errorMessage+= ", " ;
+ errorMessage+=foundTypeNames.get(i) ;
+ }
+ errorMessage += ")" ;
+ return errorMessage;
+ }
+
+ public static String getInvalidArgumentsForOperationCall(String operationName,
+ List<String> expectedTypeNames, List<String> foundTypeNames) {
+ String errorMessage = "The operation " ;
+ errorMessage += operationName +"(" ;
+ for (int i = 0 ; i < expectedTypeNames.size() ; i++) {
+ if (i>=1)
+ errorMessage+= ", " ;
+ errorMessage+=expectedTypeNames.get(i) ;
+ }
+ errorMessage+=") is not applicable for the arguments (" ;
+ for (int i = 0 ; i < foundTypeNames.size() ; i++) {
+ if (i>=1)
+ errorMessage+= ", " ;
+ errorMessage+=foundTypeNames.get(i) ;
+ }
+ errorMessage += ")" ;
+ return errorMessage;
+ }
+
+ public static String getInvalidNumberOfExpressionsInConditionalExpression() {
+ return "Invalid conditional expression. The correct syntax is: <CONDITION> ? <THEN EXPRESSION> : <ELSE EXPRESSION>";
+ }
+
+ public static String getInvalidExpressionType(String expectedTypeName, String foundTypeName) {
+ return "Expecting an expression of type " + expectedTypeName + ". Found an expression of type " + foundTypeName ;
+ }
+}
diff --git a/plugins/marte/org.eclipse.papyrus.marte.vsl/src/org/eclipse/papyrus/marte/vsl/validation/VSLJavaValidator.java b/plugins/marte/org.eclipse.papyrus.marte.vsl/src/org/eclipse/papyrus/marte/vsl/validation/VSLJavaValidator.java
new file mode 100644
index 00000000000..7b69cff1d25
--- /dev/null
+++ b/plugins/marte/org.eclipse.papyrus.marte.vsl/src/org/eclipse/papyrus/marte/vsl/validation/VSLJavaValidator.java
@@ -0,0 +1,1199 @@
+/*****************************************************************************
+ * Copyright (c) 2010 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.marte.vsl.validation;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.uml2.uml.Behavior;
+import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.EnumerationLiteral;
+import org.eclipse.uml2.uml.MultiplicityElement;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.Namespace;
+import org.eclipse.uml2.uml.Operation;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.uml2.uml.Parameter;
+import org.eclipse.uml2.uml.ParameterDirectionKind;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.Stereotype;
+import org.eclipse.uml2.uml.Type;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.papyrus.marte.vsl.extensions.VSLContextUtil;
+import org.eclipse.papyrus.marte.vsl.extensions.VSLTypeInferenceUtil;
+import org.eclipse.papyrus.marte.vsl.scoping.VSLScopeProvider;
+import org.eclipse.papyrus.marte.vsl.scoping.VSLScopeProvider.ScopingHelper;
+import org.eclipse.papyrus.marte.vsl.vSL.AdditiveExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.AndOrXorExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.BooleanLiteralRule;
+import org.eclipse.papyrus.marte.vsl.vSL.CollectionOrTuple;
+import org.eclipse.papyrus.marte.vsl.vSL.ConditionalExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.DateTimeLiteralRule;
+import org.eclipse.papyrus.marte.vsl.vSL.DefaultLiteralRule;
+import org.eclipse.papyrus.marte.vsl.vSL.DurationObsExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.EqualityExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.Expression;
+import org.eclipse.papyrus.marte.vsl.vSL.InstantObsExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.IntegerLiteralRule;
+import org.eclipse.papyrus.marte.vsl.vSL.Interval;
+import org.eclipse.papyrus.marte.vsl.vSL.MultiplicativeExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.NameOrChoiceOrBehaviorCall;
+import org.eclipse.papyrus.marte.vsl.vSL.NullLiteralRule;
+import org.eclipse.papyrus.marte.vsl.vSL.OperationCallExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.PrimaryExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.PropertyCallExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.RealLiteralRule;
+import org.eclipse.papyrus.marte.vsl.vSL.RelationalExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.StringLiteralRule;
+import org.eclipse.papyrus.marte.vsl.vSL.SuffixExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.TimeExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.Tuple;
+import org.eclipse.papyrus.marte.vsl.vSL.UnaryExpression;
+import org.eclipse.papyrus.marte.vsl.vSL.UnlimitedLiteralRule;
+import org.eclipse.papyrus.marte.vsl.vSL.VSLPackage;
+import org.eclipse.papyrus.marte.vsl.vSL.ValueNamePair;
+import org.eclipse.papyrus.marte.vsl.vSL.ValueSpecification;
+import org.eclipse.papyrus.marte.vsl.vSL.VariableDeclaration;
+
+public class VSLJavaValidator extends AbstractVSLJavaValidator {
+
+ private static Namespace model ;
+ private static Element contextElement ;
+ private static Type expectedType ;
+
+ public static Type _integer ;
+ public static Type _unlimitedNatural ;
+ public static Type _real ;
+ public static Type _datetime ;
+ public static Type _boolean ;
+ public static Type _string ;
+ public static Type _nfp_duration ;
+
+ public static Map<String, Type> opSignatures ;
+ public static Map<String, Map<Type,List<Type>>> binaryOpTypeBinding ;
+ public static Map<String, Type> unaryOpTypeBinding ;
+
+ public static void init(Element _contextElement) {
+ contextElement = _contextElement ;
+ if (contextElement != null) {
+ Element elem = contextElement.getOwner() ;
+ while (elem.getOwner() != null) {
+ elem = elem.getOwner() ;
+ }
+ model = (Namespace)elem ;
+ boolean typesResolved = false ;
+ for (Package importedPackage : model.getImportedPackages()) {
+ if (!typesResolved)
+ typesResolved = initPredefinedTypes(importedPackage) ;
+ }
+ if (typesResolved) initPredefinedOpSignatures() ;
+ }
+ }
+
+ /**
+ * @param typeLibrary
+ * @return
+ */
+ private static boolean initPredefinedTypes (Package typeLibrary) {
+ for (Element elem : typeLibrary.allOwnedElements()) {
+ if (elem instanceof Type) {
+ Type t = (Type)elem ;
+ if (t.getQualifiedName().equals("MARTE_Library::MARTE_PrimitivesTypes::Boolean"))
+ _boolean = t ;
+ else if (t.getQualifiedName().equals("MARTE_Library::MARTE_PrimitivesTypes::Integer"))
+ _integer = t ;
+ else if (t.getQualifiedName().equals("MARTE_Library::MARTE_PrimitivesTypes::String"))
+ _string = t ;
+ else if (t.getQualifiedName().equals("MARTE_Library::MARTE_PrimitivesTypes::UnlimitedNatural"))
+ _unlimitedNatural = t ;
+ else if (t.getQualifiedName().equals("MARTE_Library::MARTE_PrimitivesTypes::Real"))
+ _real = t ;
+ else if (t.getQualifiedName().equals("MARTE_Library::MARTE_PrimitivesTypes::DateTime"))
+ _datetime = t ;
+ else if (t.getQualifiedName().equals("MARTE_Library::BasicNFP_Types::NFP_Duration"))
+ _nfp_duration = t;
+ }
+ }
+ return _integer != null &&
+ _unlimitedNatural != null &&
+ _real != null &&
+ _datetime != null &&
+ _boolean != null &&
+ _string != null &&
+ _nfp_duration != null;
+ }
+
+ /**
+ *
+ */
+ private static void initPredefinedOpSignatures() {
+ opSignatures = new HashMap<String, Type>();
+ unaryOpTypeBinding = new HashMap<String, Type>() ;
+ binaryOpTypeBinding = new HashMap<String, Map<Type, List<Type>>>() ;
+
+ //unary ops: +, -, not
+ unaryOpTypeBinding.put("+", _integer) ;
+ unaryOpTypeBinding.put("+", _real) ;
+ unaryOpTypeBinding.put("-", _integer) ;
+ unaryOpTypeBinding.put("-", _real) ;
+ unaryOpTypeBinding.put("not", _boolean) ;
+
+ opSignatures.put("+(" + _integer.getName() + ")", _integer) ; // +(int) : int
+ opSignatures.put("+(" + _real.getName() + ")", _real) ; // +(real) : real
+ opSignatures.put("-(" + _integer.getName() + ")", _integer) ; // -(int) : int
+ opSignatures.put("-(" + _real.getName() + ")", _real) ; // -(real) : real
+ opSignatures.put("not(" + _boolean.getName() + ")", _boolean) ; // not(boolean) : boolean
+
+ //binary ops:
+
+ binaryOpTypeBinding.put("and", new HashMap<Type, List<Type>>()) ;
+ binaryOpTypeBinding.put("or", new HashMap<Type, List<Type>>()) ;
+ binaryOpTypeBinding.put("xor", new HashMap<Type, List<Type>>()) ;
+ binaryOpTypeBinding.put("==", new HashMap<Type, List<Type>>()) ;
+ binaryOpTypeBinding.put("<>", new HashMap<Type, List<Type>>()) ;
+ binaryOpTypeBinding.put("<", new HashMap<Type, List<Type>>()) ;
+ binaryOpTypeBinding.put(">", new HashMap<Type, List<Type>>()) ;
+ binaryOpTypeBinding.put("<=", new HashMap<Type, List<Type>>()) ;
+ binaryOpTypeBinding.put(">=", new HashMap<Type, List<Type>>()) ;
+ binaryOpTypeBinding.put("*", new HashMap<Type, List<Type>>()) ;
+ binaryOpTypeBinding.put("/", new HashMap<Type, List<Type>>()) ;
+ binaryOpTypeBinding.put("mod", new HashMap<Type, List<Type>>()) ;
+ binaryOpTypeBinding.put("+", new HashMap<Type, List<Type>>()) ;
+ binaryOpTypeBinding.put("-", new HashMap<Type, List<Type>>()) ;
+
+ // and, or, xor
+ opSignatures.put("and(" + _boolean.getName() + ',' + _boolean.getName() + ")", _boolean) ;// and(boolean, boolean) : boolean
+ opSignatures.put("or(" + _boolean.getName() + ',' + _boolean.getName() + ")", _boolean) ;// or(boolean, boolean) : boolean
+ opSignatures.put("xor(" + _boolean.getName() + ',' + _boolean.getName() + ")", _boolean) ;// xor(boolean, boolean) : boolean
+ binaryOpTypeBinding.get("and").put(_boolean, new ArrayList<Type>()) ;
+ binaryOpTypeBinding.get("or").put(_boolean, new ArrayList<Type>()) ;
+ binaryOpTypeBinding.get("xor").put(_boolean, new ArrayList<Type>()) ;
+ binaryOpTypeBinding.get("and").get(_boolean).add(_boolean) ;
+ binaryOpTypeBinding.get("or").get(_boolean).add(_boolean) ;
+ binaryOpTypeBinding.get("xor").get(_boolean).add(_boolean) ;
+
+ // ==, <>
+ opSignatures.put("==(" + _integer.getName() + ',' + _integer.getName() + ")", _boolean) ;// ==(int, int) : boolean
+ opSignatures.put("==(" + _real.getName() + ',' + _real.getName() + ")", _boolean) ;// ==(real, real) : boolean
+ opSignatures.put("==(" + _integer.getName() + ',' + _real.getName() + ")", _boolean) ;// ==(int, real) : boolean
+ opSignatures.put("==(" + _real.getName() + ',' + _integer.getName() + ")", _boolean) ;// ==(real, int) : boolean
+ opSignatures.put("==(" + _real.getName() + ',' + _nfp_duration.getName() + ")", _boolean) ;// ==(real, nfp_duration) : boolean
+ opSignatures.put("==(" + _boolean.getName() + ',' + _boolean.getName() + ")", _boolean) ;// ==(boolean, boolean) : boolean
+ opSignatures.put("==(" + _string.getName() + ',' + _string.getName() + ")", _boolean) ;// ==(string, string) : boolean
+ opSignatures.put("==(" + _datetime.getName() + ',' + _datetime.getName() + ")", _boolean) ;// ==(datetime, datetime) : boolean
+ opSignatures.put("<>(" + _integer.getName() + ',' + _integer.getName() + ")", _boolean) ;// <>(int, int) : boolean
+ opSignatures.put("<>(" + _real.getName() + ',' + _real.getName() + ")", _boolean) ;// <>(real, real) : boolean
+ opSignatures.put("<>(" + _integer.getName() + ',' + _real.getName() + ")", _boolean) ;// <>(int, real) : boolean
+ opSignatures.put("<>(" + _real.getName() + ',' + _integer.getName() + ")", _boolean) ;// <>(real, int) : boolean
+ opSignatures.put("<>(" + _real.getName() + ',' + _nfp_duration.getName() + ")", _boolean) ;// ==(real, nfp_duration) : boolean
+ opSignatures.put("<>(" + _boolean.getName() + ',' + _boolean.getName() + ")", _boolean) ;// <>(boolean, boolean) : boolean
+ opSignatures.put("<>(" + _string.getName() + ',' + _string.getName() + ")", _boolean) ;// <>(string, string) : boolean
+ opSignatures.put("<>(" + _datetime.getName() + ',' + _datetime.getName() + ")", _boolean) ;// <>(datetime, datetime) : boolean
+ binaryOpTypeBinding.get("==").put(_integer, new ArrayList<Type>()) ;
+ binaryOpTypeBinding.get("==").put(_real, new ArrayList<Type>()) ;
+ binaryOpTypeBinding.get("==").put(_boolean, new ArrayList<Type>()) ;
+ binaryOpTypeBinding.get("==").put(_string, new ArrayList<Type>()) ;
+ binaryOpTypeBinding.get("==").put(_datetime, new ArrayList<Type>()) ;
+ binaryOpTypeBinding.get("==").get(_integer).add(_integer) ;
+ binaryOpTypeBinding.get("==").get(_integer).add(_real) ;
+ binaryOpTypeBinding.get("==").get(_real).add(_real) ;
+ binaryOpTypeBinding.get("==").get(_real).add(_integer) ;
+ binaryOpTypeBinding.get("==").get(_real).add(_nfp_duration) ;
+ binaryOpTypeBinding.get("==").get(_datetime).add(_datetime) ;
+ binaryOpTypeBinding.get("==").get(_boolean).add(_boolean) ;
+ binaryOpTypeBinding.get("==").get(_string).add(_string) ;
+ binaryOpTypeBinding.get("<>").put(_integer, new ArrayList<Type>()) ;
+ binaryOpTypeBinding.get("<>").put(_real, new ArrayList<Type>()) ;
+ binaryOpTypeBinding.get("<>").put(_boolean, new ArrayList<Type>()) ;
+ binaryOpTypeBinding.get("<>").put(_string, new ArrayList<Type>()) ;
+ binaryOpTypeBinding.get("<>").put(_datetime, new ArrayList<Type>()) ;
+ binaryOpTypeBinding.get("<>").get(_integer).add(_integer) ;
+ binaryOpTypeBinding.get("<>").get(_integer).add(_real) ;
+ binaryOpTypeBinding.get("<>").get(_real).add(_real) ;
+ binaryOpTypeBinding.get("<>").get(_real).add(_integer) ;
+ binaryOpTypeBinding.get("<>").get(_real).add(_nfp_duration) ;
+ binaryOpTypeBinding.get("<>").get(_datetime).add(_datetime) ;
+ binaryOpTypeBinding.get("<>").get(_boolean).add(_boolean) ;
+ binaryOpTypeBinding.get("<>").get(_string).add(_string) ;
+
+ //'<' | '>' | '<=' | '>='
+ opSignatures.put("<(" + _integer.getName() + ',' + _integer.getName() + ")", _boolean) ;// <(int, int) : boolean
+ opSignatures.put("<(" + _real.getName() + ',' + _real.getName() + ")", _boolean) ;// <(real, real) : boolean
+ opSignatures.put("<(" + _integer.getName() + ',' + _real.getName() + ")", _boolean) ;// <(int, real) : boolean
+ opSignatures.put("<(" + _real.getName() + ',' + _integer.getName() + ")", _boolean) ;// <(real, int) : boolean
+ opSignatures.put("<(" + _string.getName() + ',' + _string.getName() + ")", _boolean) ;// <(string, string) : boolean
+ opSignatures.put("<(" + _nfp_duration.getName() + ',' + _nfp_duration.getName() + ")", _boolean) ;// >(nfp_duration, nfp_duration) : boolean
+ opSignatures.put("<(" + _real.getName() + ',' + _nfp_duration.getName() + ")", _boolean) ;// <(nfp_duration, nfp_duration) : boolean
+ opSignatures.put("<(" + _datetime.getName() + ',' + _datetime.getName() + ")", _boolean) ;// <(date, date) : boolean
+ opSignatures.put(">(" + _integer.getName() + ',' + _integer.getName() + ")", _boolean) ;// >(int, int) : boolean
+ opSignatures.put(">(" + _real.getName() + ',' + _real.getName() + ")", _boolean) ;// >(real, real) : boolean
+ opSignatures.put(">(" + _integer.getName() + ',' + _real.getName() + ")", _boolean) ;// >(int, real) : boolean
+ opSignatures.put(">(" + _real.getName() + ',' + _integer.getName() + ")", _boolean) ;// >(real, int) : boolean
+ opSignatures.put(">(" + _nfp_duration.getName() + ',' + _nfp_duration.getName() + ")", _boolean) ;// >(nfp_duration, nfp_duration) : boolean
+ opSignatures.put(">(" + _real.getName() + ',' + _nfp_duration.getName() + ")", _boolean) ;// >(nfp_duration, nfp_duration) : boolean
+ opSignatures.put(">(" + _string.getName() + ',' + _string.getName() + ")", _boolean) ;// >(string, string) : boolean
+ opSignatures.put(">(" + _datetime.getName() + ',' + _datetime.getName() + ")", _boolean) ;// >(date, date) : boolean
+ opSignatures.put("<=(" + _integer.getName() + ',' + _integer.getName() + ")", _boolean) ;// <=(int, int) : boolean
+ opSignatures.put("<=(" + _real.getName() + ',' + _real.getName() + ")", _boolean) ;// <=(real, real) : boolean
+ opSignatures.put("<=(" + _integer.getName() + ',' + _real.getName() + ")", _boolean) ;// <=(int, real) : boolean
+ opSignatures.put("<=(" + _real.getName() + ',' + _integer.getName() + ")", _boolean) ;// <=(real, int) : boolean
+ opSignatures.put("<=(" + _string.getName() + ',' + _string.getName() + ")", _boolean) ;// <=(string, string) : boolean
+ opSignatures.put("<=(" + _nfp_duration.getName() + ',' + _nfp_duration.getName() + ")", _boolean) ;// >(nfp_duration, nfp_duration) : boolean
+ opSignatures.put("<=(" + _real.getName() + ',' + _nfp_duration.getName() + ")", _boolean) ;// <=(nfp_duration, nfp_duration) : boolean
+ opSignatures.put("<=(" + _datetime.getName() + ',' + _datetime.getName() + ")", _boolean) ;// <=(date, date) : boolean
+ opSignatures.put(">=(" + _integer.getName() + ',' + _integer.getName() + ")", _boolean) ;// >=(int, int) : boolean
+ opSignatures.put(">=(" + _real.getName() + ',' + _real.getName() + ")", _boolean) ;// >=(real, real) : boolean
+ opSignatures.put(">=(" + _integer.getName() + ',' + _real.getName() + ")", _boolean) ;// >=(int, real) : boolean
+ opSignatures.put(">=(" + _real.getName() + ',' + _integer.getName() + ")", _boolean) ;// >=(real, int) : boolean
+ opSignatures.put(">=(" + _string.getName() + ',' + _string.getName() + ")", _boolean) ;// >=(string, string) : boolean
+ opSignatures.put(">=(" + _nfp_duration.getName() + ',' + _nfp_duration.getName() + ")", _boolean) ;// >(nfp_duration, nfp_duration) : boolean
+ opSignatures.put(">=(" + _real.getName() + ',' + _nfp_duration.getName() + ")", _boolean) ;// >=(nfp_duration, nfp_duration) : boolean
+ opSignatures.put(">=(" + _datetime.getName() + ',' + _datetime.getName() + ")", _boolean) ;// >=(date, date) : boolean
+ binaryOpTypeBinding.get("<").put(_integer, new ArrayList<Type>()) ;
+ binaryOpTypeBinding.get("<").put(_real, new ArrayList<Type>()) ;
+ binaryOpTypeBinding.get("<").put(_string, new ArrayList<Type>()) ;
+ binaryOpTypeBinding.get("<").put(_nfp_duration, new ArrayList<Type>()) ;
+ binaryOpTypeBinding.get("<").put(_datetime, new ArrayList<Type>()) ;
+ binaryOpTypeBinding.get("<").get(_integer).add(_integer) ;
+ binaryOpTypeBinding.get("<").get(_integer).add(_real) ;
+ binaryOpTypeBinding.get("<").get(_real).add(_real) ;
+ binaryOpTypeBinding.get("<").get(_real).add(_integer) ;
+ binaryOpTypeBinding.get("<").get(_real).add(_nfp_duration) ;
+ binaryOpTypeBinding.get("<").get(_nfp_duration).add(_nfp_duration) ;
+ binaryOpTypeBinding.get("<").get(_string).add(_string) ;
+ binaryOpTypeBinding.get("<").get(_datetime).add(_datetime) ;
+ binaryOpTypeBinding.get(">").put(_integer, new ArrayList<Type>()) ;
+ binaryOpTypeBinding.get(">").put(_real, new ArrayList<Type>()) ;
+ binaryOpTypeBinding.get(">").put(_string, new ArrayList<Type>()) ;
+ binaryOpTypeBinding.get(">").put(_nfp_duration, new ArrayList<Type>()) ;
+ binaryOpTypeBinding.get(">").put(_datetime, new ArrayList<Type>()) ;
+ binaryOpTypeBinding.get(">").get(_integer).add(_integer) ;
+ binaryOpTypeBinding.get(">").get(_integer).add(_real) ;
+ binaryOpTypeBinding.get(">").get(_real).add(_real) ;
+ binaryOpTypeBinding.get(">").get(_real).add(_integer) ;
+ binaryOpTypeBinding.get(">").get(_real).add(_nfp_duration) ;
+ binaryOpTypeBinding.get(">").get(_nfp_duration).add(_nfp_duration) ;
+ binaryOpTypeBinding.get(">").get(_string).add(_string) ;
+ binaryOpTypeBinding.get(">").get(_datetime).add(_datetime) ;
+ binaryOpTypeBinding.get("<=").put(_integer, new ArrayList<Type>()) ;
+ binaryOpTypeBinding.get("<=").put(_real, new ArrayList<Type>()) ;
+ binaryOpTypeBinding.get("<=").put(_string, new ArrayList<Type>()) ;
+ binaryOpTypeBinding.get("<=").put(_nfp_duration, new ArrayList<Type>()) ;
+ binaryOpTypeBinding.get("<=").put(_datetime, new ArrayList<Type>()) ;
+ binaryOpTypeBinding.get("<=").get(_integer).add(_integer) ;
+ binaryOpTypeBinding.get("<=").get(_integer).add(_real) ;
+ binaryOpTypeBinding.get("<=").get(_real).add(_real) ;
+ binaryOpTypeBinding.get("<=").get(_real).add(_integer) ;
+ binaryOpTypeBinding.get("<=").get(_real).add(_nfp_duration) ;
+ binaryOpTypeBinding.get("<=").get(_nfp_duration).add(_nfp_duration) ;
+ binaryOpTypeBinding.get("<=").get(_string).add(_string) ;
+ binaryOpTypeBinding.get("<=").get(_datetime).add(_datetime) ;
+ binaryOpTypeBinding.get(">=").put(_integer, new ArrayList<Type>()) ;
+ binaryOpTypeBinding.get(">=").put(_real, new ArrayList<Type>()) ;
+ binaryOpTypeBinding.get(">=").put(_string, new ArrayList<Type>()) ;
+ binaryOpTypeBinding.get(">=").put(_nfp_duration, new ArrayList<Type>()) ;
+ binaryOpTypeBinding.get(">=").put(_datetime, new ArrayList<Type>()) ;
+ binaryOpTypeBinding.get(">=").get(_integer).add(_integer) ;
+ binaryOpTypeBinding.get(">=").get(_integer).add(_real) ;
+ binaryOpTypeBinding.get(">=").get(_real).add(_real) ;
+ binaryOpTypeBinding.get(">=").get(_real).add(_integer) ;
+ binaryOpTypeBinding.get(">=").get(_real).add(_nfp_duration) ;
+ binaryOpTypeBinding.get(">=").get(_nfp_duration).add(_nfp_duration) ;
+ binaryOpTypeBinding.get(">=").get(_string).add(_string) ;
+ binaryOpTypeBinding.get(">=").get(_datetime).add(_datetime) ;
+
+ //'*' | '/' | 'mod'
+ opSignatures.put("*(" + _integer.getName() + ',' + _integer.getName() + ")", _integer) ;// *(int, int) : int
+ opSignatures.put("*(" + _real.getName() + ',' + _real.getName() + ")", _real) ;// *(real, real) : real
+ opSignatures.put("*(" + _real.getName() + ',' + _integer.getName() + ")", _real) ;// *(real, int) : real
+ opSignatures.put("*(" + _integer.getName() + ',' + _real.getName() + ")", _real) ;// *(int, real) : real
+ opSignatures.put("/(" + _integer.getName() + ',' + _integer.getName() + ")", _integer) ;// /(int, int) : int
+ opSignatures.put("/(" + _real.getName() + ',' + _real.getName() + ")", _real) ;// /(real, real) : real
+ opSignatures.put("/(" + _real.getName() + ',' + _integer.getName() + ")", _real) ;// /(real, int) : real
+ opSignatures.put("/(" + _integer.getName() + ',' + _real.getName() + ")", _real) ;// /(int, real) : real// /(int, int) : int
+ opSignatures.put("mod(" + _integer.getName() + ',' + _integer.getName() + ")", _integer) ;// mod(int, int) : int
+ binaryOpTypeBinding.get("*").put(_integer, new ArrayList<Type>()) ;
+ binaryOpTypeBinding.get("*").put(_real, new ArrayList<Type>()) ;
+ binaryOpTypeBinding.get("*").get(_integer).add(_integer) ;
+ binaryOpTypeBinding.get("*").get(_integer).add(_real) ;
+ binaryOpTypeBinding.get("*").get(_real).add(_real) ;
+ binaryOpTypeBinding.get("*").get(_real).add(_integer) ;
+ binaryOpTypeBinding.get("/").put(_integer, new ArrayList<Type>()) ;
+ binaryOpTypeBinding.get("/").put(_real, new ArrayList<Type>()) ;
+ binaryOpTypeBinding.get("/").get(_integer).add(_integer) ;
+ binaryOpTypeBinding.get("/").get(_integer).add(_real) ;
+ binaryOpTypeBinding.get("/").get(_real).add(_real) ;
+ binaryOpTypeBinding.get("/").get(_real).add(_integer) ;
+ binaryOpTypeBinding.get("mod").put(_integer, new ArrayList<Type>()) ;
+ binaryOpTypeBinding.get("mod").get(_integer).add(_integer) ;
+
+ //'+' | '-'
+ opSignatures.put("+(" + _integer.getName() + ',' + _integer.getName() + ")", _integer) ;// +(int, int) : int
+ opSignatures.put("+(" + _real.getName() + ',' + _real.getName() + ")", _real) ;// +(real, real) : real
+ opSignatures.put("+(" + _real.getName() + ',' + _integer.getName() + ")", _real) ;// +(real, int) : real
+ opSignatures.put("+(" + _integer.getName() + ',' + _real.getName() + ")", _real) ;// +(int, real) : real
+ opSignatures.put("+(" + _datetime.getName() + ',' + _real.getName() + ")", _datetime) ;// +(date, real) : date
+ opSignatures.put("+(" + _datetime.getName() + ',' + _nfp_duration.getName() + ")", _datetime) ;// +(date, nfp_duration) : date
+ opSignatures.put("+(" + _nfp_duration.getName() + ',' + _nfp_duration.getName() + ")", _nfp_duration) ;// +(nfp_duration, nfp_duration) : nfp_duration
+ opSignatures.put("+(" + _real.getName() + ',' + _datetime.getName() + ")", _datetime) ;// +(real, date) : date
+ opSignatures.put("-(" + _integer.getName() + ',' + _integer.getName() + ")", _integer) ;// _(int, int) : int
+ opSignatures.put("-(" + _real.getName() + ',' + _real.getName() + ")", _real) ;// -(real, real) : real
+ opSignatures.put("-(" + _real.getName() + ',' + _integer.getName() + ")", _real) ;// -(real, int) : real
+ opSignatures.put("-(" + _integer.getName() + ',' + _real.getName() + ")", _real) ;// -(int, real) : real
+ opSignatures.put("-(" + _datetime.getName() + ',' + _datetime.getName() + ")", _real) ;// -(date, date) : real
+ opSignatures.put("-(" + _datetime.getName() + ',' + _nfp_duration.getName() + ")", _datetime) ;// -(date, nfp_duration) : date
+ opSignatures.put("-(" + _nfp_duration.getName() + ',' + _nfp_duration.getName() + ")", _nfp_duration) ;// -(nfp_duration, nfp_duration) : nfp_duration
+ binaryOpTypeBinding.get("+").put(_integer, new ArrayList<Type>()) ;
+ binaryOpTypeBinding.get("+").put(_real, new ArrayList<Type>()) ;
+ binaryOpTypeBinding.get("+").put(_datetime, new ArrayList<Type>()) ;
+ binaryOpTypeBinding.get("+").put(_nfp_duration, new ArrayList<Type>()) ;
+ binaryOpTypeBinding.get("+").get(_integer).add(_integer) ;
+ binaryOpTypeBinding.get("+").get(_integer).add(_real) ;
+ binaryOpTypeBinding.get("+").get(_real).add(_real) ;
+ binaryOpTypeBinding.get("+").get(_real).add(_integer) ;
+ binaryOpTypeBinding.get("+").get(_real).add(_datetime) ;
+ binaryOpTypeBinding.get("+").get(_datetime).add(_real) ;
+ binaryOpTypeBinding.get("+").get(_datetime).add(_nfp_duration) ;
+ binaryOpTypeBinding.get("+").get(_nfp_duration).add(_nfp_duration) ;
+ binaryOpTypeBinding.get("-").put(_integer, new ArrayList<Type>()) ;
+ binaryOpTypeBinding.get("-").put(_real, new ArrayList<Type>()) ;
+ binaryOpTypeBinding.get("-").put(_datetime, new ArrayList<Type>()) ;
+ binaryOpTypeBinding.get("-").put(_nfp_duration, new ArrayList<Type>()) ;
+ binaryOpTypeBinding.get("-").get(_integer).add(_integer) ;
+ binaryOpTypeBinding.get("-").get(_integer).add(_real) ;
+ binaryOpTypeBinding.get("-").get(_real).add(_real) ;
+ binaryOpTypeBinding.get("-").get(_real).add(_integer) ;
+ binaryOpTypeBinding.get("-").get(_datetime).add(_datetime) ;
+ binaryOpTypeBinding.get("-").get(_datetime).add(_nfp_duration) ;
+ binaryOpTypeBinding.get("-").get(_nfp_duration).add(_nfp_duration) ;
+ }
+
+ public static void setExpectedType(Type _expectedType) {
+ expectedType = _expectedType;
+ }
+
+ public static Type getExpectedType() {
+ return expectedType;
+ }
+
+ public static Namespace getModel() {
+ return model ;
+ }
+
+ public static Element getContextElement() {
+ return contextElement ;
+ }
+
+ public class VSLValidationResult {
+ private Type inferedType ;
+ private boolean errorFound ;
+ private EObject validatedRule ;
+ private EStructuralFeature validatedFeature ;
+ private String errorMessage = "" ;
+
+ public VSLValidationResult(EObject validatedRule,
+ EStructuralFeature validatedFeature,
+ Type inferedType,
+ boolean errorFound,
+ String errorMessage) {
+ this.validatedRule = validatedRule ;
+ this.validatedFeature = validatedFeature ;
+ this.inferedType = inferedType ;
+ this.errorFound = errorFound ;
+ this.errorMessage = this.errorMessage + errorMessage ;
+ }
+ public EObject validatedRule() {return this.validatedRule ;}
+ public EStructuralFeature validatedFeature() {return this.validatedFeature ;}
+ public boolean errorFound() {return this.errorFound ;}
+ public Type inferedType() {return this.inferedType ;}
+ public String errorMessage() {return this.errorMessage;}
+ }
+
+ public VSLValidationResult checkBinaryExpression(VSLValidationResult[] validationResults, EList<String> operators) {
+
+ String operator = operators.get(0) ;
+ EStructuralFeature potentialErrorFeature = null ;
+ EObject potentialErrorSource = validationResults[1].validatedRule() ;
+
+ if (operator.equals("+") || operator.equals("-")) { // Additive op
+ potentialErrorFeature = VSLPackage.eINSTANCE.getAdditiveExpression_Op() ;
+ while (potentialErrorSource != null && ! (potentialErrorSource instanceof AdditiveExpression))
+ potentialErrorSource = potentialErrorSource.eContainer() ;
+ }
+ else if (operator.equals("*") || operator.equals("/") || operator.equals("mod")) { // Multiplicative op
+ potentialErrorFeature = VSLPackage.eINSTANCE.getMultiplicativeExpression_Op() ;
+ while (potentialErrorSource != null && ! (potentialErrorSource instanceof MultiplicativeExpression))
+ potentialErrorSource = potentialErrorSource.eContainer() ;
+ }
+ else if (operator.equals("==") || operator.equals("<>") ) { // Equality op
+ potentialErrorFeature = VSLPackage.eINSTANCE.getEqualityExpression_Op() ;
+ while (potentialErrorSource != null && ! (potentialErrorSource instanceof EqualityExpression))
+ potentialErrorSource = potentialErrorSource.eContainer() ;
+ }
+ else if (operator.equals("and") || operator.equals("or") || operator.equals("xor")) { // AndOrXor op
+ potentialErrorFeature = VSLPackage.eINSTANCE.getAndOrXorExpression_Op() ;
+ while (potentialErrorSource != null && ! (potentialErrorSource instanceof AndOrXorExpression))
+ potentialErrorSource = potentialErrorSource.eContainer() ;
+ }
+ else { // Relational op
+ potentialErrorFeature = VSLPackage.eINSTANCE.getRelationalExpression_Op() ;
+ while (potentialErrorSource != null && ! (potentialErrorSource instanceof RelationalExpression))
+ potentialErrorSource = potentialErrorSource.eContainer() ;
+ }
+
+ //EClass contextRuleMetaclass = potentialErrorSource.eClass() ;
+
+ VSLValidationResult validationResult = new VSLValidationResult(potentialErrorSource, potentialErrorFeature, validationResults[0].inferedType(), false, "") ;
+
+ for (int i = 1 ; i < validationResults.length ; i ++) {
+ Type inferedType = findReturnTypeOfBinaryOperator(operators.get(i-1),
+ validationResult.inferedType(),
+ validationResults[i].inferedType()) ;
+ if (inferedType == null) {
+ String errorMessage = "" + VSLErrorMessage.getUndefinedBinaryOperatorSignatureMessage(
+ operators.get(i-1),
+ validationResult.inferedType().getName(),
+ validationResults[i].inferedType().getName()) ;
+ return new VSLValidationResult(potentialErrorSource, potentialErrorFeature, null, true, errorMessage) ;
+ }
+ validationResult = new VSLValidationResult(potentialErrorSource, potentialErrorFeature, inferedType, false, "") ;
+ }
+
+ return validationResult ;
+ }
+
+ private Type findReturnTypeOfBinaryOperator(String operator, Type firstOperandType, Type secondOperandType) {
+ String signature = "" + operator + "(" + firstOperandType.getName() + ',' + secondOperandType.getName() + ")" ;
+ return opSignatures.get(signature) ;
+ }
+
+ private Type findReturnTypeOfUnaryOperator(String operator, Type operandType) {
+ String signature = "" + operator + "(" + operandType.getName() + ")" ;
+ return opSignatures.get(signature) ;
+ }
+
+ public static VSLJavaValidator eInstance = new VSLJavaValidator() ;
+
+ public VSLValidationResult checkExpressionRule (Expression exp) {
+ return checkAndOrXorExpression(exp.getExp()) ;
+ }
+
+ public VSLValidationResult checkAndOrXorExpression(AndOrXorExpression exp) {
+ if (exp.getExp().size()==1) {
+ return eInstance.checkEqualityExpression(exp.getExp().get(0)) ;
+ }
+ else {
+ boolean errorFound = false ;
+ int errorIndex = 0 ;
+ VSLValidationResult[] validationResults = new VSLValidationResult[exp.getExp().size()] ;
+ for (int i = 0 ; i < exp.getExp().size() && !errorFound ; i ++) {
+ validationResults[i] = eInstance.checkEqualityExpression(exp.getExp().get(i)) ;
+ errorFound = validationResults[i].errorFound() ;
+ errorIndex = i ;
+ }
+ if (errorFound) return validationResults[errorIndex];
+
+ return eInstance.checkBinaryExpression(validationResults, exp.getOp()) ;
+ }
+ }
+
+ public VSLValidationResult checkEqualityExpression(EqualityExpression exp) {
+ if (exp.getExp().size()==1) {
+ return eInstance.checkRelationalExpression(exp.getExp().get(0)) ;
+ }
+ else {
+ boolean errorFound = false ;
+ int errorIndex = 0 ;
+ VSLValidationResult[] validationResults = new VSLValidationResult[exp.getExp().size()] ;
+ for (int i = 0 ; i < exp.getExp().size() && !errorFound ; i ++) {
+ validationResults[i] = eInstance.checkRelationalExpression(exp.getExp().get(i)) ;
+ errorFound = validationResults[i].errorFound() ;
+ errorIndex = i ;
+ }
+ if (errorFound) return validationResults[errorIndex];
+
+ return eInstance.checkBinaryExpression(validationResults, exp.getOp()) ;
+ }
+ }
+
+ public VSLValidationResult checkRelationalExpression(RelationalExpression exp) {
+ if (exp.getExp().size()==1) {
+ return eInstance.checkConditionalExpression(exp.getExp().get(0)) ;
+ }
+ else {
+ boolean errorFound = false ;
+ int errorIndex = 0 ;
+ VSLValidationResult[] validationResults = new VSLValidationResult[exp.getExp().size()] ;
+ for (int i = 0 ; i < exp.getExp().size() && !errorFound ; i ++) {
+ validationResults[i] = eInstance.checkConditionalExpression(exp.getExp().get(i)) ;
+ errorFound = validationResults[i].errorFound() ;
+ errorIndex = i ;
+ }
+ if (errorFound) return validationResults[errorIndex];
+
+ return eInstance.checkBinaryExpression(validationResults, exp.getOp()) ;
+ }
+ }
+
+ public VSLValidationResult checkConditionalExpression(ConditionalExpression exp) {
+ if (exp.getExp().size()==1) {
+ return eInstance.checkAdditiveExpression(exp.getExp().get(0)) ;
+ }
+ else if (exp.getExp().size()!=3) {
+ String errorMessage = VSLErrorMessage.getInvalidNumberOfExpressionsInConditionalExpression() ;
+ return new VSLValidationResult(exp, VSLPackage.eINSTANCE.getConditionalExpression_Exp(), null, true, errorMessage) ;
+ }
+ else {
+ // first check the condition
+ VSLValidationResult conditionValiditionResult = checkAdditiveExpression(exp.getExp().get(0)) ;
+ if (conditionValiditionResult.errorFound())
+ return conditionValiditionResult ;
+ else if (conditionValiditionResult.inferedType() != null
+ && !conditionValiditionResult.inferedType().conformsTo(_boolean)) {
+ String errorMessage = VSLErrorMessage.getInvalidExpressionType("Boolean", conditionValiditionResult.inferedType().getName()) ;
+ conditionValiditionResult.errorFound = true ;
+ conditionValiditionResult.errorMessage = errorMessage ;
+ return conditionValiditionResult ;
+ }
+ // then check the THEN and ELSE expression
+ VSLValidationResult thenValidationResult = checkAdditiveExpression(exp.getExp().get(1)) ;
+ VSLValidationResult elseValidationResult = checkAdditiveExpression(exp.getExp().get(2)) ;
+ if (thenValidationResult.errorFound())
+ return thenValidationResult ;
+ if (elseValidationResult.errorFound())
+ return elseValidationResult ;
+ Type thenType = thenValidationResult.inferedType() ;
+ Type elseType = elseValidationResult.inferedType() ;
+ if (thenType == elseType)
+ return new VSLValidationResult(exp, VSLPackage.eINSTANCE.getConditionalExpression_Exp(), thenType, false, "") ;
+ else if (thenType.conformsTo(elseType))
+ return new VSLValidationResult(exp, VSLPackage.eINSTANCE.getConditionalExpression_Exp(), elseType, false, "") ;
+ else if (elseType.conformsTo(thenType))
+ return new VSLValidationResult(exp, VSLPackage.eINSTANCE.getConditionalExpression_Exp(), thenType, false, "") ;
+ else {
+ String errorMessage = VSLErrorMessage.getInvalidExpressionType(thenType.getName(), elseType.getName()) ;
+ return new VSLValidationResult(exp.getExp().get(2), VSLPackage.eINSTANCE.getAdditiveExpression_Exp(), elseType, true, errorMessage) ;
+ }
+ }
+ }
+
+ public VSLValidationResult checkAdditiveExpression(AdditiveExpression exp) {
+ if (exp.getExp().size()==1) {
+ return eInstance.checkMultiplicativeExpression(exp.getExp().get(0)) ;
+ }
+ else {
+ boolean errorFound = false ;
+ int errorIndex = 0 ;
+ VSLValidationResult[] validationResults = new VSLValidationResult[exp.getExp().size()] ;
+ for (int i = 0 ; i < exp.getExp().size() && !errorFound ; i ++) {
+ validationResults[i] = eInstance.checkMultiplicativeExpression(exp.getExp().get(i)) ;
+ errorFound = validationResults[i].errorFound() ;
+ errorIndex = i ;
+ }
+ if (errorFound) return validationResults[errorIndex];
+
+ return eInstance.checkBinaryExpression(validationResults, exp.getOp()) ;
+ }
+ }
+
+ public VSLValidationResult checkMultiplicativeExpression(MultiplicativeExpression exp) {
+ if (exp.getExp().size()==0) {
+ return new VSLValidationResult(exp, VSLPackage.eINSTANCE.getMultiplicativeExpression_Exp(), null, false, "") ;
+ }
+ if (exp.getExp().size()==1) {
+ return eInstance.checkUnaryExpression(exp.getExp().get(0)) ;
+ }
+ else {
+ boolean errorFound = false ;
+ int errorIndex = 0 ;
+ VSLValidationResult[] validationResults = new VSLValidationResult[exp.getExp().size()] ;
+ for (int i = 0 ; i < exp.getExp().size() && !errorFound ; i ++) {
+ validationResults[i] = eInstance.checkUnaryExpression(exp.getExp().get(i)) ;
+ errorFound = validationResults[i].errorFound() ;
+ errorIndex = i ;
+ }
+ if (errorFound) return validationResults[errorIndex];
+
+ return eInstance.checkBinaryExpression(validationResults, exp.getOp()) ;
+ }
+ }
+
+ public VSLValidationResult checkUnaryExpression (UnaryExpression exp) {
+ Type inferedType = null ;
+ if (exp.getUnary() != null) {
+ VSLValidationResult nestedUnaryValidationResult = eInstance.checkUnaryExpression(exp.getUnary()) ;
+ if (nestedUnaryValidationResult.errorFound())
+ return nestedUnaryValidationResult ;
+ inferedType = this.findReturnTypeOfUnaryOperator(exp.getOp(), nestedUnaryValidationResult.inferedType()) ;
+ if (inferedType == null) {
+ String errorMessage = "" + VSLErrorMessage.getUndefinedUnaryOperatorSignatureMessage(exp.getOp(), nestedUnaryValidationResult.inferedType.getName()) ;
+ return new VSLValidationResult(exp, VSLPackage.eINSTANCE.getUnaryExpression_Op(), null, true, errorMessage) ;
+ }
+ }
+ else if (exp.getExp() != null) {
+ VSLValidationResult nestedPrimaryValidationResult = eInstance.checkPrimaryExpression(exp.getExp()) ;
+ if (nestedPrimaryValidationResult.errorFound())
+ return nestedPrimaryValidationResult ;
+ else
+ inferedType = nestedPrimaryValidationResult.inferedType() ;
+ }
+ return new VSLValidationResult(exp, VSLPackage.eINSTANCE.getUnaryExpression_Exp(), inferedType, false, "") ;
+ }
+
+ public VSLValidationResult checkPrimaryExpression (PrimaryExpression exp) {
+ Type inferedType = null ;
+ VSLValidationResult prefixValidationResult = eInstance.checkValueSpecification(exp.getPrefix()) ;
+ if (prefixValidationResult.errorFound())
+ return prefixValidationResult ;
+ inferedType = prefixValidationResult.inferedType() ;
+
+ if (exp.getSuffix() != null) {
+ VSLValidationResult suffixValidationResult = eInstance.checkSuffixExpression(exp.getSuffix()) ;
+ if (suffixValidationResult.errorFound())
+ return suffixValidationResult ;
+ inferedType = suffixValidationResult.inferedType() ;
+ }
+
+ return new VSLValidationResult(exp, VSLPackage.eINSTANCE.getPrimaryExpression_Prefix(), inferedType, false, "") ;
+ }
+
+ public VSLValidationResult checkValueSpecification(ValueSpecification valueSpec) {
+ Type inferedType = null ;
+ EStructuralFeature feature = null ;
+ if (valueSpec instanceof IntegerLiteralRule) {
+ inferedType = _integer ;
+ feature = VSLPackage.eINSTANCE.getLiteral_Value() ;
+ }
+ else if (valueSpec instanceof UnlimitedLiteralRule) {
+ inferedType = _unlimitedNatural ;
+ feature = VSLPackage.eINSTANCE.getLiteral_Value() ;
+ }
+ else if (valueSpec instanceof RealLiteralRule) {
+ inferedType = _real ;
+ feature = VSLPackage.eINSTANCE.getLiteral_Value() ;
+ }
+ else if (valueSpec instanceof DateTimeLiteralRule) {
+ inferedType = _datetime ;
+ feature = VSLPackage.eINSTANCE.getLiteral_Value() ;
+ }
+ else if (valueSpec instanceof BooleanLiteralRule) {
+ inferedType = _boolean ;
+ feature = VSLPackage.eINSTANCE.getLiteral_Value() ;
+ }
+ else if (valueSpec instanceof StringLiteralRule) {
+ inferedType = _string ;
+ feature = VSLPackage.eINSTANCE.getLiteral_Value() ;
+ }
+ else if (valueSpec instanceof NullLiteralRule) {
+ ScopingHelper scopingHelper = VSLScopeProvider.eInstance.new ScopingHelper(valueSpec) ;
+ inferedType = scopingHelper.getClassifierForScoping() ;
+ feature = VSLPackage.eINSTANCE.getLiteral_Value() ;
+ }
+ else if (valueSpec instanceof DefaultLiteralRule) {
+ ScopingHelper scopingHelper = VSLScopeProvider.eInstance.new ScopingHelper(valueSpec) ;
+ inferedType = scopingHelper.getClassifierForScoping() ;
+ feature = VSLPackage.eINSTANCE.getLiteral_Value() ;
+ }
+ else if (valueSpec instanceof NameOrChoiceOrBehaviorCall) {
+ return checkNameOrChoiceOrBehaviorCall((NameOrChoiceOrBehaviorCall)valueSpec) ;
+ }
+ else if (valueSpec instanceof Interval) {
+ return checkInterval((Interval)valueSpec) ;
+ }
+ else if (valueSpec instanceof CollectionOrTuple) {
+ return checkCollectionOrTuple((CollectionOrTuple)valueSpec) ;
+ }
+ else if (valueSpec instanceof Tuple) {
+ return checkTuple((Tuple)valueSpec) ;
+ }
+ else if (valueSpec instanceof TimeExpression) {
+ return checkTimeExpression((TimeExpression)valueSpec) ;
+ }
+ else if (valueSpec instanceof VariableDeclaration) {
+ return checkVariableDeclarion((VariableDeclaration)valueSpec) ;
+ }
+ else if (valueSpec instanceof Expression) {
+ return checkExpressionRule((Expression)valueSpec) ;
+ }
+ return new VSLValidationResult(valueSpec, feature, inferedType, false, "") ;
+ }
+
+
+ public VSLValidationResult checkVariableDeclarion(VariableDeclaration valueSpec) {
+ Classifier inferedType = valueSpec.getType() != null ? (Classifier)valueSpec.getType().getType() : VSLScopeProvider.eInstance.new ScopingHelper(valueSpec).getClassifierForScoping() ;
+ VSLValidationResult initValidationResult = null ;
+ if (valueSpec.getInitValue() != null)
+ initValidationResult = checkExpressionRule(valueSpec.getInitValue()) ;
+ if (initValidationResult != null && initValidationResult.errorFound())
+ return initValidationResult ;
+ if (initValidationResult != null && initValidationResult.inferedType() != inferedType && !((Classifier)initValidationResult.inferedType()).getGenerals().contains(inferedType)) {
+ String errorMessage = VSLErrorMessage.getInvalidExpressionType(inferedType.getName(), initValidationResult.inferedType.getName()) ;
+ return new VSLValidationResult(valueSpec, VSLPackage.eINSTANCE.getVariableDeclaration_InitValue(), initValidationResult.inferedType(), true, errorMessage) ;
+ }
+
+ return new VSLValidationResult(valueSpec, VSLPackage.eINSTANCE.getVariableDeclaration_Name(), inferedType, false, "");
+ }
+
+ public VSLValidationResult checkTimeExpression(TimeExpression valueSpec) {
+ Expression index = null ;
+ Expression condition = null ;
+ Type inferedType = _real ;
+ EStructuralFeature mainFeature = null ;
+ EStructuralFeature indexFeature = null ;
+ EStructuralFeature conditionFeature = null ;
+ if (valueSpec instanceof InstantObsExpression) {
+ mainFeature = VSLPackage.eINSTANCE.getInstantObsExpression_Id() ;
+ inferedType = _datetime ;
+ InstantObsExpression instantObs = (InstantObsExpression)valueSpec ;
+ index = instantObs.getIndex() ;
+ indexFeature = VSLPackage.eINSTANCE.getInstantObsExpression_Index() ;
+ condition = instantObs.getCondition() ;
+ conditionFeature = VSLPackage.eINSTANCE.getInstantObsExpression_Condition() ;
+ }
+ else if (valueSpec instanceof DurationObsExpression) {
+ mainFeature = VSLPackage.eINSTANCE.getDurationObsExpression_Id() ;
+ inferedType = _real ;
+ DurationObsExpression durationObs = (DurationObsExpression)valueSpec ;
+ index = durationObs.getIndex() ;
+ indexFeature = VSLPackage.eINSTANCE.getDurationObsExpression_Index() ;
+ condition = durationObs.getCondition() ;
+ conditionFeature = VSLPackage.eINSTANCE.getDurationObsExpression_Condition() ;
+ }
+ if (index != null) {
+ VSLValidationResult checkIndex = checkExpressionRule(index) ;
+ if (checkIndex.errorFound())
+ return checkIndex ;
+ Classifier locallyInferedType = (Classifier)checkIndex.inferedType() ;
+ if (locallyInferedType != _integer && !locallyInferedType.getGenerals().contains(_integer) && !locallyInferedType.getName().equals(_integer.getName())) {
+ String errorMessage = VSLErrorMessage.getInvalidExpressionType(_integer.getName(), locallyInferedType.getName()) ;
+ return new VSLValidationResult(valueSpec, indexFeature, locallyInferedType, true, errorMessage) ;
+ }
+ }
+ if (condition != null) {
+ VSLValidationResult checkCondition = checkExpressionRule(condition) ;
+ if (checkCondition.errorFound())
+ return checkCondition ;
+ Classifier locallyInferedType = (Classifier) checkCondition.inferedType() ;
+ if (locallyInferedType != _boolean && !locallyInferedType.getGenerals().contains(_boolean) && !locallyInferedType.getName().equals(_boolean.getName())) {
+ String errorMessage = VSLErrorMessage.getInvalidExpressionType(_boolean.getName(), locallyInferedType.getName()) ;
+ return new VSLValidationResult(valueSpec, conditionFeature, locallyInferedType, true, errorMessage) ;
+ }
+ }
+
+ return new VSLValidationResult(valueSpec, mainFeature, inferedType, false, "") ;
+ }
+
+ public VSLValidationResult checkCollectionOrTuple(CollectionOrTuple valueSpec) {
+ List<VSLValidationResult> listOfValidationResults = new ArrayList<VSLJavaValidator.VSLValidationResult>() ;
+ if (valueSpec.getListOfValues() != null) {
+ for (Expression exp : valueSpec.getListOfValues().getValues()) {
+ VSLValidationResult expValidationResult = checkExpressionRule(exp) ;
+ listOfValidationResults.add(expValidationResult) ;
+ if (expValidationResult.errorFound())
+ return expValidationResult ;
+ }
+ }
+ ScopingHelper scopingHelper = VSLScopeProvider.eInstance.new ScopingHelper(valueSpec) ;
+ Type expectedType = scopingHelper.getClassifierForScoping() ;
+ MultiplicityElement expectedMultiplicity = scopingHelper.getExpectedMultiplicity() ;
+ if (VSLContextUtil.isATupleType((Classifier)expectedType)) {
+ if (expectedMultiplicity.getUpper() == 1) {
+ List<NamedElement> tupleAttribs = VSLContextUtil.getTupleAttribs((Classifier)expectedType) ;
+ for (int i = 0 ; i<tupleAttribs.size() && i<listOfValidationResults.size() ; i++) {
+ Type inferedType = listOfValidationResults.get(i).inferedType() ;
+ Type locallyExpectedType = ((Property)tupleAttribs.get(i)).getType() ;
+ if (inferedType != locallyExpectedType && !((Classifier)inferedType).getGenerals().contains(locallyExpectedType)) {
+ String errorMessage = "" + VSLErrorMessage.getInvalidExpressionType(locallyExpectedType.getName(), inferedType.getName()) ;
+ return new VSLValidationResult(listOfValidationResults.get(i).validatedRule(), listOfValidationResults.get(i).validatedFeature(), inferedType, true, errorMessage) ;
+ }
+ }
+ }
+ else {
+ for (VSLValidationResult validationResult : listOfValidationResults) {
+ Type inferedType = validationResult.inferedType() ;
+ if (inferedType != expectedType && ! ((Classifier)expectedType).getGenerals().contains(expectedType)) {
+ String errorMessage = "" + VSLErrorMessage.getInvalidExpressionType(expectedType.getName(), inferedType.getName()) ;
+ return new VSLValidationResult(validationResult.validatedRule(), validationResult.validatedFeature(), inferedType, true, errorMessage) ;
+ }
+ }
+ }
+ }
+ else if (VSLContextUtil.isACollectionType((Classifier)expectedType)) {
+ Property collectionAttib = (Property)VSLContextUtil.getCollectionAttrib((Classifier)expectedType) ;
+ Type locallyExpectedType = collectionAttib.getType() ;
+ for (VSLValidationResult validationResult : listOfValidationResults) {
+ Type inferedType = validationResult.inferedType() ;
+ if (inferedType != locallyExpectedType && ! ((Classifier)locallyExpectedType).getGenerals().contains(locallyExpectedType)) {
+ String errorMessage = "" + VSLErrorMessage.getInvalidExpressionType(expectedType.getName(), inferedType.getName()) ;
+ return new VSLValidationResult(validationResult.validatedRule(), validationResult.validatedFeature(), inferedType, true, errorMessage) ;
+ }
+
+ }
+ }
+ return new VSLValidationResult(valueSpec, VSLPackage.eINSTANCE.getCollectionOrTuple_ListOfValues(), expectedType, false, "") ;
+ }
+
+
+ public VSLValidationResult checkSuffixExpression (SuffixExpression exp) {
+ if (exp instanceof PropertyCallExpression) {
+ return checkPropertyCallExpression((PropertyCallExpression)exp) ;
+ }
+ else { // instance of OperationCallExpression
+ return checkOperationCallExpression((OperationCallExpression)exp) ;
+ }
+ }
+
+ public VSLValidationResult checkPropertyCallExpression (PropertyCallExpression exp) {
+ Property p = exp.getProperty() ;
+ Type inferedType = null ;
+ if (p.getType() == null) {
+ String errorMessage = VSLErrorMessage.getUntypedPropertyMessage(p.getName()) ;
+ return new VSLValidationResult(exp, VSLPackage.eINSTANCE.getPropertyCallExpression_Property(), null, true, errorMessage) ;
+ }
+ else
+ inferedType = p.getType() ;
+ if (exp.getSuffix() != null) {
+ VSLValidationResult suffixValidationResult = eInstance.checkSuffixExpression(exp.getSuffix()) ;
+ if (suffixValidationResult.errorFound())
+ return suffixValidationResult ;
+ inferedType = suffixValidationResult.inferedType() ;
+ }
+
+ return new VSLValidationResult(exp, VSLPackage.eINSTANCE.getPropertyCallExpression_Property(), inferedType, false, "") ;
+ }
+
+ public VSLValidationResult checkOperationCallExpression (OperationCallExpression exp) {
+ Operation b = exp.getOperation() ;
+ Type inferedType = null ;
+ Type returnType = null ;
+ List<String> expectedTypeNames = new ArrayList<String>() ;
+ for (int i = 0 ; i < b.getOwnedParameters().size(); i++) {
+ Parameter p = b.getOwnedParameters().get(i) ;
+ if (p.getDirection() == ParameterDirectionKind.RETURN_LITERAL)
+ returnType = p.getType() ;
+ else
+ expectedTypeNames.add(p.getType().getName()) ;
+ }
+ if (returnType == null) {
+ String errorMessage = VSLErrorMessage.getOperationWithoutReturnParameterMessage(b.getName()) ;
+ return new VSLValidationResult(exp, VSLPackage.eINSTANCE.getOperationCallExpression_Operation(), null, true, errorMessage) ;
+ }
+ else {
+ inferedType = returnType ;
+ if (exp.getArguments() == null && (b.getOwnedParameters().size()-1)>0) { // -1 => retrieves the return parameter
+ String errorMessage = VSLErrorMessage.getInvalidNumberOfArgumentsForOperationCall(b.getName(), expectedTypeNames) ;
+ return new VSLValidationResult(exp, VSLPackage.eINSTANCE.getOperationCallExpression_Arguments(), inferedType, true, errorMessage) ;
+ }
+ else {
+ if (exp.getArguments()!=null ) { // -1 => retrieves the return parameter
+ if ((exp.getArguments().getValues().size() != b.getOwnedParameters().size()-1)) {
+ String errorMessage = VSLErrorMessage.getInvalidNumberOfArgumentsForOperationCall(b.getName(), expectedTypeNames) ;
+ return new VSLValidationResult(exp, VSLPackage.eINSTANCE.getOperationCallExpression_Arguments(), inferedType, true, errorMessage) ;
+ }
+ List<Parameter> inOutParameters = new ArrayList<Parameter>() ;
+ for (Parameter p : b.getOwnedParameters())
+ if (p.getDirection() != ParameterDirectionKind.RETURN_LITERAL)
+ inOutParameters.add(p) ;
+ List<VSLValidationResult> argumentValidationResults = new ArrayList<VSLJavaValidator.VSLValidationResult>() ;
+ for (Expression e : exp.getArguments().getValues()) {
+ VSLValidationResult argumentValidationResult = checkExpressionRule(e) ;
+ argumentValidationResults.add(argumentValidationResult) ;
+ if (argumentValidationResult.errorFound())
+ return argumentValidationResult ;
+ }
+
+ List<String> foundTypeNames = new ArrayList<String>() ;
+ boolean errorFound = false ;
+ for (int i = 0 ; i<argumentValidationResults.size() ; i++) {
+ Type expectedType = inOutParameters.get(i).getType() ;
+ Type foundType = argumentValidationResults.get(i).inferedType() ;
+ foundTypeNames.add(foundType.getName()) ;
+ if (VSLContextUtil.isAChoiceType((Classifier)expectedType)) {
+ boolean choiceAttribFound = false ;
+ List<NamedElement> allChoiceAttribs = VSLContextUtil.getChoiceAttribs((Classifier)expectedType) ;
+ for (NamedElement choiceAttrib : allChoiceAttribs) {
+ Property p = (Property)choiceAttrib ;
+ if (foundType.conformsTo(p.getType()))
+ choiceAttribFound = true ;
+ }
+ if (! choiceAttribFound) {
+ if (! foundType.conformsTo(expectedType))
+ errorFound = true ;
+ }
+ }
+ else
+ if (! foundType.conformsTo(expectedType)) errorFound = true ;
+ }
+ if (errorFound) {
+ String errorMessage = VSLErrorMessage.getInvalidArgumentsForOperationCall(b.getName(), expectedTypeNames, foundTypeNames) ;
+ return new VSLValidationResult(exp, VSLPackage.eINSTANCE.getOperationCallExpression_Arguments(), inferedType, errorFound, errorMessage) ;
+ }
+ }
+ }
+ }
+ if (exp.getSuffix() != null) {
+ VSLValidationResult suffixValidationResult = eInstance.checkSuffixExpression(exp.getSuffix()) ;
+ if (suffixValidationResult.errorFound())
+ return suffixValidationResult ;
+ inferedType = suffixValidationResult.inferedType() ;
+ }
+ return new VSLValidationResult(exp, VSLPackage.eINSTANCE.getOperationCallExpression_Operation(), inferedType, false, "") ;
+ }
+
+ public VSLValidationResult checkInterval(Interval interval) {
+
+
+ if (interval.getLower() == null) {
+ return new VSLValidationResult(interval, VSLPackage.eINSTANCE.getInterval_Lower(), null, true, "") ;
+ }
+ else if (interval.getUpper() == null) {
+ return new VSLValidationResult(interval, VSLPackage.eINSTANCE.getInterval_Upper(), null, true, "") ;
+ }
+ VSLValidationResult lowerValidationResult = checkExpressionRule(interval.getLower()) ;
+ if (lowerValidationResult.errorFound())
+ return lowerValidationResult ;
+ VSLValidationResult upperValidationResult = checkExpressionRule(interval.getUpper()) ;
+ if (upperValidationResult.errorFound())
+ return upperValidationResult ;
+
+ ScopingHelper scopingHelper = VSLScopeProvider.eInstance.new ScopingHelper(interval) ;
+ Type expectedType = scopingHelper.getClassifierForScoping() ;
+ if (VSLContextUtil.isAnIntervalType((Classifier)expectedType)) {
+ Property intervalAttrib = (Property)VSLContextUtil.getIntervalAttrib((Classifier)expectedType) ;
+ expectedType = intervalAttrib.getType() ;
+ }
+
+ Type lowerType = lowerValidationResult.inferedType() ;
+ if (lowerType == null || (lowerType != expectedType && !((Classifier)lowerType).getGenerals().contains(expectedType))) {
+ String errorMessage = VSLErrorMessage.getInvalidExpressionType(expectedType.getName(), lowerType != null ? lowerType.getName() : "NULL") ;
+ return new VSLValidationResult(interval, VSLPackage.eINSTANCE.getInterval_Lower(), lowerType, true, errorMessage) ;
+ }
+ Type upperType = upperValidationResult.inferedType() ;
+ if (upperType == null || (upperType != expectedType && !((Classifier)upperType).getGenerals().contains(expectedType))) {
+ String errorMessage = VSLErrorMessage.getInvalidExpressionType(expectedType.getName(), upperType != null ? upperType.getName() : "NULL") ;
+ return new VSLValidationResult(interval, VSLPackage.eINSTANCE.getInterval_Upper(), upperType, true, errorMessage) ;
+ }
+
+ return new VSLValidationResult(interval, VSLPackage.eINSTANCE.getInterval_Lower(), expectedType, false, "") ;
+ }
+
+
+ public VSLValidationResult checkNameOrChoiceOrBehaviorCall(NameOrChoiceOrBehaviorCall exp) {
+ Type inferedType = null ;
+ if (exp.getId() != null) {
+ // First handle the case where if a stereotype or metaclass instance is expected
+ // This is normally out of the scope of VSL, but has been added for convenience
+ ScopingHelper helper = VSLScopeProvider.eInstance.new ScopingHelper(exp.eContainer()) ;
+ if (helper.isExpectedTypeAStereotype()) {
+ // errors are automatically handled by scoping
+ Stereotype expectedStereotype = (Stereotype) helper.getClassifierForScoping() ;
+ return new VSLValidationResult(exp, VSLPackage.eINSTANCE.getNameOrChoiceOrBehaviorCall_Id(), expectedStereotype, false, "") ;
+ }
+ else if (helper.isExpectedTypeAUMLMetaclass()) {
+ // errors are automatically handled by scoping
+ org.eclipse.uml2.uml.Class expectedMetaclass = (org.eclipse.uml2.uml.Class) helper.getClassifierForScoping() ;
+ return new VSLValidationResult(exp, VSLPackage.eINSTANCE.getNameOrChoiceOrBehaviorCall_Id(), expectedMetaclass, false, "") ;
+ }
+ // default cases
+ else if (exp.getId() instanceof Property) {
+ Property p = (Property)exp.getId() ;
+ if (p.getType() == null) {
+ String errorMessage = VSLErrorMessage.getUntypedPropertyMessage(p.getName()) ;
+ return new VSLValidationResult(exp, VSLPackage.eINSTANCE.getNameOrChoiceOrBehaviorCall_Id(), inferedType, true, errorMessage) ;
+ }
+ else {
+ inferedType = p.getType() ;
+ if (VSLContextUtil.isAChoiceType((Classifier)p.getOwner())) {
+ if (exp.getArguments() == null || exp.getArguments().getValues().isEmpty()) {
+ String errorMessage = VSLErrorMessage.getMissingArgumentForChosenAlternativeMessage(p.getName(), p.getType().getName()) ;
+ return new VSLValidationResult(exp, VSLPackage.eINSTANCE.getNameOrChoiceOrBehaviorCall_Arguments(), null, true, errorMessage) ;
+ }
+ else if (exp.getArguments().getValues().size() > 1) {
+ String errorMessage = VSLErrorMessage.getTooManyArgumentsForChosenAlternativeMessage(p.getName(), p.getType().getName()) ;
+ return new VSLValidationResult(exp, VSLPackage.eINSTANCE.getNameOrChoiceOrBehaviorCall_Arguments(), null, true, errorMessage) ;
+ }
+ else { // number of arguments == 1
+ VSLValidationResult nestedArgumentValidationResult = checkExpressionRule(exp.getArguments().getValues().get(0)) ;
+ if (nestedArgumentValidationResult.errorFound())
+ return nestedArgumentValidationResult ;
+ ScopingHelper scopingHelper = VSLScopeProvider.eInstance.new ScopingHelper(exp.getArguments().getValues().get(0)) ;
+ if (! nestedArgumentValidationResult.inferedType().conformsTo(scopingHelper.getClassifierForScoping())) {
+ String errorMessage = VSLErrorMessage.getInvalidArgumentForChosenAlternativeMessage(p.getName(),
+ scopingHelper.getClassifierForScoping().getName(),
+ nestedArgumentValidationResult.inferedType().getName()) ;
+ return new VSLValidationResult(exp.getArguments().getValues().get(0), nestedArgumentValidationResult.validatedFeature(), inferedType, true, errorMessage) ;
+ }
+ }
+ }
+ }
+ }
+ else if (exp.getId() instanceof EnumerationLiteral) {
+ EnumerationLiteral literal = (EnumerationLiteral)exp.getId() ;
+ return new VSLValidationResult(exp, VSLPackage.eINSTANCE.getNameOrChoiceOrBehaviorCall_Id(), literal.getEnumeration(), false, "") ;
+ }
+ else if (exp.getId() instanceof Behavior) {
+ Behavior b = (Behavior)exp.getId() ;
+ Type returnType = null ;
+ List<String> expectedTypeNames = new ArrayList<String>() ;
+ for (int i = 0 ; i < b.getOwnedParameters().size(); i++) {
+ Parameter p = b.getOwnedParameters().get(i) ;
+ if (p.getDirection() == ParameterDirectionKind.RETURN_LITERAL)
+ returnType = p.getType() ;
+ else
+ expectedTypeNames.add(p.getType().getName()) ;
+ }
+ if (returnType == null) {
+ String errorMessage = VSLErrorMessage.getBehaviorWithoutReturnParameterMessage(b.getName()) ;
+ return new VSLValidationResult(exp, VSLPackage.eINSTANCE.getNameOrChoiceOrBehaviorCall_Id(), inferedType, true, errorMessage) ;
+ }
+ else {
+ inferedType = returnType ;
+ if (exp.getArguments() == null && expectedTypeNames.size()>0) {
+ String errorMessage = VSLErrorMessage.getMissingArgumentsForBehaviorCall(b.getName(), expectedTypeNames) ;
+ return new VSLValidationResult(exp, VSLPackage.eINSTANCE.getNameOrChoiceOrBehaviorCall_Arguments(), inferedType, true, errorMessage) ;
+ }
+ else if (exp.getArguments() != null && exp.getArguments().getValues().size() != b.getOwnedParameters().size()-1) { // -1 => retrieves the return parameter
+ String errorMessage = VSLErrorMessage.getInvalidNumberOfArgumentsForBehaviorCall(b.getName(), expectedTypeNames) ;
+ return new VSLValidationResult(exp, VSLPackage.eINSTANCE.getNameOrChoiceOrBehaviorCall_Arguments(), inferedType, true, errorMessage) ;
+ }
+ else {
+ List<Parameter> inOutParameters = new ArrayList<Parameter>() ;
+ for (Parameter p : b.getOwnedParameters())
+ if (p.getDirection() != ParameterDirectionKind.RETURN_LITERAL)
+ inOutParameters.add(p) ;
+ List<VSLValidationResult> argumentValidationResults = new ArrayList<VSLJavaValidator.VSLValidationResult>() ;
+ if (exp.getArguments() != null)
+ for (Expression e : exp.getArguments().getValues()) {
+ VSLValidationResult argumentValidationResult = checkExpressionRule(e) ;
+ argumentValidationResults.add(argumentValidationResult) ;
+ if (argumentValidationResult.errorFound())
+ return argumentValidationResult ;
+ }
+
+ List<String> foundTypeNames = new ArrayList<String>() ;
+ boolean errorFound = false ;
+ for (int i = 0 ; i<argumentValidationResults.size() ; i++) {
+ Type expectedType = inOutParameters.get(i).getType() ;
+ Type foundType = argumentValidationResults.get(i).inferedType() ;
+ if (foundType == null) {
+ errorFound = true ;
+ }
+ else {
+ foundTypeNames.add(foundType.getName()) ;
+ if (! foundType.conformsTo(expectedType)) errorFound = true ;
+ }
+ }
+ if (errorFound) {
+ String errorMessage = VSLErrorMessage.getInvalidArgumentsForBehaviorCall(b.getName(), expectedTypeNames, foundTypeNames) ;
+ return new VSLValidationResult(exp, VSLPackage.eINSTANCE.getNameOrChoiceOrBehaviorCall_Arguments(), inferedType, errorFound, errorMessage) ;
+ }
+ }
+ }
+ }
+ }
+ return new VSLValidationResult(exp, VSLPackage.eINSTANCE.getNameOrChoiceOrBehaviorCall_Id(), inferedType, false, "") ;
+ }
+
+ public VSLValidationResult checkTuple(Tuple exp) {
+ ScopingHelper scopingHelper = VSLScopeProvider.eInstance.new ScopingHelper(exp) ;
+ for (ValueNamePair vnp : exp.getListOfValueNamePairs().getValueNamePairs()) {
+ VSLValidationResult valueNamePairValidationResult = checkValueNamePair(vnp) ;
+ if (valueNamePairValidationResult.errorFound())
+ return valueNamePairValidationResult ;
+ }
+ Classifier classifierForScoping = scopingHelper.getClassifierForScoping() ;
+ if (VSLContextUtil.isATupleType(classifierForScoping))
+ return new VSLValidationResult(exp, VSLPackage.eINSTANCE.getTuple_ListOfValueNamePairs(), classifierForScoping, false, "") ;
+ else
+ // Temporary solution: We have a tuple expression, and the expected type is not a tuple. The following implementation forces
+ // the type of the expression to be an nfp_duration (which is inline with the temporary implementation of scoping)
+ // TODO : Make it generic, and rely on the stereotype <<Operator>> to infer the type of a tuple expression,
+ // when it is used as an argument for a binary operator
+ return new VSLValidationResult(exp, VSLPackage.eINSTANCE.getTuple_ListOfValueNamePairs(), _nfp_duration, false, "") ;
+ }
+
+ public VSLValidationResult checkValueNamePair(ValueNamePair exp) {
+ if (exp.getProperty() == null) {
+ return new VSLValidationResult(exp, VSLPackage.eINSTANCE.getValueNamePair_Property(), null, true, "") ;
+ }
+ else if (exp.getProperty().getType() == null) {
+ String errorMessage = VSLErrorMessage.getUntypedPropertyMessage(exp.getProperty().getName()) ;
+ return new VSLValidationResult(exp, VSLPackage.eINSTANCE.getValueNamePair_Property(), null, true, errorMessage) ;
+ }
+ VSLValidationResult valueValidationResult = checkExpressionRule(exp.getValue()) ;
+ if (valueValidationResult.errorFound())
+ return valueValidationResult ;
+ Type inferedType = valueValidationResult.inferedType() ;
+ if (inferedType.getName().equals(exp.getProperty().getType().getName()))
+ return new VSLValidationResult(exp, VSLPackage.eINSTANCE.getValueNamePair_Property(), inferedType, false, "") ;
+ else if (!inferedType.conformsTo(exp.getProperty().getType())) {
+ String errorMessage = VSLErrorMessage.getInvalidExpressionType(exp.getProperty().getType().getName(), inferedType.getName()) ;
+ return new VSLValidationResult(exp, VSLPackage.eINSTANCE.getValueNamePair_Value(), inferedType, true, errorMessage) ;
+ }
+ return new VSLValidationResult(exp, VSLPackage.eINSTANCE.getValueNamePair_Property(), inferedType, false, "") ;
+ }
+
+ public static CollectionOrTuple isACollection(Expression exp) {
+ return isACollection(exp.getExp()) ;
+ }
+
+ private static CollectionOrTuple isACollection(AndOrXorExpression exp) {
+ return isACollection(exp.getExp().get(0)) ;
+ }
+
+ private static CollectionOrTuple isACollection(EqualityExpression exp) {
+ return isACollection(exp.getExp().get(0)) ;
+ }
+
+ private static CollectionOrTuple isACollection(RelationalExpression exp) {
+ return isACollection(exp.getExp().get(0)) ;
+ }
+
+ private static CollectionOrTuple isACollection(ConditionalExpression exp) {
+ if (exp.getExp().size() == 1)
+ return isACollection(exp.getExp().get(0)) ;
+ if (exp.getExp().size() == 3) {
+ CollectionOrTuple coll = isACollection(exp.getExp().get(1)) ;
+ return coll != null ? isACollection(exp.getExp().get(2)) : null ;
+ }
+ return null ;
+ }
+
+ private static CollectionOrTuple isACollection(AdditiveExpression exp) {
+ return isACollection(exp.getExp().get(0)) ;
+ }
+
+ private static CollectionOrTuple isACollection(MultiplicativeExpression exp) {
+ return exp.getExp().isEmpty() ? null : isACollection(exp.getExp().get(0)) ;
+ }
+
+ private static CollectionOrTuple isACollection(UnaryExpression exp) {
+ return isACollection(exp.getExp()) ;
+ }
+
+ private static CollectionOrTuple isACollection(PrimaryExpression exp) {
+ return exp.getSuffix() == null ? isACollection(exp.getPrefix()) : null ;
+ }
+
+ private static CollectionOrTuple isACollection(ValueSpecification exp) {
+ return exp instanceof CollectionOrTuple ? (CollectionOrTuple) exp : null ;
+ }
+}
+

Back to the top